Apacheエラーログには、証明書にDHおよびECパラメータが必要です。

Apacheエラーログには、証明書にDHおよびECパラメータが必要です。

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

この行は、指定された秘密鍵が欠落しているか、設定全体が正しく構成されていないことを示します。

関連情報