このブログがサブドメインアドレスでWordPressにて運用していまして、SEO対策にいいと聞いたので、考えあさましく一番安いRapidSSLで、まるごとSSL通信に変更した記録です。
すでにバーチャルホストのメインサイトは以前設定したジオトラスト社のクイックSSLプレミアムでSSL通信になっている前提です。
今回は、サブドメインのサイトもSSL通信にしたときの備忘録です。
まず、前提として。
- apache2、opensslなどがインストール済み
- wordpressでサイト構築済み
- 自宅サーバー1台でネームベースのバーチャルホスト設定
- 証明書購入代理店はリピートで、SSLストアで購入
- 作業用フォルダとして /etc/apache2/ssl フォルダを作成済み
ちなみに、RapidSSLはジオトラスト社の別ブランドとのことで、手順はほぼ前回のジオトラスト社と同じなのでサクサク進みました。
このページの目次
自サーバーで秘密鍵を作成してCSRを生成する
まずは、証明書購入時に必要なCSRとやらを生成します。
cd /etc/apache2/ssl
openssl md5 * > rand2.dat
作成した疑似乱数ファイル(rand2.dat)から、秘密鍵を作成します。
トリプルDESを使い、2048bitの秘密鍵(ファイル名:rapidkey.pem)を作成
openssl genrsa -rand rand2.dat -des3 2048 > rapidkey.pem
パスフレーズを聞かれるので入力します。
Enter pass phrase: ”パスフレーズ入れる”
Verifying – Enter pass phrase: “もう一度パスフレーズ入れる”
パスフレーズは今後も使います。メモを忘れないように。
作成した秘密鍵ファイルからCSR作成(ファイル名:rapidcsr.pem)
openssl req -new -key rapidkey.pem -out rapidcsr.pem
Enter pass phrase for rapidkey.pem:
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Setagaya-Ku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:system
Common Name (e.g. server FQDN or YOUR name) []:blog.example.com
Email Address []: A challenge password []: An optional company name []:
これで、rapidcsr.pemというファイルが出来上がって、ファイルの中身がCSRです。
セキュリティのため、このフォルダ内のファイルのパーミッションを変更します。
chmod 400 *
RapidSSLの購入とアクティベーション
SSL証明書を購入したのはSSLストアというところです。
前回、スムーズに購入できたのでリピート利用です。
- 会員ページにログインする。
- 購入予定金額分のデポジットをPayPalかクレカで入金。
- RapidSSLを買物カゴに入れてデポジットで購入。
- アクティベーション画面へ行く。
- 先ほど作成したCSRと貼り付け、必要事項を入力する。
- RapidSSLより届くメールのリンクを開き、「承認する」をクリック。
これで、購入とアクティベートが完了です。
Debian+Apache2 自宅サーバーの設定
ファイルを3つ作って、apache2のports.confとsites-availableの設定を変えます。
ports.confでポート443でもバーチャルホストを有効に設定
デフォだとポート80しかバーチャルホストが有効になっていないのでポート443でも有効に変更します。
nano /etc/apache2/ports.conf
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost *:443 ←行を追加
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
「Ctrl+X」→Y→Enter で保存
(ファイル1)証明書ファイルを作成
RapidSSLからアクティベーション後に届く証明書発行メールの本文の最後に記載されている下記の赤部分をコピーする。
AQ8AMIIBCgKCAQEAsnzO9ehFhF/uUoLZo5fjTtFXCHL9n5Pux+UMCr8a
rT8hi3KbK/AxdsrzMjRAL+fkj/DqHolE1olgnOabW3A/2U29dvqpnhjcn0N
7gauMhEq3mJS0iUSUpWUf/FaBghoZvvGmjnkdXdyabYcvu4HqTW3+
省略 ※赤い部分だけをコピー
KtEGQE1Vv3TNWEPZCM40qKcuLKbncD9O7mDayI8RiSOC/3UFlnlnW4XX
Kmvcjrg5YPHpNMS1ooeTshn+C9gbID+ch9jqUHLXRs6nmZFpnj7rG0HfL
5swREKpHNKPkF38rMKb9FtCMf9jCE2i9SeBleGNTteX6ltDTtIcC8LWbeFm
—–END CERTIFICATE—–
INTERMEDIATE CA:
—————————————
—–BEGIN CERTIFICATE—–
MIID+jCCAuKgAwIBAgIDAjbSMA0GCSqGSIb3DQEBBQUAMEIxCzA
MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJ
YWwgQ0EwHhcNMTAwMjI2MjEzMjMxWhcNMjAwMjI1MjEzMjMxWjB
省略
lvD16lo8nBa9AlPwKg5BbuvvnvdwNs2AKnbIh+PrI7OWLOYdlF8cpOLN
YWE5XIlMSB1CyWee0r9Y9/k3MbBn3Y0mNhp4GgkZPJMHcCrhfCn13m
vTezMGnGkqX2Gdgd+DYSuUuVlZzQzmwwpxb79k1ktl8qFJymyFWOIPllB
—–END CERTIFICATE—–
コピー部分は、RapidSSLの会員サポートページからでも確認できます。
コピーした中身を張り付けて証明書ファイルを作成します。
証明書ファイルを任意の名前で新規作成(例:rapidcert.pem)
nano /etc/ssl/certs/rapidcert.pem
コピーした内容をペーストしたら「Ctrl+X」→Y→Enter で保存新規保存します。
(ファイル2)秘密鍵ファイルを作成
CSR作成する際に使った秘密鍵ファイルをそのままコピーして使います。
秘密鍵ファイルをコピーして保存(例:rapidkey.pem)
cp /etc/apache2/ssl/rapidkey.pem /etc/ssl/private/rapidkey.pem
パーミッションを同フォルダ内ファイルと同じ設定に変更
chmod 640 /etc/ssl/private/rapidkey.pem
(ファイル3)中間証明書ファイルを作成
コチラを開きます。
Download RapidSSL and WildCard Intermediate CA
https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&id=AR1549&actp=search&viewlocale=en_US(リンク切れ)
赤線の部分をクリックして、開いた記述を全部コピーします。
nano /etc/ssl/certs/rapidca.pem
コピーした部分を張り付けしたら「Ctrl+X」→Y→Enter で保存
sites-availableの設定
/etc/apache2/sites-available/default-sslを編集します。
長い記述なので途中省略していますが、
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
ServerName www.ikt-s.com
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
~~省略~~
~~省略~~
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch “MSIE [17-9]” ssl-unclean-shutdown
</VirtualHost>
</IfModule>
上下一行以外の赤字の部分をコピーして、下のように貼り付けます。
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
ServerName www.ikt-s.com
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
~~省略~~
~~省略~~
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch “MSIE [17-9]” ssl-unclean-shutdown
</VirtualHost>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
ServerName www.ikt-s.com
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
~~省略~~
~~省略~~
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch “MSIE [17-9]” ssl-unclean-shutdown
</VirtualHost>
</IfModule>
そして張り付けた部分を、サブドメインに適した記述に変更します。(例は、当ブログ用のモノです。)
ServerAdmin webmaster@localhost
ServerName blog.ikt-s.com ←変更
DocumentRoot /var/blog ←変更
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/blog/> ←変更
Options Indexes FollowSymLinks MultiViews
AllowOverride All ←要確認
Order allow,deny
allow from all
</Directory>
~~省略~~
~~省略~~
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/certs/rapidcert.pem ←証明書ファイル
SSLCertificateKeyFile /etc/ssl/private/rapidkey.pem ←秘密鍵ファイル
# Server Certificate Chain:
# Point SSLCertificateChainFile at a file containing the
# concatenation of PEM encoded CA certificates which form the
# certificate chain for the server certificate. Alternatively
# the referenced file can be the same as SSLCertificateFile
# when the CA certificates are directly appended to the server
# certificate for convinience.
#SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt
# Certificate Authority (CA):
# Set the CA certificate verification path where to find CA
# certificates for client authentication or alternatively one
# huge file containing all of them (file must be PEM encoded)
# Note: Inside SSLCACertificatePath you need hash symlinks
# to point to the certificate files. Use the provided
# Makefile to update the hash symlinks after changes.
#SSLCACertificatePath /etc/ssl/certs/
SSLCACertificateFile /etc/ssl/certs/rapidca.pem ←中間証明書ファイル
~~省略~~
~~省略~~
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch “MSIE [17-9]” ssl-unclean-shutdown
</VirtualHost>
最後に保存したら、apacheを再起動します。
/etc/init.d/apache2 restart
※注意:もし、パスフレーズをスクリプト入力に設定している場合は、設定を元に戻しておかないとエラーになります。
Server blog.ikt-s.com:443 (RSA)
Enter pass phrase:
Server www.ikt-s.com:443 (RSA)
Enter pass phrase:
OK: Pass Phrase Dialog successful.. ok
このように、サイトごとにパスフレーズを聞かれたら成功です。
※証明書ファイルと秘密鍵ファイルのバックアップを外部に保存しておくのを忘れずに。
【2014/12/12追記】
この記事ではすでにメインサイトでSSL通信が有効だったので不要でしたが、default-sslを初めて利用する場合はここで
a2ensite default-ssl a2enmod ssl
が必要です。
WordPressの設定変更
まるごとSSL通信にする場合、WordPressの設定は簡単です。(プラグインすら不要です。)
管理画面の「設定」-「一般」のWordPressアドレス2か所を変更するだけす。
プラグイン「Search Regex」で画像などのリンク先を変更
画像ファイルのリンクなど、http://から始まる記述があるページは、アドレスバーにびっくりマークが出てしまいます。
過去の投稿などのリンクを一括で変更してくれるプラグイン「Search Regex」などで一括変換しましょう。
証明書シールを貼る
お好きなところに証明書シールを張り付けましょう。
感想
ひとつ千円ちょっとですから、気軽にSSL通信サイトを構築できます。
ワイルドカード対応RapidSSLが一万円弱ですが、自宅サーバーならせいぜいサイト2つか3つという場合、RapidSSL複数購入のほうが安く上がります。
すべてのサイトをSSL通信に!というのも実現可能かもしれませんね。