ZeroSSL

無料発行できる SSL サーバ証明書 ZeroSSL(ゼロエスエスエル)についてまとめています。

ZeroSSL は Let’s Encrypt を無料発行できる Web サイトの一つでしたが、
独自の CA(証明書発行局)になりました。2020年5月にリリースを出しています。

中間証明書の上層は Sectigo になっています。
Sectigo は Comodo から SSL サーバ証明書のブランドを変更していて、
現在有料のサーバ証明書として支持されています。

Sectigo

2020年5月現在、まだ情報が少なめで、証明書の自動化が確立されていないため、
採用しにくい状況に思われます。(現在 2~3 ヶ月毎に Web サイトで更新が必要です)
API・ACME 対応が増えてくる事で、使いやすくなってくるでしょう。


公式サイト

2020年5月現在、Twitter・Facebook・GitHub アカウントも存在しますが、
これらはまだ投稿・公開がありません。


ZeroSSL を採用している関連サイト

SSL For Free

Let’s Encrypt を無料発行できる Web サイトの一つでしたが、
2020年5月より ZeroSSL へ切り替えました。
トップページは従来と一緒ですが、アカウントは ZeroSSL 共通で、
発行そのものは ZeroSSL と同じ Web システムで進行します。


ZeroSSL の無料範囲

Web 上から発行する場合、1 アカウント(メールアヂレス)で
無料発行できる証明書は 90 日期限の証明書 3 つまでとなります。
SSL For Free はシステム共通なので、2 サイト共通で 3 つまです。
他の Web サイトも同じシステムを採用している場合、共通になると見られます。

サードパーティー発行(API および ACME)の場合はこの制限がないかもしれません。

有料プランに移行すると 30 日期限の証明書は無制限になります。
1 年期限の証明書発行はプランによって発行期限があります。


Web 発行・更新手順

SSL サーバ証明書の発行と英語サイトに慣れているのであれば、
問題なく進められるでしょう。SSL for Free も手順は一緒です。

  1. Web サイトのトップページより証明書を発行したいドメイン名を入力します。
    www など、サブドメインがある場合は、明確にそれを含めて下さい。
  2. アカウントを登録します。メールアドレスとパスワードを入力します。
    すでに生成している場合はそれを用いてログインします。
  3. New Cerificate 画面になります。
    入力していたドメイン名が入っているのを確認し、Next Step で進めます。\
  4. 証明書の期限を選択します。無料対象は 90-Daay Certificate です。
  5. CSR & Contact となりますが、証明書に発行者を明記する必要がなければ
    Auto-Generate CSR を有効にした状態でかまいません。有効がデフォルトです。
  6. プランの選択です。Free になっている事を確認します。
  7. ドメインの認証になります。次を選択できます。 ドメイン認証
    • メールアドレス。特定名@ドメイン名 に認証メールが送られます。
    • ネームサーバ。CNAME ゾーンを設定します。
    • HTTP ファイルアップロード。テキストファイルをダウンロードし、サーバへ入れます。
  8. 無事に認証できると、すぐに証明書が発行されます。
    .zip ファイルでダウンロードできます。

ドメイン認証

ZeroSSL では次のいずれかでドメイン認証を行います。

ドメイン情報 WHOIS は参照・使用していないため、
WHOIS プライバシー(名義代行)を解除する必要はありません。

メールアドレス

メールアドレスによる認証は有料のドメイン認証を行う SSL サーバ証明書では
おなじみの認証方法です。Let’s Encrypt はこの認証方法を提供していません。

次のメールアドレスから選択できます。

サブドメインで申請している場合、サブドメインとドメインで選択できます。
選択したメールアドレスに認証メールが送られます。

届いた認証メールには Verification Key が記載されています。
この文字列を Web サイトへ入力して下さい。

ネームサーバ

CNAME ゾーンで指定します。画面に表示されます。

  • Name 申請するドメイン名にサブドメインが付加されています。
    付加されているサブドメインでレコードを追加する事になります。
  • Point To 値として指定します。
    「●●●●.comodoca.com」と表示されています。かなり長い値です。
  • TTL 「3600 (または より小さく)」とあります。
    新規追加になるので、特に影響はありません。

レコードの追加を行った後、Web サイトへ戻って進めて下さい。
ネームサーバによって確認できるのに時間を要するかもしれません。

HTTP ファイルアップロード

.txt ファイルをダウンロードし、
ドメイン名/.well-known/pki-validation/ 内にアップロード、
http://ドメイン名/.well-known/pki-validation/●●●.txt で参照できる状態にします。

Apache で .htaccess を用いている場合など、アップロード先にご注意下さい。


REST API

Documentation - REST API | ZeroSSL

有料アカウントで提供するように記載がありますが、
運営者が確認したところ、無料アカウントでも API アクセスができています。
おそらく API を用いて無制限に証明書を発行する事を考慮しているからでしょう。


サードパーティーでの対応

ACME による発行を行うアプリ・サービスで、
ACME CA エンドポイントを設定・変更できる場合は
ZeroSSL での発行が容易に可能になると思われます。

2020年5月現在 ACME CA エンドポインドがまだ公開されていないため、
まだ使用できません。

Caddy v2

Caddyfile の設定で容易に ZeroSSL への変更が可能と思われます。

ドメイン別は tls 内 ca で ACME CA エンドポイントを設定できます。
これによりドメイン毎に Let’s Encrypt と ZeroSSL の発行を明示できます。

acme_ca で Caddy 管理の全ドメインを ZeroSSL 発行にする事も可能です。


Q&A

Let’s Encrypt より ZeroSSL へ切り替えるメリットは?

ZeroSSL は Web サイトでの場合、
無料で発行できる制限は 90 日期限の証明書 3 つまで、となっています。
これより多くの証明書を要する場合や 1 年期限の証明書は有償です。

Let’s Encrypt は 90 日期限の証明書のみですが、発行数制限はゆるいです。
マルチドメイン証明書やワイルドカード証明書も無料で発行できます。
すでに多くのアプリやサーバ、Web サービスで採用されている実績もあり、
Let’s Encrypt の使用に満足していれば、ZeroSSL の移行は検討しないでしょう。

一方 Public Suffix List に登録されていない不特定多数が使用するサブドメインで、
Let’s Encrypt を使用するとレート制限で発行・更新で不具合が発生する場合、
代わりに ZeroSSL を選択するメリットがあります。

レート制限はありますか?

ZeroSSL では現在のところレート制限を設けていないようです。

その代わりが 1 つのアカウント(メールアドレス)で 90 日証明書が 3 つまで無料でしょう。