SSLは応答を待ち続けます

SSLは応答を待ち続けます

HTTPS を設定しようとしていますが、うまくいかず、何が問題なのかよくわかりません。

私が実行した手順は次のとおりです:

  1. .pem私は証明書(証明書+チェーン)を生成しました暗号化次のコマンドを使用します。

    sudo -H ./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory

応答は次のようになります。

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/xxxx.com/fullchain.pem. Your cert
   will expire on 2016-03-07. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
  1. 秘密鍵を生成しました

    sudo openssl req -new -x509 -days 365 -nodes -out /etc/letsencrypt/live/xxxx.com/fullchain.pem -keyout /etc/letsencrypt/live/xxxx.com/fullchain.key

以下に回答を貼り付けます。

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:xxxx
Locality Name (eg, city) []:xxxx
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxxx
Organizational Unit Name (eg, section) []:xxxx.com
Common Name (e.g. server FQDN or YOUR name) []:test
Email Address []:[email protected]
  1. キーが最後の手順で設定した正しい値を返すことを確認しました。

    sudo openssl x509 -in /etc/letsencrypt/live/xxxx.com/fullchain.pem -noout -subject

以下に回答を貼り付けます。

subject= /C=US/ST=xxxx/L=xxxx/O=xxxx/OU=xxxx.com/CN=test/
[email protected]
  1. 以下にコピーした新しい仮想ホストを設定しました:

    <VirtualHost *:443>
      ServerAdmin [email protected]
      DocumentRoot /var/www/html/xxx1/public
      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined
      ServerName xxxx.com
      SSLEngine on
    
      SSLCertificateFile      /etc/letsencrypt/live/xxxx.com/fullchain.pem
      SSLCertificateKeyFile      /etc/letsencrypt/live/xxxx.com/fullchain.key
    
      <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
      </FilesMatch>
    
      <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
      </Directory>
    
      BrowserMatch "MSIE [2-6]" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
    
  2. 443 ポートを開きました/etc/apache2/ports.conf

これらすべての手順を実行した後、sudo service apache2 restartコンソールは次の操作を実行するまで待機するだけです。

Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.

これをデバッグすると、journalctl -xe次の結果が得られます。

-- Unit apache2.service has begun starting up.
Dec 08 19:12:20 devXxxx apache2[21637]: * Starting web server apache2
Dec 08 19:12:20 devXxxx apache2[21637]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 100.114.32.17. Set the 'ServerName' directive globally to suppress this mes
Dec 08 19:12:20 devXxxx apache2[21637]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:443
Dec 08 19:12:29 devXxxx sudo[21613]: pam_unix(sudo:session): session closed for user root
Dec 08 19:12:29 devXxxx polkitd(authority=local)[996]: Unregistered Authentication Agent for unix-process:21628:9475994 (system bus name :1.109, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, loca
Dec 08 19:12:40 devXxxx apache2[21637]: *
Dec 08 19:12:40 devXxxx apache2[21637]: * The apache2 instance did not start within 20 seconds. Please read the log files to discover problems
Dec 08 19:12:40 devXxxx systemd[1]: apache2.service: Control process exited, code=exited status=1
Dec 08 19:12:40 devXxxx systemd[1]: Failed to start LSB: Apache2 web server.
-- Subject: Unit apache2.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit apache2.service has failed.

Apache がロードしようとしている 20 秒間を観察した後、詳細を説明するように証明書をテストすることにしました。

  1. 証明書が 1 つだけあることを確認します。

    sudo ln -s /etc/letsencrypt/live/xxxx.com/fullchain.pemsudo openssl x509 -hash -noout -in /etc/letsencrypt/live/xxxx.com/fullchain.pem.0

  2. 証明書が機能することを確認します。

    openssl verify -CApath f6361f65.0

しかし驚いたことに、そうはなりません...端末は応答なしで接続を試行し続けます。

誰か助けてくれませんか?

アドバイスありがとうございます。

答え1

まず、何かがすでにポートにバインドされているようです443:

12月08日 19:12:20 devXxxx apache2[21637]: (98)アドレスは既に使用されています: AH00072: make_sock: アドレス [::]:443 D にバインドできませんでした

次に、Lets Encrypt を使用すると、独自の秘密キーを設定する必要はなく、スクリプトによって自動的に秘密キーが生成されます (独自の CSR を手動で生成しない限り)。

スクリプトが完了すると、letsencrypt-auto証明書ディレクトリに 4 つのファイルが作成されます。

  • cert.pem- これはあなたの証明書です。Apache ではSSLCertificateFileこのファイルを指定する必要があります。
  • privkey.pem- これはあなたの秘密鍵です。秘密にしておいてください。Apache ではSSLCertificateKeyFileこのファイルを指定する必要があります。
  • chain.pem- これは信頼を確立する証明書のチェーンです。Apache ではSSLCertificateChainFileこのファイルを指定できます。
  • fullchain.pemcert.pem- これはとの組み合わせなのでchain.pem、証明書とその完全な信頼チェーンです。Apache ではSSLCACertificateFileこのファイルを指定します。

Let's Encrypt ドキュメント

答え2

letsencyptの場合、このコマンドはサーバーを停止せずに動作します

./letsencrypt-auto certonly --webroot -w /websitedir -d www.domain.com

nginx のこのプロセスの後、証明書をリンクできます。

ln -s privkey.pem /etc/ssl/domain.key
ln -s fullchain.pem /etc/ssl/domain.crt

関連情報