web-dev-qa-db-ja.com

Let's Encrypt / CertbotでTLS-SNI-01チャレンジに合格できない-修正方法は?

Ubuntu14.04LTSを実行しています。 certbotが14.04にないので、EFFWebサイトからcertbot-autoを取得しました。

私はそれを実行してみました

certbot-auto --Apache -d my.domain

また、TLS-SNI-01チャレンジ中に、次のメッセージで常にタイムアウトになります。

Failed authorization procedure. my.domain (tls-sni-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Failed to connect to ww.xx.yy.zz:443 for TLS-SNI-01 challenge

Opensslのs_serverコマンドを実行し、外部の場所からs_server「サーバー」に正常に接続することで、インバウンドTLSがブロックされていないことを確認しました。

/var/log/Apache2/error.logを見ると、certbot-autoが一時的に設定しようとしているdocrootが見つからないという疑わしい警告が表示されます(私は推測します)。

[Tue Dec 06 00:34:02.306032 2016] [mpm_prefork:notice] [pid 19521] AH00171: Graceful restart requested, doing restart
[Tue Dec 06 00:34:03.001014 2016] [mpm_prefork:notice] [pid 19521] AH00163: Apache/2.4.7 (Ubuntu) configured -- resuming normal operations
[Tue Dec 06 00:34:03.001094 2016] [core:notice] [pid 19521] AH00094: Command line: '/usr/sbin/Apache2'
[Tue Dec 06 00:34:14.596461 2016] [mpm_prefork:notice] [pid 19521] AH00171: Graceful restart requested, doing restart
AH00112: Warning: DocumentRoot [/var/lib/letsencrypt/tls_sni_01_page/] does not exist
[Tue Dec 06 00:34:14.661372 2016] [ssl:warn] [pid 19521] AH01906: RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Tue Dec 06 00:34:15.000674 2016] [mpm_prefork:notice] [pid 19521] AH00163: Apache/2.4.7 (Ubuntu) OpenSSL/1.0.1f configured -- resuming normal operations
[Tue Dec 06 00:34:15.001293 2016] [core:notice] [pid 19521] AH00094: Command line: '/usr/sbin/Apache2'

/var/log/letsencrypt/letsencrypt.logには、次のように表示されますが、これは完全に合理的に見えます。

2016-12-06 05:34:13,247:INFO:certbot.auth_handler:Performing the following challenges:
2016-12-06 05:34:13,268:INFO:certbot.auth_handler:tls-sni-01 challenge for mydomain.com
2016-12-06 05:34:13,359:INFO:certbot_Apache.configurator:Enabled Apache socache_shmcb module
2016-12-06 05:34:13,520:INFO:certbot_Apache.configurator:Enabled Apache ssl module
2016-12-06 05:34:14,345:DEBUG:certbot_Apache.tls_sni_01:Adding Include /etc/Apache2/le_tls_sni_01_cert_challenge.conf to /files/etc/Apache2/Apache2.conf
2016-12-06 05:34:14,351:DEBUG:certbot_Apache.tls_sni_01:writing a config file with text:
 <IfModule mod_ssl.c>
<VirtualHost *>
    ServerName b103a17811594b35d3ade8eb763c8c42.74b423d383109b22eaecca3ea14cd1f7.acme.invalid
    UseCanonicalName on
    SSLStrictSNIVHostCheck on

    LimitRequestBody 1048576

    Include /etc/letsencrypt/options-ssl-Apache.conf
    SSLCertificateFile /var/lib/letsencrypt/mRH5i2aIrWMqjsZn3jMXvdNnYV5Ejd0GBtcDoIJqQ4U.crt
    SSLCertificateKeyFile /var/lib/letsencrypt/mRH5i2aIrWMqjsZn3jMXvdNnYV5Ejd0GBtcDoIJqQ4U.pem

    DocumentRoot /var/lib/letsencrypt/tls_sni_01_page/
</VirtualHost>

</IfModule>

/var/lib/letsencryptの実行中にcertbot-autoを見ると、tls_sni_01_pageが作成されているのがわかりません。これが私が見るシーケンスです-一時ディレクトリといくつかの一時証明書が作成され、チャレンジが失敗すると削除されますが、tls_sni_01_pageは決してありません

/var/lib/letsencrypt$ ls
backups
/var/lib/letsencrypt$ ls
backups
/var/lib/letsencrypt$ ls
backups
/var/lib/letsencrypt$ ls
backups  temp_checkpoint
/var/lib/letsencrypt$ ls
backups  temp_checkpoint
/var/lib/letsencrypt$ ls
backups  e1pvy9TgUvOmBxC4dlkwG5Ly2mTY0DU63qhUFpBik2Y.crt  e1pvy9TgUvOmBxC4dlkwG5Ly2mTY0DU63qhUFpBik2Y.pem  temp_checkpoint

また、/etc/letsencrypt/options-ssl-Apache.confを変更して、ログレベルをDEBUGに設定し、その一時的な仮想ホストログを独自のエラーログとアクセスログに設定しました。エラーログには出力が表示されますが、問題はありませんが、アクセスログには何も表示されません。

tcpdump -n port 443を実行してみましたが、doリモートマシンからの何らかの接続試行が表示されます。

09:14:44.388328 IP 66.133.109.36.48890 > w.x.y.z.443: Flags [S], seq 1627589669, win 29200, options [mss 1460,sackOK,TS val 2834688174 ecr 0,nop,wscale 7], length 0
09:14:44.388435 IP w.x.y.z.443 > 66.133.109.36.48890: Flags [S.], seq 773250860, ack 1627589670, win 28960, options [mss 1460,sackOK,TS val 424229197 ecr 2834688174,nop,wscale 7], length 0
09:14:44.451190 IP 66.133.109.36.48890 > w.x.y.z.443: Flags [.], ack 1, win 229, options [nop,nop,TS val 2834688237 ecr 424229197], length 0
09:14:44.451546 IP 66.133.109.36.48890 > w.x.y.z.443: Flags [P.], seq 1:220, ack 1, win 229, options [nop,nop,TS val 2834688237 ecr 424229197], length 219
09:14:44.451619 IP w.x.y.z.443 > 66.133.109.36.48890: Flags [.], ack 220, win 235, options [nop,nop,TS val 424229216 ecr 2834688237], length 0
09:14:44.454461 IP w.x.y.z.443 > 66.133.109.36.48890: Flags [P.], seq 1:393, ack 220, win 235, options [nop,nop,TS val 424229217 ecr 2834688237], length 392
09:14:44.454626 IP w.x.y.z.443 > 66.133.109.36.48890: Flags [F.], seq 393, ack 220, win 235, options [nop,nop,TS val 424229217 ecr 2834688237], length 0
09:14:44.517433 IP 66.133.109.36.48890 > w.x.y.z.443: Flags [.], ack 393, win 237, options [nop,nop,TS val 2834688303 ecr 424229217], length 0
09:14:44.517481 IP 66.133.109.36.48890 > w.x.y.z.443: Flags [P.], seq 220:227, ack 394, win 237, options [nop,nop,TS val 2834688303 ecr 424229217], length 7
09:14:44.517514 IP 66.133.109.36.48890 > w.x.y.z.443: Flags [F.], seq 227, ack 394, win 237, options [nop,nop,TS val 2834688303 ecr 424229217], length 0
09:14:44.517544 IP w.x.y.z.443 > 66.133.109.36.48890: Flags [.], ack 228, win 235, options [nop,nop,TS val 424229235 ecr 2834688303], length 0

一体何が起こっているのか考えはありますか?誰もがこれをUbuntu14.04LTSとapacheで動作させることができますか?

1
QuantumMechanic

私はこれを数時間戦い、ログに同じ出力を付けました。私は自分の答えに出くわしただけです。別のwebconfigからコードを貼り付けましたが、すでに<virtual Host _._._._:443>その中のセクション。私はそれを変更しましたが、そのままにしました。その443セクションを削除した後、Sudo certbot-auto --Apache -d example.comエラーなしで実行され、作業サイトがありました。

私の経験からのみ結論を導き出します。ポート80の仮想ホストのみがあることを確認してください。私が読んだドキュメントのどこにもこの問題については言及されていませんが、certbotは443仮想ホストセクションを変更できず、1つしか追加できないようです。

編集-2017年12月サイトでcertbotを実行できるようになりました-available.conf with <virtual Host *:443>それらの中で。私のカスタム変更はすべてそのまま維持されました。私の唯一の不満は、証明書のパス行がインデントされていないことです。 <ため息>ああ、まあ!</ため息>

2
wruckie

スタンドアロンのチャレンジ検証を試すことができます。これはApacheをバイパスし、certbotがWWWルートに適切なファイルを作成しないという問題を解決する可能性があります。

  1. apacheを停止します
  2. 実行certbot-auto --standalone-supported-challenges tls-sni-01 -d my.domain
  3. 取得した証明書を適切な場所にインストールします(おそらく/etc/Apache2/ssl
  4. apacheを起動してテストします
1