web-dev-qa-db-ja.com

証明書ボットは失敗します。既存の本番サーバーを置き換える新しいサーバーでLet’s Encrypt証明書ボットを有効にする

Let’s EncryptがCertbotを使用して提供したSSL証明書を備えたnginxウェブサーバーがあります。たとえば、このサイトは一般公開されています https://example.com

新しいサーバー
すべてが正しくセットアップおよび展開されたら、既存のサーバーを置き換える新しいサーバーを作成しています。

すべての設定中に https://beta.example.com で利用可能にして、承認が得られたら https://example.com で利用可能にしたい。

https://beta.example.com は、他のサーバーがそのサブドメインのサイトにサービスを提供していないため、現在使用できる可能性がありますが、example.comは、最終的にDNSレコードを更新したときにのみ機能します。

新しいサーバーの準備ができるまで、既存のWebサーバーに影響を与えずに続行できることは明らかです。

最終的に引き継ぐ準備として、新しいサーバーのSSL証明書を作成するにはどうすればよいですか?

ドメインの確認に関する問題
certbotを実行すると、検証の一部として https://example.com にアクセスしようとしますが、そのドメインが既存のサーバーのIPアドレスをポイントしているため失敗します。

承認手続きに失敗しました。 example.com(tls-sni-01):urn:acme:error:tls ::サーバーはドメインの検証中にTLSエラーが発生しました::リモートエラー:tls:ハンドシェイクの失敗

重要な注意:
-サーバーから次のエラーが報告されました:

ドメイン:example.com
タイプ:tls
詳細:リモートエラー:tls:ハンドシェイクエラー

これらのエラーを修正するには、ドメイン名が正しく入力されており、そのドメインのDNS A/AAAAレコードに正しいIPアドレスが含まれていることを確認してください。さらに、サーバーがCertbotクライアントと通信できるようにする最新のTLS構成があることを確認してください。

私がやろうとしていることを考えると、それを解決する適切なプロセスはありますか?

5
Turgs

リバースプロキシを使用してみてください。 example.comを所有する古いサーバー上に2つの仮想ホストを作成し、そこにbeta.example.comをダイレクトします。 beta.examply.comを使用する仮想ホストは、HTTPSを介して実際のサーバーへのHTTPSおよびリバースプロキシ要求を削除する必要があります。両方の仮想ホストは同じ証明書を使用します。今のところ、すべてのLetsencryptの停止は古いサーバー上にあります。

準備ができたら、証明書を新しいサーバーにコピーし、DNSを更新して、それが解決するのを待ちます(少なくともDNS TTL秒の場合)。すべての要求が新しいサーバーに到達しているのを確認したら、物事を逆転させることも、単にLetsencryptのものを移動して完全に新しいものに移動することもできます。

8

beta.example.comを使用して、ドメインexample.comのLetsencrypt証明書を検証することはできません。

example.comを実行しているサーバーから現在の証明書ファイルをコピーして、beta.example.comを実行しているサーバーに配置できます。 Linuxベースのシステムを使用している場合、これらのファイルは/etc/pki/tls/certs/フォルダーにあります。

3
Mehmet

証明書を新しいサーバーにコピーすることを推奨する他の回答に加えて、certbot構成もコピーする必要があります。これにより、更新プロセスが期待どおりに機能し続けることが保証されます。

私にとって、これらのファイルは/etc/letsencryptにあります。コピー(rsync -a)中は、ファイルのアクセス許可とシンボリックリンクを必ず保持してください。

また、cronjobsまたは証明書の更新に使用するものをセットアップすることも忘れないでください。新しいサーバーに切り替えたら、certbot renew --dry-runを使用して更新プロセスをテストできます。

2
Alex bGoode