[ TOP ]
2004/11/21

SSL

SSL

上へ
  SSL

SSLは簡単に言うと、webサーバーとクライアント間のデータを暗号化し、安全な通信を行うためのモジュールです。
WEB Mailerなどの個人情報が流れる可能性のあるようなツールなどを使う場合は、入れておいた方が良いです。

とりあえず、必要なドメインごとにSSLを設定します。

  1.   一応、確認

    # rpm -qa | grep mod_ssl
    mod_ssl-2.0.40-21.16.legacy

    入っているようなのでこのまま設定に進みます。

  2.   サーバー用秘密鍵を作成

    まずは鍵を作成
    # cd /etc/httpd/conf/
    # make server.key

    パスワードを2回入力します
    Enter pass phrase: <Password>
    Verifying - Enter pass phrase:<Password>

    サーバー用秘密鍵からパスワードを削除します
    # openssl rsa -in server.key -out server.key
    Enter pass phrase for server.key:<Password>
    writing RSA key


  3.   公開鍵を作成

    # make server.csr
    umask 77 ; \
    /usr/bin/openssl req -new -key server.key -out server.csr
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [GB]:JP
    State or Province Name (full name) [Berkshire]:Dokkanoken
    Locality Name (eg, city) [Newbury]:Anomachi
    Organization Name (eg, company) [My Company Ltd]:umekawa.info
    Organizational Unit Name (eg, section) []:
    Common Name (eg, your name or your server's hostname) []:umekawa.info
    Email Address []:hoge@umekawa.info

    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:


  4.   証明書を作成

    # openssl x509 -in server.csr -out server.pem -req -signkey server.key -days 365
    Signature ok
    subject=/C=JP/ST=Aichi/L=Toukai/O=umekawa.info/CN=umekawa.info/emailAddress=hoge@umekawa.info
    Getting Private key


  5.   作成した鍵と証明書を別に保存

    とりあえず、ドメインごとにそのまんまの名前のディレクトリに保存します。

    # chmod 600 server.*
    # mkdir umekawa.info
    # mv server.* umekawa.info/


    鍵と証明書を発行したいドメインごとに2番からここまでを繰り返します。

  6.   ssl.confの編集

    SSLの設定ファイルを編集し、バーチャルドメインに対応させるようにします。
    # vi /etc/httpd/conf.d/ssl.conf
    ユーザーディレクトリの追加(バーチャルホスト設定の直前あたりに追加)
    UserDir /home/*/public_shtml
    <Directory /home/*/public_shtml>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews SymLinksIfOwnerMatch ExecCGI IncludesNoExec
    <Limit GET POST OPTIONS PROPFIND>
    Order allow,deny
    Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS PROPFIND>
    Order deny,allow
    Deny from all
    </LimitExcept>
    </Directory>

    バーチャルホストの追加
    NameVirtualHost 192.168.0.250:443

    あとは、バーチャルドメインごとに下記を追加
    <VirtualHost 192.168.0.250:443>
    DocumentRoot "/home/hoge/public_shtml"
    ServerName umekawa.info
    ServerAdmin hoge@umekawa.info
    SuexecUserGroup hoge user_group
    ErrorLog logs/ssl_umekawa.info_error_log
    TransferLog logs/ssl_umekawa.info_access_log

    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile /etc/httpd/conf/umekawa.info/server.pem
    SSLCertificateKeyFile /etc/httpd/conf/umekawa.info/server.key
    <Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
    </Files>
    SetEnvIf User-Agent ".*MSIE.*" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
    CustomLog logs/ssl_umekawa.info_request_log \
    "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    </VirtualHost>


  7.   ホームページ公開用ディレクトリを準備

    (例)hogeというユーザーを作成します
    # su - hoge
    $ mkdir public_shtml



    あとは、適当なindex.htmlを作成したディレクトリに置き、https://umekawa.info/にアクセスしてみます。
    セキュリティの警告画面が出てくればOKです。

    証明書の中身も確認してみましょう。


    こんなのが出ます。
    信頼されていません。云々と書いてありますが、気にしなくてOKです。
    気にする方は、ルート証明書を発行してくれる機関がありますので、そこで購入してください。
    結構な値段するし、自宅サーバーでそこまで必要はないと思いますが。(^^;;


以上で、mod_sslの設定は終わりです。