我正在为内部网设置证书颁发机构。有一个将安装在所有网络计算机上的根证书、一个由根证书签名的中间证书和一个由中间证书签名的 http 服务器证书。
我需要捆绑 http 和中间证书,以便根证书能够验证它们
#> cat intermediate.crt server.crt > both.crt
#> openssl verify -CAfile root.crt both.crt
OK
但是,我无法将both.crt
和server.private.key
用于内部网站,因为当 apache 启动时:
Certificate and private key mysite.com:443:0 from /www/both.crt and /www/server.private.key do not match
这是因为intermediate.crt
是中的第一个条目both.crt
。如果我切换和的顺序server.crt
,intermediate.crt
那么 apache 会启动但both.crt
不会针对进行验证root.crt
。
要求是root.crt
永久安装,但server.crt
和intermediate.crt
可能会发生变化,需要由 apache 临时提供。如何构建 apache 接受的证书包?
答案1
将服务器证书作为指令的参数SSLCertificateFile
,将包含所有从属 CA(不包括根 CA)的文件作为 的参数SSLCertificateChainFile
。最后,将服务器证书的私钥作为 的参数SSLCertificateKeyFile
:
SSLCertificateFile /etc/pki/tls/certs/server.pem
SSLCertificateChainFile /etc/pki/tls/certs/bundle.pem
SSLCertificateKeyFile /etc/pki/tls/private/server.key