- 追加された行はこの色です。
- 削除された行はこの色です。
#contents
----
pianoでapachectl restart したら、
[Sat Aug 21 03:58:54 2010] [warn] RSA server certificate CommonName (CN) `piano.smb.net' does NOT match server name!?
[Sat Aug 21 03:58:54 2010] [error] Unable to configure RSA server private key
[Sat Aug 21 03:58:54 2010] [error] SSL Library Error: 185073780 error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
と言われ、Apacheが起動できなくなった。ググると「鍵と証明書のmodulusが不一致」なのだそうだ。modulusを見るには
181 5:24 openssl rsa -noout -text -in server.key -modulus
182 5:24 openssl x509 -noout -text -in server.crt -modulus
で、久々にキーを生成
----
*SSL を設置するメモ [#cdeccb71]
**秘密鍵生成[/usr/local/etc/apache22/ssl.key/www.smb.net.key] [#ua4fb3d0]
# cd /usr/local/etc/apache22
# cd /usr/local/etc/apache22/ssl.key/
# /usr/bin/openssl genrsa -rand /var/log/messages -des3 \
-out /usr/local/etc/apache22/server.key 1024 54002 \
-out /usr/local/etc/apache22/ssl.key/server.key 1024 54002 \
semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
....++++++
.............++++++
e is 65537 (0x10001)
Enter pass phrase for
/usr/local/etc/apache22/ssl.key/www.smb.net.key:*********
Verifying - Enter pass phrase for
/usr/local/etc/apache22/ssl.key/www.smb.net.key:*********
# chmod 600 server.*
**CSR(証明書申請データ)生成[/usr/local/etc/apache22/server.csr] [#a84ed725]
**CSR(証明書申請データ)生成[/usr/local/etc/apache22/ssl.key/server.csr] [#a84ed725]
# /usr/bin/openssl req -new -key \
/usr/local/etc/apache22/server.key \
-out /usr/local/etc/apache22/server.csr
-out /usr/local/etc/apache22/ssl.key/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]:CAcert Inc.
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:ここは、ドメインやマシン名がわかる名前の方がよい
Common Name (eg, YOUR name) []:ここは、ドメインやマシン名がわかる名前の方がよい piano.smb.net
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
CSRは、認証局(CA)に渡す
ものなので、これを cat で表示させて、その内容を範囲コピーしておきます。
**CAcert.orgのサーバー証明書に登録 [#i7d6218f]
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/apache2/にserver.crt
/usr/local/etc/apache2/ssl.key/にserver.crt
として、保存します。
(eeでもviでもいいので、これを新規で作成します)
それが完了したら、同ディレクトリにあるものを
# chmod 600 server.*
してキーの生成は完了です。
これだけですと、Apacheの開始時に毎回パスフレーズを求められるようになってしまいますので、これをあらかじめ解消して使うことにしています。
# cd /usr/local/etc/apache22/
# cd /usr/local/etc/apache22/ssl.key/
# 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の設定 ] [#v2cbf05c]
設定ファイルの待避
# 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>
のように指定します。
/etc/rc.confには
apache22_enable="YES"
apache22ssl_enable="YES"
を入れておきましょう。
ページを参照して、確認すると128bitのSSLで接続されていることが確認できたと思います。
**Tips [#vd104a6e]
***CSRのCNとアクセス先のFQDNを合わせ [#v6bd5f18]
ておかないと、「証明書のエラー アドレスが一致しません」と言われます
ちなみに証明書と鍵の確認方法、証明書の内容を見る方法は
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;