Let's Encrypt 証明書の生成と更新

Let's Encrypt 証明書の生成と更新

私のドメインは (例): mydomain.eu で、np-ip を使用して動的 IP と同期されています。
社内には、ポート 80/443 をリスニングする Web サーバーがあり、certbot を使用して Let's Encrypt から新しいワイルドカード証明書を取得し、DNS レコード (txt) とともに展開しています。

それで十分だと思いますが、違います...
別のサーバー (cname mydomain.eu : cloud.mydomain.eu e mail.mydomain.eu) の証明書が必要で、プロバイダー パネルで cname を設定しました。

また、Nextcloudでクラウドサーバーをセットアップし、このサーバーの証明書を取得したいと考えています。certbotは80と443のポートを必要としますが、Ncserverはポート81と1443でリッスンするため、エラーが発生します。将来的には、別のポートもリッスンする内部Webメールを作成する予定です。

内部設定

Example:
WEBSERVER # www.mydomain.eu - nginx - ip xxx.xxx.xxx.50 --> port 80/443
NEXTCLOUD # cloud.mydomain.eu - apache - ip xxx.xxx.xxx.51 -> port 81/1443
MAIL # mail.cloud.mydomain.eu - nginx/apache - ip xxx.xxx.xxx.52 -> port 82/2443

Nginx Web サーバーの構成:

ssl_certificate /etc/letsencrypt/live/mydomain.eu/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.eu/privkey.pem;

server {
listen 80;
listen [::]:80;
server_name *.mydomain.eu;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name *.mydomain.eu;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}

server {
listen 80;
listen [::]:80;
server_name cloud.mydomain.eu;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name cloud.mydomain.eu;

location / {
proxy_pass http://xxx.xxx.xxx.51:1443;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}

txt各サーバーの証明書(またはワイルドカード証明書)を取得するためのベストプラクティスは何ですか? 3か月ごとにレコードを展開せずに証明書を更新するためにcronを有効にすると良いでしょう。

答え1

すべてのドメインが同じホスト上にある場合は、他の構成で同じファイルを使用するだけです (ワイルドカード証明書が使用可能であるとおっしゃっています)...

1 つのワイルドカードを複数のサービスで (再) 使用するか、サブドメインごとに追加の証明書を使用するかは、ユーザー次第です。いずれにしても、ワイルドカード証明書があり、それを自動的に更新する予定の場合は、DNS トークン検証 (TXT レコード) が必要です。ドメインが DNS を使用して検証されると、証明書を取得するためにサーバーを実行する必要さえありません... したがって、「ドメインごと」の証明書の場合は、ドメインの DNS 検証を使用できるため、非標準ポートは問題になりません。

とにかく、ワイルドカード証明書の場合、すべてを標準の 80/443 ポートに配置する方が簡単ではないでしょうか? 最近では、SNI (ポートを共有し、要求コンテンツに基づいて区別する) に問題はありません。その場合、ワイルドカード証明書を処理し、トラフィックをバックエンド (nginx、apache httpd など) に渡すリバース プロキシ (例: haproxy) を 1 つ持つことができます。

--- 編集 - 2020年1月19日 : 22:40 CET ---

DNS プロバイダーが「簡単な」 DNS 更新を提供していない場合は、必要な「サブドメイン」をシステムに委任し、この動的更新 (TXT レコード) の場合に備えて、多かれ少なかれローカル DNS サーバーを実行することができます。

ドメインを仮定する例.comそして、更新されたFQDNを持つローカルノードローカル-example.com.noip.comあなたのシステムを指します。レジストラのシステムでは、静的記録を行うことができます。

_acme-challenge.example.com. 3600 IN NS local-example.com.noip.com.

この方法では、example.comドメインのDNSトークンをローカルシステムに簡単に委任できます。そこで、設定されたドメインでローカルDNSサーバー(例:bind)を実行できます。_acme-challenge.example.comここで、TXT レコードをローカルで更新できます。このドメインには A も AAAA も有効なレコードがないため、少なくとも TXT については SOA、NS、および動的更新のみであることに注意してください ;-)。

関連情報