debian apache + ssl

・インストール

# apt-get install apache2
# apt-get install openssl

たぶんsslモジュールも一緒にはいる。

sslモジュールの有効化

# a2enmod ssl

秘密鍵の作成

# openssl genrsa -aes128 1024 > server.key

・公開鍵の作成

# openssl req -new -key server.key > server.csr

・証明書の作成

# openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt

・鍵、証明書の設置
httpから参照されない場所ならどこでもいいが、適当に /etc/apache2/ssl/ 配下に設置することにする。

・VirtualHost の設定
apache2 の site-availables に default-ssl が入っているので、それを参考に編集する。
無い場合は下記みたいな感じにする

# vi default-ssl
LoadModule ssl_module modules/mod_ssl.so
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache         shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout  300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin

<VirtualHost _default_:443>
	ErrorLog logs/ssl_error_log
	TransferLog logs/ssl_access_log
	LogLevel warn
	SSLEngine on
	SSLProtocol all -SSLv2
	SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

	<span class="deco" style="color:#FF0000;">SSLCertificateFile /etc/apache2/ssl/server.crt</span>
	<span class="deco" style="color:#FF0000;">SSLCertificateKeyFile /etc/apache2/ssl/server.key</span>

	<Files ~ "\.(cgi|shtml|phtml|php3?)$">
		SSLOptions +StdEnvVars
	</Files>
	<Directory "/var/www/cgi-bin">
		SSLOptions +StdEnvVars
	</Directory>
	SetEnvIf User-Agent ".*MSIE.*" \
		 nokeepalive ssl-unclean-shutdown \
		 downgrade-1.0 force-response-1.0
	CustomLog logs/ssl_request_log \
		  "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

apache のリスタート
パスフレーズを聞かれる。

・接続テスト

apache 起動時のパスフレーズ入力を省略
起動時にいちいち聞かれるのがめんどうなので、パスフレーズを解除する。

# openssl rsa -in server.key > server.key_nopass