サーバーの証明書を更新しようとしました。現在のものは1ヶ月前に期限切れになりましたが、私は今までそれを世話しませんでした。
letsencrypt-auto renew
コマンドを使用しようとしましたが、失敗しました:
注:ドメイン/ユーザー/サーバー名を変更しました。
user@vps:~/letsencrypt# ./letsencrypt-auto renew
Updating letsencrypt and virtual environment dependencies.......
Running with virtualenv: Sudo /home/user/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/www.example.com.conf
2016-04-02 07:07:00,862:WARNING:letsencrypt.cli:Attempting to renew cert from /etc/letsencrypt/renewal/www.example.com.conf produced an unexpected error: You've asked to renew/replace a seemingly valid certificate with a test certificate (domains: www.example.com, example.com). We will not do that unless you use the --break-my-certs flag!. Skipping.
All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/www.example.com/fullchain.pem (failure)
1 renew failure(s), 0 parse failure(s)
私は--break-my-certs
フラグを付けて愚かにコマンドを試しました:
user@vps:~/letsencrypt# ./letsencrypt-auto renew --break-my-certs
Updating letsencrypt and virtual environment dependencies...You are using pip version 7.1.2, however version 8.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
....
Running with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt renew --break-my-certs
Processing /etc/letsencrypt/renewal/www.example.com.conf
new certificate deployed with reload of Apache server; fullchain is /etc/letsencrypt/live/www.example.com/fullchain.pem
Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/www.example.com/fullchain.pem (success)
それだと思っていたのですが、自分のウェブサイトに接続しようとしたところ、信頼できない機関から発行されたものだというエラーが出ました。 (ただし、有効期限は問題ありません。)
だから私は最初のコマンドをもう一度試しました:
user@vps:~/letsencrypt# ./letsencrypt-auto renew
Updating letsencrypt and virtual environment dependencies.......
Running with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/www.example.com.conf
The following certs are not due for renewal yet:
/etc/letsencrypt/live/www.example.com/fullchain.pem (skipped)
No renewals were attempted.
しかし、ご覧のとおり、それは機能しません。
Letsencrypt-autoを使用した更新手順は、以前の証明書がletsencrypt-auto 0.4.0以降を使用して発行された場合にのみ正常に機能することに注意してください。証明書が古いletsencrypt-autoバージョンで発行された場合は、最初に行ったのと同じ方法で同じオプションとパラメーターを使用して証明書を再度発行する必要があります。その後、letsencrypt-auto renewは期待どおりに機能します。
とにかく、ドメインを更新しようとしたときに最初に受け取ったメッセージは次のとおりです。
You've asked to renew/replace a seemingly valid certificate with a test certificate (domains: www.example.com, example.com). We will not do that unless you use the --break-my-certs flag!. Skipping.
つまり、ドメインの有効な証明書はありましたが、更新コマンドは、本番サーバーではなくステージングサーバーで証明書を更新しようとしていることを検出しました(注:ステージングサーバーは、letsencryptインフラストラクチャの一部であり、発行するプロセスをテストできますドメインの証明書ですが、偽のCAによって発行されたものです。証明書を確認すると、発行者がFake LE Intermediate X1
であることがわかります。
したがって、更新プロセスを繰り返しながらフラグ--break-my-certs
を使用すると、サイトに接続するどのクライアントも信頼しない偽のCAによって発行された証明書を取得できます。
/etc/letsencrypt/cli.{conf,ini}
、/etc/letsencrypt/renewal/yourdomain.conf
、または最初の証明書を発行するために使用した構成ファイルでいくつかのconfを使用していて、confenでフラグステージングを指定して、letsencrypt-autoが証明書を更新しようとしていると思います本番環境の代わりに使用します。
更新confファイルに対して次のコマンドを実行します。
grep -E 'server\ =|config_file\ =' /etc/letsencrypt/renewal/yourdomain.conf
注:ドメインに複数の証明書を発行し、証明書に含まれるFQDNのサブセットからドメインを追加または削除した場合、yourdomain.conf
の代わりにyourdomain-0001.conf
、yourdomain-0002.conf
などを使用できます。 。
config_fileは、ドメインの構成ファイルを使用しているかどうかを示し、構成ファイルを使用していない場合は、Word Noneと表示されます。
serverは、ステージングサーバーまたは運用サーバーに対して証明書を発行するかどうかを示します。
ステージングの場合は、次のようになります。
server = https://acme-staging.api.letsencrypt.org/directory
プロダクションの場合、次のようになります。
server = https://acme-v01.api.letsencrypt.org/directory
サーバーがステージングを指していることがわかった場合は、ドメインの更新設定ファイルを編集して、本番に変更しますhttps://acme-v01.api.letsencrypt.org/directory
また、config_fileがある場合は、その構成ファイルをチェックして、サーバーオプションが本番環境を指していること、およびステージング、ステージング= True、test-certまたはtest-cert = Trueなどのオプションがないことを確認する必要があります。
ステージングオプションを削除し、config_fileのサーバーを本番サーバーに変更し、configファイルを更新したら、証明書をもう一度更新してみてください。
./letsencrypt-auto renew --force-renewal
最後にドメインの証明書を取得した場合は、お祝いメッセージに注意してください。このメッセージは、証明書が保存されているディレクトリを通知します。証明書への正しいパスを使用して、Webサーバー、メールサーバーなどを構成する場合は、そのことを覚えておいてください。 。
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/yourdomain/fullchain.pem. Your cert
will expire on xxxx-xx-xx. To obtain a new version of the
certificate in the future, simply run Let's Encrypt again.
最新のcertbotを使用してOPと同じ問題が発生しました。判明しました、それはcertbotのせいではありませんでした-それは完全に機能します-更新された証明書を取得するためにウェブサーバーを再起動/リロードすることを忘れないでください!つまり、LetsEncryptがcertbot renew --quiet
cronで、nginxの場合は数分後にウェブサーバーのリロードを追加してください/etc/init.d/nginx reload
同じ問題が発生しました。Webサーバー(Apacheまたはnginx)を再起動する必要があります。
私はcertbot renew --quiet
更新するために。