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 証明書のインストール

下記サイトを参考に 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)って言われる。

20110407_001

 

どうやら「中間証明書」ってのをサーバーに入れないといけないらしい。
そういえばメールで送られてきてたので、
「中間証明書」とやらをサーバーに設置する。

「中間証明書」ファイルを新規作成して、
メールで送られてきた内容をコピペする。

# 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 に怒られなくなりました。

以上。