中间证书的 SSL 配置

中间证书的 SSL 配置

我已经实现了相互证书身份验证,并且它成功地完成了以下步骤:

  1. 创建根 ca(自签名)
  2. 创建服务器证书并使用 ca 私钥对其进行签名
  3. 创建用户证书并使用 ca 私钥对其进行签名
  4. 将 server.crt 作为浏览器的“权限”导入,将 user.crt 作为“您的证书”导入
  5. 配置 ssl.conf 添加这些行:

    SSLCertificateKeyFile /home/safaa/rootca/certs/server.key
    
    SSLCertificateFile /home/safaa/rootca/certs/server.crt
    
    SSLCACertificateFile /home/safaa/rootca/certs/rootca.crt
    
    SSLVerifyDepth  10
    
    SSLVerifyClient require
    

现在我已将中级证书添加到我的流程图中,步骤已变为:

  1. 创建根CA(自签名)
  2. 创建服务器CA并使用CA私钥对其进行签名
  3. 创建服务器证书并使用服务器 CA 私钥对其进行签名
  4. 创建用户证书并使用服务器 CA 私钥对其进行签名
  5. 将 server.crt 作为浏览器的“权限”导入,将 user.crt 作为“您的证书”导入
  6. 配置 ssl.conf 添加这些行:

    SSLCertificateKeyFile /home/safaa/serverCA/certs/server.key
    
    SSLCertificateFile /home/safaa/serverCA/certs/server.crt
    
    SSLCACertificateFile /home/safaa/serverCA/certs/serverCA.crt
    
    SSLVerifyDepth  10
    
    SSLVerifyClient require
    

现在,当我尝试重新启动 httpd 服务时: service httpd restart 我得到

#sudo service httpd start
Starting httpd:                                            [FAILED]

#sudo service httpd status
 httpd is stopped

我尝试过注释和取消注释行,但未能成功

SSLCertificateChainFile /home/safaa/rootca/certs/rootca.crt
SSLCACertificateFile /home/safaa/serverCA/certs/serverCA.crt

另外,我生成的每个证书都进行了验证,所有五个证书都验证正常,我还更改了 rootca && serverCA 文件夹的所有者和权限,并使它们与 ssl.conf 相同 ps:我正在运行我的bash 用于 php 。

我错过了什么?有人告诉我,我可以在 Linux 中使用可信存储库而不是配置 ssl,这可能吗?在哪里将我的 ca 添加到 Linux 以使其将其视为 verisign!?

答案1

回答老问题,因为这是在寻找另一个答案时提出的建议:

一般来说,您不需要将服务器证书添加到浏览器,除非它是自签名的。这就是信任链的全部目的。如果您不在任何地方使用根作为信任锚,那么经历创建中间 CA 的麻烦是毫无意义的。

我也不认为您完全理解这些指令的用途或效果。我建议在 Apache 文档中查看它们这里。我想你可能首先要寻找的是SSLCA证书文件

至于我最初的评论,根据文档,SSL证书文件还应该从同一文件加载中间证书(只需将中间证书和(可选?)根证书附加到 server.crt )。这应该允许您将根 CA 的证书作为受信任的 CA 而不是单个服务器证书导入到您的浏览器。

也可以看看:这个答案有关相互认证的更多讨论。

相关内容