続編: Let’s Encrypt・激安SSL・AWS Certificate Managerの比較と注意点

こんにちは、hachi8833です。

先週の「Let’s EncryptがVerisignと棲み分けできる理由: SSL証明書の「DV、OV、EV」とは何か」の続編として、Let’s Encrypt や激安SSL、AWS Certificate Managerなどの違いや利用上の注意点をyamasitaさんが解説してくれました。

160923_1630_pl17UO

概要

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)

参考: Qiita: Let’s Encrypt の証明書をブラウザ上で簡単取得 (dns-01 / ECDSA もあるよ)

Let’s Encrypt

le-logo-standard

  • 証明書発行のための確認手段は、上述の方法でLet’s Encrypt側から80/443ポートを叩くか、指定のドキュメント(というほどでもないハッシュ文字列)をWebサーバーの指定のディレクトリに置いたことをチェックすることによって行います。
  • コマンドワンショットで更新まで完了でき、とっても簡単です。WebサーバーがNginxやApacheなら設定まで行ってくれます。
  • 「みんな、Webサイトを全部HTTPSにしようぜ」というサービスなので、Webサーバでの使用を想定しています。S/MIMEとか無理です。
  • ドメイン名にワイルドカードは使えません。
  • 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

aws-certificate-manager-cover

  • 証明書の有効期間は13か月です。証明書は自動更新できます。
  • 「AWSを使っているなら無料でSSL使っていいよ」なので、何もかも無料ということではありません。
  • 秘密鍵は取得できません。
  • 既知の問題: ELB(Elastic Load Balancing)だとOCSP Staplingをなぜか有効にできません。
  • このSSL証明書をAWS以外のサイトで使いたい場合は、今のところCloud FrontでCDNに乗せるぐらいしか方法がなさそうです。

参考リンク

関連記事

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833 コボラー、ITコンサル、ローカライズ業界を経てなぜかWeb開発者志願。 これまでにRuby on Rails チュートリアルの大半、Railsガイドのほぼすべてを翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

Rubyスタイルガイドを読む

BigBinary記事より

ActiveSupport探訪シリーズ