ubuntu8.04のApache2にSSLを入れる

やりたいこと

取り合えず証明書の信用がどうのこうのはどうでもいいので、
ttps://localhost/
ttp://localhost/
の両方でローカルサーバーにアクセスしたい。

方針

証明書と鍵ファイルを生成
Apacheの設定ファイルを書き換える

まず証明書と鍵ファイルを作成

# ルートになっておく
sudo -s
cd /etc/apache2/
mkdir ssl
cd ssl

# サーバー用秘密鍵(server.key)の作成
openssl genrsa -des3 -out server.key -rand rand.dat 1024

#### =>server.keyができる


# サーバー用公開鍵(server.csr)の作成
openssl req -new -key server.key -out server.csr
# いろいろ聞かれる
Enter pass phrase for server.key: -> hoge (※1)
Country Name (2 letter code) [AU]: -> JP
State or Province Name (full name) [Some-State]: -> Tokyo
Locality Name (eg, city) []: -> Tosimaku
Organization Name (eg, company) [Internet Widgits Pty Ltd]: -> golgokoji
Organizational Unit Name (eg, section) []: -> section
Common Name (eg, YOUR name) []: -> localhost (※2)
Email Address []: -> golgokoji@localhost.localhost
A challenge password []: -> [Enter]
An optional company name []: -> [Enter]

#### =>server.csrができる


# 起動時パスワード入力の要求を削除
openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: -> hoge (※1のパスワード)

# サーバー用証明書(server.crt)の作成
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365

#### =>server.crtができる

(※2)動作させたいドメインを正確に記述

色々できたけど、多分使うのはserver.crtとserver.keyだけ
次にApacheの設定をする
参考
http://www.rinzo2.jp/~rinzo/apache_ssl/apache_and_ssl_00.htm


apacheの設定

sslのモジュールを有効にする

sudo a2enmod ssl

ssl設定ファイル記述
viかなにかで/etc/apache2/sites-available/httpd-ssl.confを新規作成し、以下を記述

Listen 443

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl

SSLPassPhraseDialog  builtin

SSLSessionCache         "dbm:/var/run/apache2/ssl_scache"
SSLSessionCacheTimeout  300


<VirtualHost localhost:443>
	DocumentRoot "/home/golgokoji/public_html/"
	SSLEngine on
	SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
	# when adding another domain .Create another crt file(and csr file)
	SSLCertificateFile "/etc/apache2/ssl/server.crt"

	SSLCertificateKeyFile "/etc/apache2/ssl/server.key"


	<FilesMatch "\.(cgi|shtml|phtml|php)$">
		SSLOptions +StdEnvVars
	</FilesMatch>

	BrowserMatch ".*MSIE.*" \
		     nokeepalive ssl-unclean-shutdown \
		     downgrade-1.0 force-response-1.0
	CustomLog "/var/log/apache2/ssl_request_log" \
		     "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>        

作成したファイルを読み込ませてApache再起動

a2ensite httpd-ssl.conf
apache2ctl restart

これでおちまい。
sub.localhost等で複数のドメインssl対応させたい場合は、同一の手順で
subserver.key
subserver.crt
subserver.csr
を作成し、httpd-ssl.confの中にVirtualHostを追加すればいいと思う。