LetsEncryptから新しいSSL証明書を受け取ってから7時間Apache Webサーバーを起動しようとしました。 ECDSA 証明書を取得しましたが、まだサーバーを起動できません。ログは次のとおりです。
[Thu Mar 29 19:23:43.839012 2018] [ssl:emerg] [pid 19908:tid 140570990629824] SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: DH PARAMETERS) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?
[Thu Mar 29 19:23:43.839038 2018] [ssl:emerg] [pid 19908:tid 140570990629824] SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: EC PARAMETERS) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?
[Thu Mar 29 19:23:43.839069 2018] [ssl:emerg] [pid 19908:tid 140570990629824] SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned
[Thu Mar 29 19:23:43.839086 2018] [ssl:emerg] [pid 19908:tid 140570990629824] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error.log for more information
AH00016: Configuration Failed
VirtualHostsのSSL設定は次のとおりです。
ServerName site.example.com
SSLCipherSuite HIGH:!MD5:!aNULL
SSLHonorCipherOrder on
SSLCompression off
SSLProtocol all -SSLv2 -SSLv3
Header add Strict-Transport-Security "max-age=15768000"
SSLCertificateFile /etc/letsencrypt/ecdsa/site.example.com/0001_chain.pem
SSLCertificateKeyFile /etc/letsencrypt/ecdsa/site.example.com/privkey.pem
答え1
少し遅れましたが、同じエラーメッセージに対する答えを見つけて解決策を見つける間にこのページを見つけました。私のようにhttpd-2.2からVirtualHost設定を継承した場合、問題はないと確信しています。 opensslに問題がない可能性があります。ちなみに、私のシステムにはdhparams.pemファイルはありません。これはhttpd-2.4の場合は少し異なるようです。最初のヒント:VirtualHost定義には依存しなくなりました。あなた〜しなければならない次のように、conf.d/ssl.confで有効な証明書/キーペアを参照してください(場所は私のFedoraシステム用です)。
SSL証明書ファイル/etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.pem
私はhttpd-2.2/openssl-1.0.2hから継承された自己署名証明書です。証明書はASCII PEM形式です。鍵が RSA 汎用コピーに変換されたため、httpd を起動するときにパスワードは必要ありません。 (これを行う前に環境を慎重に評価してください。)証明書が作成されたものは重要ではないようです。これは、クライアントに提供されるVirtualHostセクションで定義された証明書であるためです。私にとって、この証明書(httpd-2.2から継承されています)はPEMの短い形式であり、対応するキーもRSA一般コピー形式です。もちろん、mod_ssl.soをロードする必要がありますが、httpd-2.2で動作する場合はすでにロードしています。
答え2
[Thu Mar 29 19:23:43.839012 2018] [ssl:emerg] [pid 19908:tid 140570990629824] SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: DH PARAMETERS) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?
この行は、DHパラメータを使用した可能性があることを示しています。たとえば、次のようになります。
/etc/ssl/dhparams.pem
問題は、DHセキュリティを強化し、このファイルを次のように使用したい場合です。
sudo openssl dhparam -out /etc/ssl/dhparams.pem.new 4096
sudo service apache2 stop
sudo mv /etc/ssl/dhparams.pem.new /etc/ssl/dhparams.pem
sudo service apache2 start
dhparams.pem
非標準の場所にファイルを保存する場合は、Apache設定にファイルパスを指定する必要があります。たとえば、次のようになります。
/etc/apache2/mods-enabled/ssl.conf
次のように:
# Use my own generated DH Parameters file 4096 bits long
SSLOpenSSLConfCmd DHParameters "/etc/ssl/dhparams.pem"
[Thu Mar 29 19:23:43.839038 2018] [ssl:emerg] [pid 19908:tid 140570990629824] SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: EC PARAMETERS) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?
この行は、ECDHParametersを使用した可能性があることを示しています。
IMHO、自動設定を維持することをお勧めします。
SSLOpenSSLConfCmd ECDHParameters Automatic
詳細についてはを参照してくださいman ecparam
。個人的にこのゲームをするには説得力のある理由はありません。
[Thu Mar 29 19:23:43.839069 2018] [ssl:emerg] [pid 19908:tid 140570990629824] SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned
この行は、指定された秘密鍵が欠落しているか、設定全体が正しく構成されていないことを示します。