#contents

*SSL をvirtualhostに適用するメモ [#zcb1d6b8]
http://www.linux.ph/apache/apacheSSL.html

IPベースのバーチャルホストは設定済みのホスト上でSSLを適用する
**秘密鍵生成[/usr/local/etc/apache22/ssl.key/www.smb.net.key] [#rae80d11]
 # mkdir /usr/local/etc/apache22/thouand-winds_server_keys
 # cd /usr/local/etc/apache22/thouand-winds_server_keys

 openssl genrsa -des3 -out server.key 1024
 openssl req -new -key server.key -out server.csr
 #openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
 chmod 0400 server.key server.crt


**CSR(証明書申請データ)生成[/usr/local/etc/apache22/server.csr] [#v6550e42]
 # /usr/bin/openssl req -new -key \
 /usr/local/etc/apache22/server.key \
 -out /usr/local/etc/apache22/server.csr
 
 Enter pass phrase for \
 /usr/local/etc/apache22/ssl.key/www.smb.net.key:*********
 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) [AU]:JP
 State or Province Name (full name) [Some-State]:Ehime
 Locality Name (eg, city) []:Matsuyama
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:
 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:www.thousand-winds.net
 Email Address []:webmaster@thousand-winds.net
 
 Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:
 An optional company name []:
 
 k222# chmod 0400 server.key server.crt

CSRは、認証局(CA)に渡す
ものなので、これを cat で表示させて、その内容を範囲コピーしておきます。
**CAcert.orgのサーバー証明書に登録 [#f2b8538d]

http://www.cacert.org/index.php?id=0&lang=ja_JP

まずはhttp://www.cacert.org/へアクセス。右のメニューのTransrations で日本語を :)

ドメインの指定は、上記のCSRを作成する時に指定した
 Common Name (eg, YOUR name)
の部分に相当しますので、自動で登録されることになります。

サーバ証明書の新規作成をクリックします。

下にCSRをペーストしてください。

と書かれている部分に、CSRの内容をそのままコピーします。

私は、CAcertの保証制度には協力していないので、詳細な情報は出ませんが、そもそもそんな情報を欲するようなユーザが利用する用途では用いていないので無視して大丈夫。

送信を選択すると、SSLにするFQDNが表示され、その先に進めると、キーができあがってきました

左のような部分をコピーし、
/usr/local/etc/apache22/thouand-winds_server_keys/にserver.crt
として、保存します。
(eeでもviでもいいので、これを新規で作成します)

それが完了したら、同ディレクトリにあるものを 
 # chmod 600 server.*
してキーの生成は完了です。


これだけですと、Apacheの開始時に毎回パスフレーズを求められるようになってしまいますので、これをあらかじめ解消して使うことにしています。 
 # cd /usr/local/etc/apache22/thouand-winds_server_keys
 # mv  server.key server.key.orig
 # openssl rsa -in server.key.orig -out server.key
 Enter pass phrase for www.smb.net.key.orig:*********
 writing RSA key
 # chmod 600 server.*
これで必要な鍵はそろいました。


**[ ssl.confの設定 ] [#u185d012]
設定ファイルの待避
 # cd /usr/local/etc/apache22/extra
 # cp httpd-ssl.conf httpd-ssl.conf-dist
/usr/local/etc/apache22/extra/httpd-ssl.conf の最低限?の設定 
 Listen 443
 AddType application/x-x509-ca-cert .crt
 AddType application/x-pkcs7-crl    .crl
 SSLPassPhraseDialog  builtin
 SSLSessionCache        "shmcb:/var/run/ssl_scache(512000)"
 SSLSessionCacheTimeout  300
 SSLMutex  "file:/var/run/ssl_mutex"
 
 ## SSL Virtual Host Context
 <VirtualHost _default_:443>
 #   General setup for the virtual host
 DocumentRoot "/usr/local/www/apache22/data"
 ServerName www.smb.net:443
 ServerAdmin webmaster@smb.net
 ErrorLog "/var/log/httpd-error.log"
 TransferLog "/var/log/httpd-access.log" 
 
 SSLEngine on
 SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
 SSLCertificateFile /usr/local/etc/apache22/ssl.crt/www.smb.net.server.crt
 SSLCertificateKeyFile /usr/local/etc/apache22/ssl.key/www.smb.net.key
 
 SSLCertificateKeyFile "/usr/local/etc/apache22/ssl.key/www.smb.net.key"
 
 <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
 </FilesMatch>
 <Directory "/usr/local/www/apache22/cgi-bin">
    SSLOptions +StdEnvVars
 </Directory>
 BrowserMatch ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
 CustomLog "/var/log/httpd-ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
 
 </VirtualHost>                                  
のように指定します。
**/usr/local/etc/apache22/Includes/www.thousand-winds.jp.conf [#ob40f62c]
と言う設定ファイルを以下のように記述
 <VirtualHost  219.117.246.222:443>
 DocumentRoot "/usr/home/tfc/public_html"
 ServerName www.thousand-winds.net:443
 ServerAdmin webmaster@thousand-winds.net
 ErrorLog /var/log/httpsd-error_thousand-winds.log
 TransferLog /var/log/httpsd-access_thousand-winds.log
 
 /etc/rc.confには 
 apache22_enable="YES"
 apache22ssl_enable="YES"
を入れておきましょう。
 SSLEngine on
 SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
 SSLCertificateFile /usr/local/etc/apache22/thouand-winds_server_keys/server.crt
 SSLCertificateKeyFile /usr/local/etc/apache22/thouand-winds_server_keys/server.key
 
 <Directory "/usr/home/tfc/public_html">
   SSLRequireSSL
  
       Options FollowSymLinks
       Options +ExecCGI
       AllowOverride None
       Order deny,allow
       Allow from all   
  
  
  
 </Directory>
 <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
 </FilesMatch>
 <Directory "/usr/local/www/apache22/cgi-bin">
    SSLOptions +StdEnvVars
 </Directory>
 BrowserMatch ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
 
 CustomLog /var/log/httpd-ssl_request.log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
 
 </VirtualHost>                                  

ページを参照して、確認すると128bitのSSLで接続されていることが確認できたと思います。



**Tips [#b642081b]
***CSRのCNとアクセス先のFQDNを合わせ [#da2e5b3d]
ておかないと、「証明書のエラー アドレスが一致しません」と言われます

ちなみに証明書と鍵の確認方法、証明書の内容を見る方法は

 openssl x509 -noout -text -in filename.crt

秘密鍵の内容を見る方法は

 openssl rsa -noout -text -in filename.key



----
http://freebsd.fkimura.com/cacert-a0.html
----
#counter([total|today|yesterday]);
&lastmod;

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS