2017年4月13日木曜日

「letsencrypt」のSSLサーバ証明書発行枚数制限

無償SSLサーバー証明書Let's Encryptの普及とHTTP/2および常時SSL化
を読んで、家のWebサーバ(win版xampp)にも正当なSSLサーバ証明書が欲しいと思っていたけど、対象のコマンド「letsencrypt」がいろいろとwindowsにないコマンドを必要とするので、面倒だし見なかったことにしていた。
しかし、
Windows 10 Creators Updateで「Bash」がバージョンアップ【前編】
を読んで、「これなら挑戦できるかも」と letsencrypt に挑戦してみた。

bash のインストール自体は上記の記事通りで、何の悩みもなくインストール完了。
次は、letsencrypt のインストールだが、この bash は Ubantu ベースなので、すでにaptファイルがあるから、これも
apt-get install letsencrypt
で一撃でインストール完了。
ただし、この apt ファイルには独自のカスタマイズなのか、何らかのしがらみかで、letsencrypt 関連のドキュメントで記載されている「certbot-auto」というコマンド名は「letsencrypt」に読み替える必要がある。

いとも簡単に準備が整ったので、早速、SSLサーバ証明書を発行させてみたら、下記のエラーが出力された。
Error: urn:acme:error:rateLimited :: There were too many requests of a given type :: Error creating new cert :: too many certificates already issued for: mydns.jp
1度の成功体験もなく、いきなりなので面食らったが、要は「ドメイン『mydns.jp』に対するSSLサーバ証明書の発行可能な制限数を超えたので、あなたの要求は却下」ということ。
...で、気になるのは
制限数って?
制限数ってリセットされるの?されるなら、どんなタイミング?
これは
Rate Limits
にちゃんと説明されていて(2017/4/13現在)、

制限数は、1つのドメインに対して、20枚。なお、1枚につき、100個のサブドメインを設定できるので、実質、週に2000個のサブドメインを登録できる。

制限数のリセットは、週ごとでなく、日ごとに行われる。過去7日間さかのぼって、ドメインに対する発行枚数が20枚を切れば、空いた分だけ発行できる。

では、いつ7日間20枚の制限を切るのか知りたくなる。これを調べるには、「crt.sh」で知ることができる。
このフォームに「%.[ドメイン名]」を入力し、「Search」ボタンをクリック。


この例では「*.mydns.jp」の発行履歴が表示されている。
勘が良ければ、これですべて判る。ただし、注意するのは、「1枚に対して100個までサブドメインを設定できる」点だ。「crt.sh ID」欄が同じIDなのは1枚ということになるので、枚数計算時にはよく見ること。


この結果を見れば、イラっとくるのが
「uso800.mydns.jp」(5枚発行)
「mail.ninsan.mydns.jp」(3枚発行)
となる。
また、「hippo.hippowanderer.mydns.jp」と「www.hippowanderer.mydns.jp」は1枚で発行されていることが判る。

で、7日間20枚分さかのぼると、「zyxion.mydns.jp」のエントリになる。
この「Logged At」欄が「2017-04-09」なので、1週間後「2017-04-16」になれば、「2017-04-09」登録分のエントリがリセットされ、8枚発行可能なことが判る。

つまり、「4/16の何時かまでは分からないが、先着8枚なので心して待機しろ」だ。


<2017/4/15 追記>
うーん、どうもこのルールの解釈は間違ってるかなぁ。
4/12以降4/16までに、新たな登録履歴がある。



再発行の要求は、「rateLimited」の制限にかからないようだけど、この発行履歴に記載されるので制限数20枚に含まれるのかなぁ。
こうなってくると、同じFQDNでも、更新なのか、改めて新規取得なのかとか、カオスだ。
この発行履歴で単純に算出することはできないようだ。
取得できるまで毎日、GMT 00:00(JST 09:00)以降に根気よく試すのがいいのだろう。

0 件のコメント:

コメントを投稿