SSLストアで、1,200円/年 の SSL証明書 (  COMODO PositiveSSL ) を買って Nginx で使う


SSL証明書のコストは、いいとこの物を買うと年間数万円ほどかかってしまいますが、SSLストアのお安いもので充分だと思います。10ドメインほど買い、iOS9やブラウザから使っていますが現状問題ありません。サーバも、Nginx, Apache, AWS ELB で使っていますが、問題なく使用できています。

2015年12月現在、最安は 1,200円/年 の COMODO PositiveSSL です。これで、開発環境の管理サイトSSLもオレオレ証明書から卒業できますね。

1. 確認メールアドレスの準備

証明書のアクティベート時に確認メールが送られてくるため、申請ドメインの admin@ のメールアドレスを受信可能にしておく必要があります。他には、 postmaster@ や、whoisに登録されているアドレス に送信することができます。
(証明書のアクティベート時に選択できます)

申請ドメインが dev.example.com であれば、 [email protected], [email protected], [email protected], [email protected] などのうち、どれか1つが受信可能にななっている必要があります。

2. SSLストアの会員登録

http://www.ssl-store.jp/ ここから、案内に従って会員登録します。
(登録アドレスは 1. のメールアドレスではなく、汎用的に使えるアドレスにしておきます。)

3. 入金

SPIKE で、デポジット入金して 証明書を購入できます。
管理画面の 代金支払 → クレジットカードで入金 より。

今回は 1,200 円だけ入金すれば充分です。

SPIKE アカウントがあれば、秒殺で入金できます。

4. 証明書の購入

管理画面から、証明書 → 証明書購入。 Comodo → COMODO PositiveSSL 1年 の「新規」ボタンを押下。あとは案内に従って進めます。

5. 証明書のアクティベート

購入を完了すると、証明書 → 証明書管理 に「アクティベート待ち」 の証明書が出てきますので、
「詳細」→「アクティベート(申請)する」をクリック

CSR を求められますので、一旦ブラウザから離れて CSR を作成します。

6. CSR のを作成

openssl を使って、CSR を作成します。mac のターミナルからで良いでしょう。

$ openssl req -new -newkey rsa:2048 -nodes -out ドメイン名.csr -keyout ドメイン名.key -subj "/C=JP/ST=Tokyo/L=区/O=会社名/CN=ドメイン名"

それぞれ、間違いの無いように入力します。

すると、ドメイン名.csr と ドメイン名.key が出来ます。

7. CSR の入力

先ほどできた CSR の内容を、ブラウザのCSR 欄に貼り付けします。

mac であれば、

$ cat ドメイン名.csr | pbcopy

でコピーすると良いでしょう。(cat で表示されたものをマウスで選択してコピーでも問題ありません)

アクティベートフォームの「サーバの種類」は、Apache や Nginx であればデフォルトの「ApacheOpenSSL」で問題無いでしょう。

CSR をペーストしたら「次に進む」をクリック

8. アクティベートつづき

CSRのパース結果が表示されますので、「コモンネーム」が間違ってないか超確認します。例えば、表示内容をコピペして ping してみるとか、ブラウザから開いてみるなどして、間違いの無いようにします。

承認メールアドレスを選択し、ドメイン所有者情報も入力していきます。

(一度入力してしまえば、以降はブラウザの履歴からの補完機能で入力すると楽です。入力欄をダブルクリックで履歴の表示)

入力が終わったら「次に進む」をクリック

9. アクティベート確認

コモンネーム、承認メールアドレスをもう一度よく確認しておきます。

最終確認のチェックボックスを入れ、「上記の内容で申請」をクリック

10. アクティベート承認確認メールから、メールアドレス認証

アクティベート時にラジオボタンで選択したメールアドレス (例: admin@〜) に、
ORDER #xxxxxxxx - Domain Control Validation for ドメイン名

という件名のメールが送信されてきます。

メール文中の validation code をコピーし、その上の please browse here のリンクをクリックし、表示されたフォームに先ほどのバリデーションコードを貼り付け、Next をクリック。

Thank you と言われるので、次は アクティベート時にテキスト入力したメールアドレス の受信をチェックします。

ORDER #xxxxxxxx - Your PositiveSSL Certificate for ドメイン名

というメールが来ますので、内容を見ます。

11. Nginx用証明書ファイルの作成

メール本文にベタっと ドメイン証明書が書かれており、また添付zipファイル内にも同じドメイン証明書入っています。

添付ファイルの中には、中間証明書も入ってますので、zip を展開します。

  • AddTrustExternalCARoot.crt
  • COMODORSADomainValidationSecureServerCA.crt
  • COMODORSAAddTrustCA.crt
  • ドメイン名.crt

が入ってます。

Apache では、中間証明書は SSLCertificateChainFile で指定しましたが、Nginx では中間証明書はサイト証明書ファイルに連結して使用します。

$ cat ドメイン名.crt COMODORSADomainValidationSecureServerCA.crt  COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > ドメイン名.nginx.crt

このように連結しておきます。

12. Nginx用証明書のアップロードと設定

先ほどの証明書と、6. で作った ドメイン名.key を サーバにアップロードし、
Nginx のサイト設定ファイルで

listen 443 ssl;

ssl_certificate /path/to/ドメイン名.nginx.crt;
ssl_certificate_key /path/to/ドメイン名.key;

と設定してNginxをリロードすれば、警告無くHTTPS通信ができるはずです。

13. AWS ELB の場合

AWS の場合、SSLの暗号処理は ELB にまかせ、ELB->EC2 は平文HTTPで良いでしょう。
(いわゆる SSLアクセラレータ)

ELBに証明書を登録する必要がありますが、AWS管理画面からコピペで登録できます。

ロードバランサーの SSL 証明書の更新 - Elastic Load Balancing
http://docs.aws.amazon.com/ja_jp/ElasticLoadBalancing/latest/DeveloperGuide/elb-update-ssl-cert.html

Certificate Chain: には、
COMODORSADomainValidationSecureServerCA.crt, COMODORSAAddTrustCA.crt, AddTrustExternalCARoot.crt を連結したものを入れましょう。

※ AWS の場合、中間証明書の結合の順番は重要です。適切でないと、Web管理サイトで証明書のアップロードができません。ルート証明書が一番下です。

詳細: サーバー証明書の管理 - AWS Identity and Access Management