web-dev-qa-db-ja.com

Apache 2.4.8以降でのSSLCertificateChainFile非推奨警告

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警告を表示しないようにする必要があったことを覚えていますが、それ以外には手掛かりがありません。

どんな助けでも大歓迎です。ありがとう。

15
DOOManiac

同じ問題がありました。 /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.crtdomain.crt最後にのコンテンツを連結しました。

root@Host~: cat /etc/Apache2/ssl.crt/chain.crt >> /etc/ssl/certs/domain.crt

そしてそれは魅力のように働きました。

9
user306141

次のスクリプトを使用して、チェーンされた証明書を含む証明書バンドルを作成します。

#!/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

ここで、適切な証明書名が実際の証明書名に置き換えられます。

6
sweetfa

サイト証明書、中間体、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

4
Khanna111