14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-12-07

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

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

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

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

申請ドメインが dev.example.com であれば、 admin@example.com, postmaster@example.com, admin@dev.example.com, postmaster@dev.example.com などのうち、どれか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

14
15
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?