SSL のインストールは初めてなので、いろいろ調べながらインストールしてみる。
サーバーはさくらのVPS、 OS は CentOS 5.5。
どこの SSL を利用するか
SSL 証明書は個人的に RapidSSL 一択でした。
SSL 証明書が2000円台って安過ぎ。
以下、参考に他社の値段。
ベリサイン : 85,050円(1年)
セキュア・サーバID|製品について|日本ベリサイン
ジオトラスト : 36,540円(1年)
SSL電子証明書 ジオトラスト(GeoTrust) – ジオトラスト クイックSSL プレミアム
RapidSSL は、
僕が調べた限りでは評判もそこそこ良いし、
日本の携帯電話への対応も良いらしい。
安くて評判も良ければ、
使わない手はないよね。
SSL 証明書の購入
国内外にいろいろ代理店があるっぽくて、
日本の会社で、日本語で、そこそこのデザイン(ここ大事)で、
画面の遷移が重くない Rapid-SSL.jp で購入することにしました。
SSL証明書 RapidSSL 2600円 ワイルドカード 18000円 (RapidSSL Strategic Partner)
2015年5月2日 追記
改めて Rapid-SSL.jp のサイトを見てみたら「年間4,300円(税抜き)」になっていて、記事公開時と比べてちょっと高くなっていました…。(記事公開時は「年間2,600円(税抜き)」でした。)
少し調べてみたら サイフにやさしいSSL証明書 の RapidSSL は「年間3,000円(税抜き)」で今の Rapid-SSL.jp より安くて、確かにサイフにやさしいです!(それでも記事公開時よりは少しだけ高いですが…。円安の影響でしょうか…。)
追記ここまで。
SSL 証明書のインストール
下記サイトを参考に SSL 認証書のインストールを進めていきます。
まず、mod_ssl のインストール。
# yum -y install mod_ssl
次に秘密鍵を生成する。
RapidSSL の認証書が 2048bit なので 2048 を指定すること。
# cd /etc/pki/tls/certs/
# openssl genrsa -des3 -out server.key 2048
Generating RSA private key, 2048 bit long modulus
...........................................+++
...+++
e is 65537 (0x10001)
Enter pass phrase for server.key: (←パスフレーズを入力)
Verifying - Enter pass phrase for server.key: (←パスフレーズを再入力)
次に秘密鍵から CSR を生成する。
# openssl req -new -key server.key -out server.csr
Enter pass phrase for server.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) [GB]:JP (←国名を入力)
State or Province Name (full name) [Berkshire]:Aichi (←都道府県を入力)
Locality Name (eg, city) [Newbury]:Nagoya (←市区町村を入力)
Organization Name (eg, company) [My Company Ltd]:Company Name (←会社、団体名を入力)
Organizational Unit Name (eg, section) []: (←空エンター)
Common Name (eg, your name or your server's hostname) []:www.example.com (←ドメイン名を入力)
Email Address []:webmaster@example.com (←メールアドレスを入力)
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: (←空エンター)
An optional company name []: (←空エンター)
CSR の内容を確認。
# cat server.csr
-----BEGIN CERTIFICATE REQUEST-----
(英数字の羅列)
-----END CERTIFICATE REQUEST-----
CSR を Rapid-SSL.jp に送信して、証明書発行を申し込む。
CSR 生成時に入力した情報を Rapid-SSL.jp でも入力すること。
メール認証後、SSL サーバー証明書がメールで送られてくるので、
サーバーに設置する。
# vi server.crt
(SSL サーバー証明書をコピペする)
このままだと Apache を起動するたび(?)にパスフレーズを聞かれるので、
パスフレーズ応答を削除する。
# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: (←パスフレーズを入力)
writing RSA key
ssl.conf を編集する。
# vi /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/certs/server.key
DocumentRoot "/var/www/html"
ServerName www.example.com:443
バーチャルホストの設定を変更する。
(バーチャルホストを構築している場合)
# vi /etc/httpd/conf.d/ssl.conf
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
# 以下の設定を追加
RewriteEngine On
RewriteLog "logs/rewrite_log"
RewriteLogLevel 0
RewriteCond %{HTTP_HOST} !example.com$ ←SSLのホスト名
RewriteRule ^/(.*)?$ http://%{HTTP_HOST}/$1 [L,R]
Apache を再起動する。
# /etc/rc.d/init.d/httpd restart
ここまでで https にアクセスしてみるけど、
「接続の安全性を確認できません」(Firefox)って言われる。
どうやら「中間証明書」ってのをサーバーに入れないといけないらしい。
そういえばメールで送られてきてたので、
「中間証明書」とやらをサーバーに設置する。
「中間証明書」ファイルを新規作成して、
メールで送られてきた内容をコピペする。
# vi /etc/pki/tls/certs/rapidssl-chain.crt
-----BEGIN CERTIFICATE-----
(英数字の羅列)
-----END CERTIFICATE-----
ssl.conf を編集して「中間証明書」を読み込む。
# vi /etc/httpd/conf.d/ssl.conf
SSLCertificateChainFile /etc/pki/tls/certs/rapidssl-chain.crt
そして、Apache を再起動。
# /etc/rc.d/init.d/httpd restart
これで、Firefox に怒られなくなりました。
以上。