无法获得自签名CA证书来请求相应的客户证书; 阿帕奇

我在Windows上运行Apache 2.2,并且mod_ssl正常工作以提供商业签名的服务器证书。 (通配证书,但我认为不重要)

我试图让服务器,在某些VirtualHosts,要求客户端证书,所以我build立了一个包含PEMs的SSLCACertificateFile; 据我了解,应该提供签名DN的列表,以便客户端在SSLbuild立期间作出响应。

我有一个StartSSL个人身份证书,如果我把StartSSL的根证书放入SSLCACertificateFile,浏览器(Chrome和IEtesting)popup“select一个证书”,并显示我我的StartSSL证书。

但是,我真正的用例是使用我自己的CA,签署客户端证书, 是我无法工作的。 我自己签署了一个CA,然后我创build了一个客户端CSR,并用CA cert签名,并将其加载到我的客户端cert store中,然后将CA PEM放入我的SSLCACertificateFile中 – 而浏览器不提供客户端证书在“select证书”中。

WTF。

因为这一切都与StartSSL CA和证书一起工作,所以我想知道是否它是我的CA证书或客户端证书的问题 – 但我无法弄清楚问题可能是什么; CA证书适用于签名,CA:TRUE; 客户证书有客户authentication作为一个目的…缺less什么。

不知道如何诊断; 谢谢。

这是我的CA PEM,粘贴到SSLCACertificateFile中:

Certificate: Data: Version: 3 (0x2) Serial Number: bf:45:a7:db:f9:8e:8f:d0 Signature Algorithm: sha1WithRSAEncryption Issuer: C=US, ST=California, L=San Diego, O=TestCA, OU=TestCA-OU, CN=TestCA-CN Validity Not Before: Mar 8 21:39:52 2013 GMT Not After : Apr 7 21:39:52 2013 GMT Subject: C=US, ST=California, L=San Diego, O=TestCA, OU=TestCA-OU, CN=TestCA-CN Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): <snip> Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: 5E:99:47:8A:52:D3:38:20:68:A5:91:D9:E1:2E:6B:50:0D:5C:98:CB X509v3 Authority Key Identifier: keyid:5E:99:47:8A:52:D3:38:20:68:A5:91:D9:E1:2E:6B:50:0D:5C:98:CB X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha1WithRSAEncryption <snip> 

…这里的客户端证书:

 Certificate: Data: Version: 3 (0x2) Serial Number: 20481 (0x5001) Signature Algorithm: sha1WithRSAEncryption Issuer: C=US, ST=California, L=San Diego, O=TestCA, OU=TestCA-OU, CN=TestCA-CN Validity Not Before: Mar 8 23:46:55 2013 GMT Not After : Mar 8 23:46:55 2014 GMT Subject: C=US, ST=California, L=San Diego, O=TestClient, OU=TestClient-OU, CN=TestClient-CN Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): <snip> Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Key Usage: Key Encipherment X509v3 Extended Key Usage: TLS Web Client Authentication Signature Algorithm: sha1WithRSAEncryption <snip> 

/ ******************* ****************** /

根据Mike的请求,进一步的信息(带我尝试了一下“openssl s_client”)。

结果如下:[…]

 --- Acceptable client certificate CA names /C=UK/O=Test Certificates/CN=Test CA /C=US/ST=California/L=San Diego/O=TestCA/OU=TestCA-OU/CN=TestCA-CN /C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certific ation Authority --- 

[…]

所以,服务器在说

/ C = US / ST = California / L =圣地亚哥/ O = TestCA / OU = TestCA-OU / CN = TestCA-CN

是可以接受的客户证书,而客户有

发行人:C = US,ST =加州,L =圣迭戈,O = TestCA,OU = TestCA-OU,CN = TestCA-CN

在它的商店 – 但浏览器不包括在我可以select的列表中。 浏览器确实提供了签名的客户端证书

/ C = UK / O =testing证书/ CN =testingCA.

/ C = IL / O = StartCom Ltd./OU=Secure数字证书签名/ CN = StartCom证书颁发机构

把我带回“跆拳道”

是的,我正在回答我自己的问题。

解决了。

原来, KeyUsage keyEncipherment不是SSL / TLS客户端的正确keyUsage。 正确的KeyUsage约束是KeyUsage digitalSignature ; 有用的信息被发现在这个Mozilla的文章 。