当证书与其颁发者捆绑在一起时,Apache 不接受该证书的密钥

当证书与其颁发者捆绑在一起时,Apache 不接受该证书的密钥

我正在为内部网设置证书颁发机构。有一个将安装在所有网络计算机上的根证书、一个由根证书签名的中间证书和一个由中间证书签名的 http 服务器证书。

我需要捆绑 http 和中间证书,以便根证书能够验证它们

#> cat intermediate.crt server.crt > both.crt
#> openssl verify -CAfile root.crt both.crt
OK

但是,我无法将both.crtserver.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.crtintermediate.crt那么 apache 会启动但both.crt不会针对进行验证root.crt

要求是root.crt永久安装,但server.crtintermediate.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

相关内容