SSL on Apache2
セキュアなサイトを実現するSSL の実装をApache2 に施します。Apache2 は当初からSSL がサポートされているので、簡単な設定で
実現できます。
更新日 2016-02-18
SSL 概要
SSL は通信を暗号化する技術で、セキュリティの必要な情報の送受信に使われます。Apache2 はSSL を簡単に扱えます。
Apache2 のコンパイル
コンパイル時にSSL の利用を設定していなければなりません。
コンパイル
ソースコードを手に入れてコンパイルします。--enable-ssl を付けてプリコンパイルします。
./configure --enable-ssl --enable-deflate --enable-usertrack \
--prefix=/usr/local/apache2.0.55
make
make install
RapidSSL でサーバ証明書を取得する
RapidSSL は格安で有名ですが、GreoTrust、VeriSign のグループ会社の一つのようです。申し込みから発行まで実質30分以内です。スマホ対応率も100%との事。
CSR の生成
CSR(Certificate Sigining Request) とはサーバ証明書を発行するのに必要な署名要求の事です。openssl で作成します。
cd /etc/pki/tls/certs
// md5 ダイジェスト値を擬似乱数として使用する
openssl md5 * > rand.dat
// 擬似乱数を元に秘密鍵を作る(要パスフレーズ)
openssl genrsa -rand rand.dat -des3 2048 > ast.qt-space.com.key
// 秘密鍵からCSRを作る
openssl req -new -key ast.qt-space.com.key -out ast.qt-space.com.csr
// Country Name (2 letter code) [XX]:JP
// State or Province Name (full name) []:Aichi
// Locality Name (eg, city) [Default City]:Iwakura-City
// Organization Name (eg, company) [Default Company Ltd]:
// Organizational Unit Name (eg, section) []:
// Common Name (eg, your name or your server's hostname) []:ast.qt-space.com
// Email Address []:ast@qt-space.com
//
// Please enter the following 'extra' attributes
// to be sent with your certificate request
// A challenge password []:
// An optional company name []:
SSLストアでRapidSSLサーバ証明書の購入手続きを行う
SSLストアでRapidSSL(3年 3,200円)を購入します。作成したCSR の中身(テキスト)を認証手続きに従って
貼り付けて送信します。しばらく待つとサーバー所有者確認用のファイルをダウンロードできますので、
それを自分のWebサーバーにアップロードしクロールできるようにします。
SSLストアから無事クロールされてサーバーの所有者確認が済むとさらに審査が行われます。合格すれば サーバ証明書と中間証明書の2つをメールで受け取れます。
SSLストアから無事クロールされてサーバーの所有者確認が済むとさらに審査が行われます。合格すれば サーバ証明書と中間証明書の2つをメールで受け取れます。
cd /etc/pki/tls/certs
// RapidSSL RN SSLサーバ証明書
vi ast.qt-space.com.crt
// -----BEGIN CERTIFICATE-----
// 英数字テキスト
// -----END CERTIFICATE-----
// 中間CA証明書
vi ast.qt-space.com.rapidssl-chain.crt
// -----BEGIN CERTIFICATE-----
// 英数字テキスト
// -----END CERTIFICATE-----
ファイルは4つ出来てます。
ast.qt-space.com.key
ast.qt-space.com.csr
ast.qt-space.com.crt
ast.qt-space.com.rapidssl-chain.crt
パスフレーズを解除する
Apache2 の再起動時に秘密鍵のパスフレーズを聞かれます。サーバーの自動起動の妨げになってしまうため、
秘密鍵からパスフレーズを除去します。
// パスフレーズを除く
openssl rsa -in ast.qt-space.com.key -out ast.qt-space.com.key
設定と起動
Apache2.2 の設定ファイルを修正します。
httpd-vhosts.conf のカスタマイズ
VirtualHost 運用でSSL を使う場合です。既にVirtualHost *:80 で運用してるサイトであれば、VirtualHost ディレクティブを
別に追加します。80ポートでも受け付けておいて、SSL にリダイレクトさせるようにします。
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
// 追加
<VirtualHost *:443>
DocumentRoot "/home/ast"
ServerName ast.qt-space.com
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile "/etc/pki/tls/certs/ast.qt-space.com.crt
SSLCertificateKeyFile "/etc/pki/tls/certs/ast.qt-space.com.key
SSLCertificateChainFile "/etc/pki/tls/certs/ast.qt-space.com.rapidssl-chain.crt
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/home/ast"
ServerName ast.qt-space.com
// 外部からのアクセスはSSLにリダイレクト
RewriteCond %{REMOTE_ADDR} !^192\.168
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*)$ https://%{HTTP_HOST}/$1 [L,R,QSA]
</VirtualHost>