ご注意下さい
この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。
Apache + mod_sslによるSSL通信の手順をメモ。
流れ
① サーバキーの作成
② 認証局(CA)への申請書作成(CSR)
③ CAによるサーバ証明書の作成(CRT)
④ ssl.confの修正
⑤ apache再起動
まず公開鍵・秘密鍵のペアを作り、作成した公開鍵を認証局へ認証してもらい、サーバ証明書をもらう。という流れになる。
ここではcannon-ball.netという大学のサークルのHPをSSL化する手順を例に説明する。
公開鍵・秘密鍵のペアを作成。
[root /]# cd /etc/httpd/conf/ssl.key
[root ssl.key]# openssl genrsa -out cannon.key 2048
Generating RSA private key, 2048 bit long modulus
............................................+++
..............................................................................................+++
e is 65537 (0x10001)
[root ssl.key]#
② 認証局(CA)への申請書作成(CSR)
次にCAへ提出する申請書(Certificate Signing Request : CSR)を作成。
[root ssl.key]# cd ../ssl.csr/
[root ssl.csr]# openssl req -new -key ../ssl.key/cannon.key -out ./cannon.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]:Tokyo
Locality Name (eg, city) [Newbury]:Kamata
Organization Name (eg, company) [My Company Ltd]:Cannon-Ball.NET
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:www.cannon-ball.net
Email Address []:webmaster@cannon-ball.net
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root ssl.csr]#
③ CAによるサーバ証明書の作成(CRT)
提出されたCSRについてサーバ証明書を発行する。また有効期限は365日とする。
[root ssl.csr]# cd ../ssl.crt
[root ssl.crt]# openssl x509 -req -days 365 -in ../ssl.csr/cannon.csr
-signkey ../ssl.key/cannon.key -out cannon.crt
Signature ok
subject=/C=JP/ST=Tokyo/L=Kamata/O=Cannon-Ball.NET/CN=www.cannon-ball.net/emailAd
dress=webmaster@cannon-ball.net
Getting Private key
[root ssl.crt]#
できた証明書の内容を確認する。
[root ssl.crt]# openssl x509 -in cannon.crt -noout -text
Certificate:
Data:
Version: 1 (0x0)
Serial Number: 0 (0x0)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=JP, ST=Tokyo, L=Kamata, O=Cannon-Ball.NET, CN=www.cannon-ball.
net/emailAddress=webmaster@cannon-ball.net
Validity
Not Before: Sep 23 07:40:51 2004 GMT
Not After : Sep 23 07:40:51 2005 GMT
Subject: C=JP, ST=Tokyo, L=Kamata, O=Cannon-Ball.NET, CN=www.cannon-ball
.net/emailAddress=webmaster@cannon-ball.net
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
a1:ac:c2:4d:6d:6f:54:ac:42:c3:68:30:a5:5d:37:
7c:e3:e3:fc:b5:1c:09:9b:a7:9d:08:c7:b9:79:bd:
81:73
Exponent: 65537 (0x10001)
Signature Algorithm: md5WithRSAEncryption
3f:12:f0:5e:c9:b7:9f:ee:56:23:4d:65:76:08:67:9f:5e:9f:
8c:55:9c:8f
[root ssl.crt]#
④ ssl.confの修正
httpd.conf及び、ssl.confを修正する。ただし、IPアドレスが1つの場合にはサーバ証明書は1つしか有効にならないので注意が必要。
httpd.confを修正
NameVirtualHost *:80
NameVirtualHost *:443
とし443ポートもListenするようにする。
そして、サーバの秘密鍵と証明書を指定する。
ssl.conf
# General setup for the virtual host
DocumentRoot "$cannon.home"
ServerName www.cannon-ball.net:443
ServerAdmin webmaster@cannon-ball.net
ErrorLog logs/cannon-ssl_error_log
TransferLog logs/cannon-ssl_access_log
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/httpd/conf/ssl.crt/cannon.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/cannon.key
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
SetEnvIf User-Agent ".*MSIE.*"
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0
CustomLog logs/cannon-ssl_request_log
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
としてapacheの再起動をする。
そして、https://www.cannon-ball.net/へアクセス。
OK.