Let’s Encryptの証明書取得で「here were too many requests of a given type :: Error creating new order」というエラーが発生したので、このエラーとLet’s Encryptのレート制限について説明しています。
※ 本ページはプロモーションが含まれています。
動作環境は以下になります。
ec2
amazon Linux2(CentOS7系)
Apache2.4
Let’s Encryptの最初のSSL証明書の取得申請と2回目以降の取得申請については別ページに書いていますので、参考にしてください。
Let’s EncryptにSSL証明書の取得の申請し、ウェブサイトをSSL化する【無料で初めてのhttps】
Let’s EncryptのSSL証明書を更新する【手動更新と自動更新】
Let’s EncryptのSSL証明書取得自動化のために色々と試していたら、下のエラーが発生しました。
(--force-renewalオプションをつけると、SSL証明書の有効期限が30日以上あっても、強制的ににSSL証明書を取得することができます。)
$ sudo certbot renew --force-renewal
〜
Attempting to renew cert (独自ドメイン) from /etc/letsencrypt/renewal/(独自ドメイン).conf produced an unexpected error: urn:ietf:params:acme:error:rateLimited :: There were too many requests of a given type :: Error creating new order :: too many certificates already issued for exact set of domains: (独自ドメイン),www.(独自ドメイン): see https://letsencrypt.org/docs/rate-limits/. Skipping.
All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/(独自ドメイン)/fullchain.pem (failure)
There were too many requests of a given type :: Error creating new orderとあるので、リクエスト回数が多すぎと言われているようです。
少し嫌な予感がして、エラーメッセージにあるリンク先の記事を読んでみましたが、レート制限(リクエスト制限)があり、制限にかかると一定期間SSL証明書の取得ができなくなるようです。
そもそもLet’s Encryptには本番環境とステージング環境があります。Let’s EncryptのSSL証明書の有効期限は3ヶ月なので、本来ならSSL証明書の取得申請は3ヶ月に1度でいいはずですが、SSL証明書の取得設定で色々と試したい場合は本番環境の負荷軽減のため、ステージング環境の利用を推奨されています。ステージング環境の利用は、--dry-runオプションを付ければできます。
$ sudo certbot renew --dry-run
そして、--dry-runオプションなしだと本番環境の利用になるわけですが、本番環境では厳し目のレート制限があるので、リクエストを何度もしてレート制限に引っかかると最初に書いたエラーが発生します。
ですので、certbotを使ってLet’s EncryptのSSL証明書取得をテストする際には、まずは--dry-runオプションをつけてステージング環境で試すのがいいです。ステージング環境にもレート制限があるようですが、本番環境と比較すると制限はずっと緩いです。
そして、レート制限に引っかかった場合ですが、基本的にはレート制限が解消される1週間後まで待つ必要があるとの事です。自分の場合も、一週間待ったらSSL証明書の取得がまたできるようになりました。詳細は、下記の公式記事を参考にしてみてください。