我正在尝试从某些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
答案 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),测试你的密钥......