こんにちは、hachi8833です。
先週の「Let's EncryptがVerisignと棲み分けできる理由: SSL証明書の「DV、OV、EV」とは何か」の続編として、Let's Encrypt や激安SSL、AWS Certificate Managerなどの違いや利用上の注意点をyamasitaさんが解説してくれました。
概要
Let's encryptは原則としてインターネット上のWebサーバでの使用を想定しています。したがって、Webサーバを稼働させないと利用できません(もしくはACMEプロトコルがつかう80/443ポートを開ける必要があります)。
たとえばどうしても内部向けメールサーバ用のSSL証明書を使いたいのであれば、何らかの形でインターネット上に公開してWebポートにLet's Encryptからアクセスできるようにする必要があります。
逆にいわゆる激安SSLは、naked domainの所有者であればたとえAレコードがWebサーバーを向いていなくても証明書を取得できます。
2016/10/14追記
Let's EncryptはHTTPアクセスによって所有確認する方法(http-01)の他に、DNSのTXTレコードを使って認証する方法(dns-01)も提供しています。詳細は下記参考URLで。なのでメールサーバやポートを通せない事情があれば、DNSを使って認証することで回避することができます。
指摘してくれた飲みLINEチャットの某氏、ありがとうございました :bow:。
(by morimori)
Let's EncryptはHTTPアクセスによって所有確認する方法(http-01)の他に、DNSのTXTレコードを使って認証する方法(dns-01)も提供しています。詳細は下記参考URLで。なのでメールサーバやポートを通せない事情があれば、DNSを使って認証することで回避することができます。
指摘してくれた飲みLINEチャットの某氏、ありがとうございました :bow:。
(by morimori)
参考: Qiita: Let's Encrypt の証明書をブラウザ上で簡単取得 (dns-01 / ECDSA もあるよ)
Let's Encrypt
- 証明書発行のための確認手段は、上述の方法でLet's Encrypt側から80/443ポートを叩くか、指定のドキュメント(というほどでもないハッシュ文字列)をWebサーバーの指定のディレクトリに置いたことをチェックすることによって行います。
- コマンドワンショットで更新まで完了でき、とっても簡単です。WebサーバーがNginxやApacheなら設定まで行ってくれます。
- 「みんな、Webサイトを全部HTTPSにしようぜ」というサービスなので、Webサーバでの使用を想定しています。S/MIMEとか無理です。
- ドメイン名にワイルドカードは使えません(2018/06注: 記事出稿時。現在は対応しています。参考: Let's Encrypt総合ポータル: ワイルドカード証明書と ACME v2 へ対応)。
- CTログ(Certification Transparency: 証明書の透明性)が利用できます。
- マルチドメインのSAN(Subject Alternate Names)を追加できますが、設定したどのドメインもWebサーバーとしてポート80と443に応答でき、かつDNS情報のAレコードがすべてのドメインに向いてる必要があります。
- SSL証明書の有効期限は3か月と短いので、自動更新の仕組みを作っておかないと死ねます。
個人的にはこの「3か月」という設定はなかなか絶妙だと思いました。自動化して忘れるよりは、多少面倒でも半手動で更新かけてときどき思い出すのもよいかもしれません。
激安SSL
特定の激安SSLサービスに特定していない、一般的な注意点です。
- 1〜3年間くらいの有効期限で買えます。
- 証明書発行のための確認手段は多くの場合メールだけで行なえますので、letsencryptと違ってWebサーバが稼働していなくても証明書を発行してもらえます(rapid ssl みたいにWebサーバーにアクセスしてvalidationするサービスもありますが)。
- メールだけで確認する場合、具体的にはサービス側からドメインの「admin@ administrator@ hostmaster@ webmaster@ postmaster@ admin@ administrator@ hostmaster@ webmaster@ postmaster@」(@以降はnaked domain)、またはあとwhoisに登録されてるそのドメインのメールアドレスに認証コードを送信して届けば確認できたとみなします。
- CTログは多分対応しているはずです(rapid ssl は最近対応したはず)。
AWS Certificate Manager
- 証明書の有効期間は13か月です。証明書は自動更新できます。
- 「AWSを使っているなら無料でSSL使っていいよ」なので、何もかも無料ということではありません。
- 秘密鍵は取得できません。
- 既知の問題: ELB(Elastic Load Balancing)だとOCSP Staplingをなぜか有効にできません。
- このSSL証明書をAWS以外のサイトで使いたい場合は、今のところCloud FrontでCDNに乗せるぐらいしか方法がなさそうです。
参考リンク
関連記事
- Let’s EncryptがVerisignと棲み分けできる理由: SSL証明書の「DV、OV、EV」とは何か
- サーバ公開鍵設定をコマンド一発で
- Rails3でhttpsからhttpへのリダイレクトを行う方法