Network SolutionsのWebサイト用のSSL証明書があります。 Apache/OpenSSLをバージョン2.4.9にアップグレードした後、HTTPDの起動時に次の警告が表示されます。
AH02559: The SSLCertificateChainFile directive (/etc/httpd/conf.d/ssl.conf:105) is deprecated, SSLCertificateFile should be used instead
mod_sslのApacheマニュアル によると、これは実際にそうです:
SSLCertificateChainFileは廃止されました
SSLCertificateChainFileはバージョン2.4.8で廃止され、SSLCertificateFileが拡張されてサーバー証明書ファイルから中間CA証明書もロードされるようになりました。
SSLCertificateFile のドキュメントを検索すると、SSLCertificateChainFileへの呼び出しをSSLCertificateFile。
この変更により、私のssl.confは次のようになりました。
SSLCertificateFile /etc/ssl/STAR.EXAMPLE.COM.crt
SSLCertificateKeyFile /etc/ssl/server.key
SSLCertificateChainFile /etc/ssl/Apache_Plesk_Install.txt
これに:
SSLCertificateFile /etc/ssl/STAR.EXAMPLE.COM.crt
SSLCertificateFile /etc/ssl/Apache_Plesk_Install.txt
SSLCertificateKeyFile /etc/ssl/server.key
...しかし、これは機能しません。 Apacheは単にエラーメッセージなしで起動を拒否します。
私はmod_sslやSSL証明書一般にあまり詳しくないので、ここで他に何を試すべきかわかりません。 Apache_Plesk_Install.txtファイルを追加してInternet ExplorerがサイトにSSL警告を表示しないようにする必要があったことを覚えていますが、それ以外には手掛かりがありません。
どんな助けでも大歓迎です。ありがとう。
同じ問題がありました。 /etc/Apache2/site-enabled/default-ssl.conf
でこれらの行を置き換えました
SSLCertificateFile /etc/ssl/certs/domain.crt
SSLCertificateKeyFile /etc/ssl/private/domain.key
#SSLCertificateChainFile /etc/Apache2/ssl.crt/chain.crt
ご覧のとおり、SSLCertificateChainFile
をコメントアウトしました。次に、あなたと同じエラーが表示されたので、次のようにchain.crt
のdomain.crt
最後にのコンテンツを連結しました。
root@Host~: cat /etc/Apache2/ssl.crt/chain.crt >> /etc/ssl/certs/domain.crt
そしてそれは魅力のように働きました。
次のスクリプトを使用して、チェーンされた証明書を含む証明書バンドルを作成します。
#!/bin/sh
#
# Convert PEM Certificate to ca-bundle.crt format
#
test ! $1 && printf "Usage: `basename $0` certificate" && exit 1
# Friendly Name and Underline Friendly Name with equal signs
openssl x509 -in $1 -text -noout | sed -e 's/^ *Subject:.*CN=\([^,]*\).*/\1/p;t c' -e 'd;:c' -e 's/./=/g'
# Output Fingerprint and swap = for :
openssl x509 -in $1 -noout -fingerprint | sed -e 's/=/: /'
# Output PEM Data:
echo 'PEM Data:'
# Output Certificate
openssl x509 -in $1
# Output Certificate text swapping Certificate with Certificate Ingredients
openssl x509 -in $1 -text -noout | sed -e 's/^Certificate:/Certificate Ingredients:/'
これを使用するには、サーバー証明書から始めて、証明書チェーン内の中間証明書を順番に経由してルート証明書に戻ります。
./bundle.sh myserver.crt >myserver.chain
./bundle.sh intermediate.crt >>myserver.chain
./bundle.sh root.crt >>myserver.chain
ここで、適切な証明書名が実際の証明書名に置き換えられます。
サイト証明書、中間体、SSLCertificateFileディレクティブで指定されたファイル、およびSSLCertificateKeyFileで指定されたファイルに連結された秘密鍵を用意してください。証明書と同じファイルに秘密鍵を含めることもできますが、お勧めしません。詳細については、ドキュメントを確認してください:
http://httpd.Apache.org/docs/current/mod/mod_ssl.html#sslcertificatefile
証明書の検証が設計どおりに機能するためには、クライアントがルートCA証明書を信頼されている必要があるため、ルートCA証明書はSSLCertificateFileの一部ではないことをお勧めします。
また、Apacheエラーログに何もない場合は、エラーログを http://httpd.Apache.org/docs/current/mod/coreのように、さらに細かく設定できます。 .html#loglevel