概要
試しに clock-up.jp への SSL 設定を行ってみた。
流れ
ざっくり以下のような流れ。
- 秘密鍵作成 … 自分のサーバで行う
- CSR作成 … 自分のサーバで行う。ここに署名情報を含める。
- 中間CA証明書取得 … 認証局サイトから取得
- サーバ証明書取得 … プロバイダを介して認証局から取得
- 認証局に(2)のCSRを送る必要がある
- 秘密鍵・中間CA証明書・サーバ証明書をApacheに設定
手元のモジュール確認
$ rpm -q httpd
httpd-2.2.15-47.el6.centos.x86_64
$ rpm -q mod_ssl
mod_ssl-2.2.15-47.el6.centos.x86_64
$ openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
モジュールが無ければ yum 等でインストール。
# yum -y install httpd
# yum -y install mod_ssl
# yum -y install openssl
秘密鍵生成
# cd /etc/httpd/conf
# mkdir ssl.key
# chmod 700 ssl.key
# cd ssl.key
# openssl genrsa -des3 -out ./ssl.key/clock-up.jp_201511.key 2048
…
Enter pass phrase for clock-up.jp.key:
Verifying - Enter pass phrase for clock-up.jp.key:
# ls -l ssl.key
-rw-r--r-- 1 root root 1743 Nov 15 02:13 clock-up.jp_201511.key
あとあとパスフレーズ入力するのがめんどくさくなってきたら以下コマンドでパスフレーズを外しておく。
# openssl rsa -in ./ssl.key/clock-up.jp_201511.key -out ./ssl.key/clock-up.jp_201511.key
CSR生成
# mkdir ssl.csr
# chmod 700 ssl.csr
# openssl req -new -key ./ssl.key/clock-up.jp_201511.key -out ./ssl.csr/clock-up.jp_201511.csr
Enter pass phrase for ./ssl.key/clock-up.jp_201511.key: ← 入力
…
Country Name (2 letter code) [XX]:JP ← 入力
State or Province Name (full name) []:Tokyo ← 入力
Locality Name (eg, city) [Default City]:Shinjuku-ku ← 入力
Organization Name (eg, company) [Default Company Ltd]:clock-up.jp ← 入力
Organizational Unit Name (eg, section) []: ← 空
Common Name (eg, your name or your server's hostname) []:clock-up.jp ← 入力
Email Address []:kobake@users.sourceforge.net ← 入力
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ← 空
An optional company name []: ← 空
# ls -l ssl.csr/
-rw-r--r-- 1 root root 1054 Nov 15 03:17 clock-up.jp_201511.csr
# cat ssl.csr/clock-up.jp_201511.csr
-----BEGIN CERTIFICATE REQUEST-----
MIIC0jCCAboCAQAwgYwxCzAJBgNVBAYTAkpQMQ4wDAYDVQQIDAVUb2t5bzEUMBIG
…
Pv+6Tt+0
-----END CERTIFICATE REQUEST-----
CSR内容確認
# openssl req -text -noout -in ssl.csr/clock-up.jp_201511.csr
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=JP, ST=Tokyo, L=Shinjuku-ku, O=clock-up.jp, CN=clock-up.jp/emailAddress=kobake@users.sourceforge.net
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
…
さくらインターネットにてSSL申込 (CSR登録)
clock-up.jp_201511.csr の内容をまるまるコピペ。
表示される内容にうち、特にコモンネームが間違ってないことを確認。
とりあえずこれで申込み完了。しばらくするとさくらインターネットからのメールが来る。
CSR登録後に来るメール:認証ファイルの発行
会員メニューから認証ファイル (htmファイル) が入手できるようになっている。
入手した認証ファイル (htmファイル) を
http://clock-up.jp/*.htm としてアップロードする。
しばらくすると自動で認証局のボット的なものからこのファイルへのアクセスがあり、問題なければサーバ証明書が送られてくる。この時点で認証ファイルはもう不要なので削除してOK。
認証後に来るメール:サーバ証明書の発行
会員メニューからサーバ証明書 (certファイル) を入手できるようになっている。
これの内容をまるまるコピーして
/etc/httpd/conf/ssl.crt/server.crt
として保存。
RapidSSL中間CA証明書を取得
赤枠内をまるまるコピーして、
/etc/httpd/conf/ssl.crt/inca.crt
として保存。
この時点で揃ったファイル
- /etc/httpd/conf/ssl.key/clock-up.jp_201511.key … 秘密鍵(自分で作った)
- /etc/httpd/conf/ssl.csr/clock-up.jp_201511.csr … CSR(自分で作った)
- /etc/httpd/conf/ssl.crt/inca.crt … 中間CA証明書(RapidSSLサイトから取得)
- /etc/httpd/conf/ssl.crt/server.crt … サーバ証明書(さくらインターネット管理画面から取得)
Apache設定
/etc/httpd/conf.d/ssl.conf を編集
LoadModule ssl_module modules/mod_ssl.so
Listen 443
NameVirtualHost *:443
SSLPassPhraseDialog builtin
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
#SSLRandomSeed startup file:/dev/random 512
#SSLRandomSeed connect file:/dev/random 512
#SSLRandomSeed connect file:/dev/urandom 512
SSLCryptoDevice builtin
#SSLCryptoDevice ubsec
<VirtualHost *:443>
DocumentRoot "/home/www/www.clock-up.jp/public_html"
ServerName clock-up.jp:443
SSLEngine on
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/clock-up.jp_201511.key
SSLCertificateChainFile /etc/httpd/conf/ssl.crt/inca.crt
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/home/www/www.clock-up.jp/public_html">
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
Apache再起動
# service httpd restart
これにて完。