前回のエントリで既に SSL 前提の投稿にしてしまいましたが、それ以前に SSL を有効にしないといけないですね。
以前は金を払って証明書を発行してもらうのが普通でしたが、最近では無料で証明書を発行してくれる StartSSL というサービスもあるようです。いずれ試してみたいと思いますが、今回は個人で使うだけですし、経路を暗号化するだけが目的なので自己署名証明書(オレオレ証明書)を作成します。
ServersMan@VPS 上で作業しました。 OS は CentOS 6.5 32bit です。
秘密鍵の作成
まず秘密鍵を作ります。
# cd /etc/pki/tls/certs/ # make localhost.key
ここでパスワードを聞かれるので入力します。
続いてパスワード無しの秘密鍵を作ります。
# openssl rsa -in localhost.key -out localhost.key
上で入力したパスワードを入力します。 生成される localhost.key が秘密鍵です。
証明書署名要求の作成
次に証明書署名要求 (CSR) を作成します。
# make localhost.csr umask 77 ; \ /usr/bin/openssl req -utf8 -new -key localhost.key -out localhost.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) [XX]:JP State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:domain.com Email Address []:
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
証明書の項目を聞かれます。オレオレ証明書なので Country Name と Common Name だけ入力し、それ以外はデフォルト値(Enterのみ)で問題ありません。
証明書の作成
CSR を元に証明書を作成します。
# openssl x509 -in localhost.csr -out localhost.pem -req -signkey localhost.key -days 365
days に有効日数を入れます。上記例では 1 年間有効になります。
作成された localhost.pem が証明書になります。
ここまでで秘密鍵 (.key) と証明書 (.pem) の作成が完了です。
apache に秘密鍵と証明書を登録する
/etc/httpd/conf.d/ssl.conf の以下の設定をコメントアウトし、作成した秘密鍵と証明書を指定します。
SSLCertificateFile /etc/pki/tls/certs/localhost.pem SSLCertificateKeyFile /etc/pki/tls/certs/localhost.key
apache を再起動します。
# service httpd restart
https://ホスト名/ でアクセスできれば OK です。
オレオレ証明書なのでブラウザにセキュリティの警告が表示されますが、経路は暗号化されており使用に問題はありません。