为了在 ubuntu 上安装 SSL 证书,我必须在 virtualHost 块中插入以下几行:
SSLEngine on
SSLCertificateKeyFile /etc/ssl/ssl.key/server.key
SSLCertificateFile /etc/ssl/ssl.crt/yourDomainName.crt
SSLCACertificateFile /etc/ssl/ssl.crt/yourDomainName.ca-bundle
但我不明白第四行是做什么的?
答案1
使用证书,您可以处理所谓的“信任链”。这有点像“亚当说外面在下雨。我相信亚当,因为鲍勃说亚当是值得信赖的。我相信鲍勃,因为克里斯汀说鲍勃是值得信赖的”,等等。
证书除了用于加密之外,还用作一种身份徽章:该网站宣称是your-website.com,它可以出示证书来证明这一点。但为什么要信任证书呢?因为它是由一个本身受信任的实例颁发的,即所谓的认证机构(CA)。此 CA 由您购买证书的公司运营。但为什么要信任此 CA?因为它可以显示值得信赖的证书。第二个证书由“更高级别”的 CA 颁发。此“更高级别”的 CA 拥有来自另一个 CA 的值得信赖的证书,依此类推。此过程一直持续到您到达“根证书”。
这些根证书随您的 Web 浏览器、邮件客户端或其他需要评估证书的客户端一起提供。如果您的浏览器收到证书,它会检查该证书是否与使用该证书的站点(域名等)匹配,以及它是否信任颁发该证书的 CA。如果认证此 CA 的“更高”CA 是可信的,则该 CA 是可信的,依此类推。通过这种方法,您的浏览器应该到达它的一个根证书。如果是这样,浏览器就会接受我们开始使用的证书。如果它无法建立回到根证书的信任链,它就不会接受该证书(或根据您的设置向您发出警告)。
如您所见,并非每个 CA 都直接从根证书获得信任,可能会有一个或多个中间步骤。这些“中间证书”可以存储到文件中,就像您的证书和相应的密钥一样。Apache 指令 SSLCACertificateFile 告诉您在哪里查找该文件。您应该随证书一起收到这些“中间证书”,或者应该从您购买证书的公司获得它们。