非公開サーバーのLet's Encrypt証明書を取得するにはどうすればよいですか?


9

StartSSL証明書を使用して、ポート443のLANからのみ到達可能なプライベートApacheサーバーがあります。

Firefox 51がリリースされてから、StartSSLルート証明書がトラストストアから削除されたため、Firefox 51に接続できなくなりまし

Let's Encryptへの移行を検討しましたが、公開されているHTTPサーバーが必要なようです。私の状況でLet's Encryptを使用することは可能ですか?

可能であれば、SSL証明書の支払いは避けたいと思います。

回答:


10

ドメインのDNSを制御している場合は、dns-01チャレンジ方式を使用して、TXTレコードを作成することで所有権を証明できます。

これは手動または自動で実行できます。公式のcertbotクライアントでさえ、dns-01をサポートすると思います。

簡単なGoogleでは、さまざまなスクリプトとクライアントを使用した一連のチュートリアルを示しているので、ここではそれらのすべてを繰り返すことはしません。これは特にイントラネット証明書を自動化します。


それが本当にイントラネットで機能することを確信していますか?certbotが実行されているホストの/etc/resolv.confを単に上書きするとどうなりますか?
peterh-モニカを2017年

@peterhはい、ドキュメントに従ってイントラネット上で動作します。
BE77Y 2017年

@peterh resolv.confを上書きして何を試みているのかわかりません。certbotクライアントではなくLet's Encrypt検証サーバーがレコードを解決できる必要があるため、TXTレコードはパブリックDNSで作成する必要があります。それがすべてローカルで発生した場合、検証はあまり価値がありません。ただし、証明書が発行されるサーバーは完全にプライベートにすることができます。
Martijn Heemels

@MartijnHeemelsさて、今、この古いコメントはもう理解できません。すべての* .intranet.mydomainリクエストに対して、パブリックIPを使用して3つ目のサーバーを表示することで、DNSをだましてletencryptでイントラネット証明書を作成しますが、それは、letsencryptの送信DNSサーバーに対してのみです。着信DNSトラフィックをtcpdumpしてIPを取得しました。Bind9にはそのためのいわゆる「ビュー」があります。したがって、この3番目のサーバーは、そのために調整されたトリッキーなapache構成で* .intranet.mydomain証明書を取得できます。その後、rsyncスクリプトを使用してキーをイントラネットにミラーリングできます。
peterh-モニカを

@MartijnHeemelsこれは、当時、letsencryptのゾーンベースの認証を自動化するのに問題があったためです。たぶんそれはうまくいくかもしれませんが、正直なところ、私は一般的にletsencryptに非常に満足していません(まあ...自動化の問題があるので、もちろん存在することを非常に嬉しく思います)もう一度動作させたくありません、私が一度大丈夫にしたこと。(私たちは皆、このような「改善する」タスクについてのボスの態度を知っていると思います。)
peterh-モニカを

5

certbotクライアントには、手動でDNSチャレンジを実行する機能があります。この質問で見つかった(現在2番目に人気のある)答えは、「Let's Encrypt DNSチャレンジ検証を使用する方法?」すべての詳細があり、動作するようにテストしました。

基本的に、このコマンドを実行し、指示に従います。

certbot -d site.your.dom.ain --manual --preferred-challenges dns certonly

0

あなたはApacheを使用していると述べましたが、それに縛られていなければ、Caddyserverを使用して非常に簡単な方法が可能です

そこで定義する必要があるのCaddyfileは、次の内容だけです。

example.com
tls {
    dns cloudflare
}

configで使用しているDNSプロバイダーについて言及し、環境変数を介してAPIキーを構成します。docsのサポートされているプロバイダーのリストから描画します。

必要なのはそれだけです。最初の起動時の出力は次のようになります。

Activating privacy features... 2019/10/21 13:36:48 [INFO][cache:0xc0001c8190] Started certificate maintenance routine
[INFO][cache:0xc000092730] Started certificate maintenance routine
2019/10/21 13:24:49 [INFO][example.com] Obtain certificate
2019/10/21 13:24:49 [INFO] [example.com] acme: Obtaining bundled SAN certificate
2019/10/21 13:24:50 [INFO] [example.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/876706285
2019/10/21 13:24:50 [INFO] [example.com] acme: Could not find solver for: tls-alpn-01
2019/10/21 13:24:50 [INFO] [example.com] acme: Could not find solver for: http-01
2019/10/21 13:24:50 [INFO] [example.com] acme: use dns-01 solver
2019/10/21 13:24:50 [INFO] [example.com] acme: Preparing to solve DNS-01
2019/10/21 13:24:50 [INFO] cloudflare: new record for example.com, ID XXX
2019/10/21 13:24:50 [INFO] [example.com] acme: Trying to solve DNS-01
2019/10/21 13:24:50 [INFO] [example.com] acme: Checking DNS record propagation using [127.0.0.11:53]
2019/10/21 13:24:50 [INFO] Wait for propagation [timeout: 2m0s, interval: 2s]
2019/10/21 13:24:50 [INFO] [example.com] acme: Waiting for DNS record propagation.
2019/10/21 13:24:52 [INFO] [example.com] acme: Waiting for DNS record propagation.
2019/10/21 13:24:55 [INFO] [example.com] The server validated our request
2019/10/21 13:24:55 [INFO] [example.com] acme: Cleaning DNS-01 challenge
2019/10/21 13:24:55 [INFO] [example.com] acme: Validations succeeded; requesting certificates
2019/10/21 13:24:56 [INFO] [example.com] Server responded with a certificate.
done.

Serving HTTPS on port 443
https://example.com

2019/10/21 13:36:48 [INFO] Serving https://example.com

Serving HTTP on port 80
http://example.com

2019/10/21 13:36:48 [INFO] Serving http://example.com
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.