Apache 2.4.8+でのSSLCertificateChainFile非推奨の警告


14

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_sslApacheマニュアルによると、これは確かにそうです。

SSLCertificateChainFileは非推奨です

SSLCertificateChainFileは、SSLCertificateFileがサーバー証明書ファイルから中間CA証明書もロードするように拡張されたときに、バージョン2.4.8で廃止されました。

ドキュメント見上げるSSLCertificateFileを、私はちょうどに私の呼び出し置き換えるために必要なように、それが見えたSSLCertificateChainFileSSLCertificateFileを

この変更により、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証明書全般にそれほど詳しくないので、ここで他に何を試すべきかわかりません。サイトにSSL警告を表示しないようにInternet ExplorerのApache_Plesk_Install.txtファイルを追加する必要があったことを覚えていますが、これ以外には手がかりがありません。

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


6
あなたはすべての証明書、クライアント証明書と中間証明書(s)は連結する必要がある
dawud

回答:


9

同じ問題がありました。私はこれらの行を/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 、の最後にmyのコンテンツを連結しましたdomain.crt

root@host~: cat /etc/apache2/ssl.crt/chain.crt >> /etc/ssl/certs/domain.crt

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


apache configのコメントによると、完全に有効です:「代わりに#参照されたファイルは、便宜上CA証明書がサーバー証明書に直接追加される場合、SSLCertificateFile#と同じになることがあります。」
ピーナッツパワー

6

次のスクリプトを使用して、連鎖証明書を含む証明書バンドルを作成します。

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

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


4

SSLCertificateFileディレクティブで指定されたファイルにサイト証明書、中間証明書、およびSSLCertificateKeyFileで指定されたファイルに連結された秘密キーを用意します。すべて設定する必要があります。証明書と同じファイルに秘密鍵を含めることもできますが、お勧めできません。詳細については、マニュアルを確認してください:
http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslcertificatefile
クライアントが持っているはずなので、私は、ルートCA証明書がSSLCertificateFileの一部ではないことをお勧めします証明書の検証が設計どおりに機能するために、信頼されたルートCA証明書。
また、Apacheエラーログに何も含まれていない場合は、エラーログを次のように細かい粒度に設定できます。http://httpd.apache.org/docs/current/mod/core.html#loglevel


1
本当に?秘密鍵?それは悪い考えのようです。ただ不思議に思うのは、これは個人的なものだという私の強い仮定だからです。
ssl 14

2
あなたは正しいです-物事は私がドキュメントから覚えていたものと、これらの2つのディレクティブのhttpd-ssl.confファイルに存在するドキュメントからも変わりました。許可されていますが、SSLCertificateFileで指定されたファイルに秘密キーを含めることは推奨されません。この事実に応えるために、返信が編集されるようになりました。
Khanna111 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.