签署私人证书,哪个密钥?

时间:2017-08-16 14:23:27

标签: ssl-certificate

我正在尝试从某些PHP脚本启用客户端证书验证。我的服务器-debian / lighttpd-有一段时间的SSL证书,它可以工作。

以这种方式配置:

    $SERVER["socket"] == ":443" {
      ssl.engine = "enable" 
      ssl.cipher-list = "EECDH+AESGCM:EDH+AESGCM:AES128+EECDH:AES128+EDH"
      ssl.pemfile = "/etc/lighttpd/certs/mydomain.net.pem"
      ssl.ca-file = 
         "/etc/lighttpd/certs/my.domain.ca-bundle"
      ssl.dh-file = "/etc/lighttpd/certs/dhparam.pem"
      ssl.ec-curve = "secp384r1"
      ssl.verifyclient.activate = "enable"
      ssl.verifyclient.enforce = "disable"
      ssl.verifyclient.username  = "SSL_CLIENT_S_DN_CN"
      ssl.verifyclient.depth = 1
      ssl.verifyclient.exportcert = "enable"
    } 

我试着在这里关注相当不错的tutorail https://gist.github.com/mtigas/952344

区别在于我没有创建ca.key和ca.crt,因为我已经使用lighttpd配置它们(它们由Comodo签名)。

现在,我的第一个疑问是我应该用什么来签署我的client.crt?

这就是我所做的:

     openssl genrsa -des3 -out client1.key 2048   
     openssl req -new -key client1.key -out client1.csr  

现在我需要在CA上签名,我说它是lighttpd.conf中标识为ssl.ca文件的那个,对吗?

所以my.domain.ca-bundle我猜。

问题是,如何获得密钥? 我尝试使用(-CAkey)我用于请求certifcate的csr的私钥,但我得到X509_check_private_key:键值不匹配

我应该使用哪一个?

查看了一些教程和示例,但所有这些都假设您创建了ouw CA

1 个答案:

答案 0 :(得分:0)

首先,您无法创建自己的(CA),(CA)是为您提供ssl证书的证书颁发机构。为此,您必须提交请求,请求基本上是(CSR证书签名请求)。验证您的请求后,您将能够下载您的SSL证书。接下来,您必须在生成(CSR)的服务器上导入ssl证书。在导入ssl时,请确保您也选择导入私钥,在此步骤结束时您有一个.pfx文件,要获取私钥,您只需要将.pfx文件转换为pem文件,其中你可以找到一个包含私钥的.key文件。 这篇文章可能会有所帮助:https://www.namecheap.com/support/knowledgebase/article.aspx/9834/69/how-can-i-find-the-private-key-for-my-ssl-certificate

PS:请注意,您应该在生成(CSR)的同一台服务器上导入ssl证书,否则您的ssl证书将不会附加到任何私钥,您可以使用此工具'DigiCert实用程序'导入ssl证书,生成(CSR),测试你的密钥......