youcune.com の SSL/TLS 証明書を更新しようと思いましたが、買ったときより倍額ぐらいになっていたので GoGetSSL に変えてみました。3年間 12.25 USD でした。
youcune.com は適宜読み替えてください。
サーバーで秘密鍵、 CSR の生成
他の記事では -des3
など指定してパスフレーズつきで生成している例が多いですが、どうせ最終的には外して利用すると思うので最初から暗号化しないことにします。
$ openssl genrsa -out youcune.com.key 2048
$ openssl req -new -key youcune.com.key -out youcune.com.csr
-
Country Name (2 letter code) [AU]:
にはJP
と答える。間違えてJA
と書いてて通らなくてハマりました。 -
Common Name (e.g. server FQDN or YOUR name) []:
にはドメイン名を正確に答える。今回の場合youcune.com
と答えた。- ワイルドカード証明書の場合は、
*.youcune.com
のように答える。
- ワイルドカード証明書の場合は、
CSR は、 SSL/TLS 証明書を発行するための署名要求なので、証明書が発行されたら不要になります。
証明書の受け取り
はしょりますが、おおまかに下記手順になります。
- GoGetSSL で購入
- 生成した CSR の中身をコピペ
- 所有者確認(今回はメール認証を選択しました。メールアドレスの選択肢の中から認証メールを受け取り、メールの手順にそって verification code を入力してpermitします)
- 所有者確認が終わると、証明書一式が ZIP で送られてくる
証明書の設置
ZIP ファイルを展開するとファイルが4つ出てきますが、ぼくの理解ではそれぞれの役割はこう。
ファイル名 | 説明 |
---|---|
AddTrustExternalCARoot.crt | ルート証明書。ブラウザに最初から入っているべきもの |
COMODORSAAddTrustCA.crt | 中間証明書 |
COMODORSADomainValidationSecureServerCA.crt | 中間証明書 |
youcune_com.crt | サーバー証明書 |
今回使う Nginx は中間証明書を設定できないので、証明書たちをくっつけて1つのファイルにチェーンしてやる必要があります( Apache など中間証明書を設定できる環境の場合は、別々のファイルにしておくほうが更新作業を考えるとやりやすいのではないかと思います)。自分のドメインの証明書から中間証明書を経由してルート証明書までチェーンした証明書にします(ルート証明書自体はブラウザに入っているべきものなのでなくても動きますが、ルート証明書からチェーンすべきらしいです)。
$ cat youcune_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > youcune.com.bundle.crt
そして、最初に作った youcune.com.key と今作った youcune.com.bundle.crt をサーバーに設定します。今回は Nginx に設定したので下記のような感じにしました。
server {
listen 443 ssl;
server_name youcune.com;
ssl on;
ssl_certificate /etc/nginx/ssl/youcune.com.bundle.crt;
ssl_certificate_key /etc/nginx/ssl/youcune.com.key;
# :
# :
See also
上記設定をしたあとは下記の記事も参考になるかと思います。