SSL证书的信任链

大家都知道在互联网上使用的SSL服务器证书需要第三方机构签署。但是证书签署机构不一定会用它的根证书签署你的证书。本人曾碰到用GeoTrust SSL CA签署的证书,但这个是二级证书(intermediate certificate),签署该证书的是GeoTrust Global CA。这个根证书是但多数浏览器很操作系统所信任的。一般而且多数浏览器和服务器并不保存二级证书。如果二级证书没有传到客户端,就无法验证服务器证书的有效性。只有把二级证书也传递到客户端,通过客户端信任GeoTrust Gloabal CA,GeoTrust Global CA信任GeoTrust SSL CA,而Geo SSL CA又信任你的SSL证书构建起的证书的信任链。由此可见,只要服务器证书不是用根证书签署的,就必须让服务器把二级证书也传输到客户端。

在配置服务器传输证书链而非单个证书之前需要生成证书链文件,也可以从CA那里获得。该文件是一些以pem格式的证书文件按照从服务器证书到根证书的顺序叠加在一起。

 

cat your.server.crt geotrust.ssl.ca.pem geotrust.global.ca.pem > your_cert_chain.pem

 然后可以用openssl验证该证书链文件:

openssl verify -CAfile your_cert_chain.pem your_cert.pem

 

Apache里推荐使用SSLCertificateChainFile指令配置证书链文件,也可以用

SSLCertificateFile指令。nginx用ssl_certificate指令即可。

常用的F5加速器配置证书链可以参考该文章

你可能感兴趣的:(SSL证书)