具有自签名CA的客户端SSL不工作
我已经与SSL问题斗争了一个多月 我们已经使用openssl生成了我们自己的CA、服务器和客户端证书。我们也有 在Apache web服务器上启用“SSLrequire”(在htaccess中,这可能是错误的),这意味着任何试图通过网络上的https进行连接的人 服务器需要提供有效的证书 步骤如下:具有自签名CA的客户端SSL不工作,ssl,client,openssl,self-signed,ca,Ssl,Client,Openssl,Self Signed,Ca,我已经与SSL问题斗争了一个多月 我们已经使用openssl生成了我们自己的CA、服务器和客户端证书。我们也有 在Apache web服务器上启用“SSLrequire”(在htaccess中,这可能是错误的),这意味着任何试图通过网络上的https进行连接的人 服务器需要提供有效的证书 步骤如下: 生成CA密钥 生成CA CSR 使用CA密钥对CA CSR进行签名 因此,我们有自己的CA,用于签署服务器和客户端证书 下一步 生成服务器密钥 生成服务器CSR 使用CA密钥对服务器CSR进行
- 生成CA密钥
- 生成CA CSR
- 使用CA密钥对CA CSR进行签名
- 生成服务器密钥
- 生成服务器CSR
- 使用CA密钥对服务器CSR进行签名
- 生成客户端密钥
- 生成客户端CSR
- 使用CA密钥对客户端CSR进行签名
SSLCertificateFile
和SSLCertificateKeyFile
是在服务器上启用SSL的基本要求
因为您需要客户端证书身份验证,所以需要配置SSLCACertificatePath
(对于目录)或SSLCACertificateFile
(对于文件)中的一个,以说明您要信任哪个CA,因此需要在其中添加CA证书。这些文件应为PEM格式的文件。其中的任何证书都将被视为受信任的(尽管它可能需要有CA基本约束,我不记得了,如果您自己已经生成了根CA证书,那么这是非常标准的)
除此之外,您还可以将证书放入SSLCADNRequestFile
中。这应该不是必需的,因为它是从SSLCACertificatePath
或SSLCACertificateFile
证书指令自动填充的,但是如果您想对服务器可能接受的CA广告列表进行更多控制,则可以在此处执行。需要澄清的是,这并不是管理客户端证书信任的原因,而是服务器宣传它可能信任的原因,因此您仍然需要SSLCACertificatePath
或SSLCACertificateFile
。也许您的配置面板中的“证书颁发机构文件”选项控制该选项,而不是其他两个选项之一
调试的一种方法是通过命令行执行此操作:
echo | openssl s_client -showcerts -connect www.your.host.example:443
这应该首先列出您显示的证书链(最好将完整的证书链显示给CA,因为据我所知,有些客户机有时似乎需要它)。然后,它应该列出它愿意接受用于客户端证书身份验证的CA,或者不以其他方式发送客户端证书CA名称(在这种情况下,上面提到的指令之一存在问题)。这将至少为您提供一个如何配置
SSLCADNRequestFile
或SSLCACertificatePath
/SSLCACertificateFile
的指示(尽管这是最后两个问题)。您可能想试试serverfault.com,更可能找到使用过hsphere的管理员。遗憾的是,我只能给出+1:指定PEM,CA基本约束,阐明了服务器信任与客户端信任以及openssl s_client-showcerts,每一个都有自己的优点。
echo | openssl s_client -showcerts -connect www.your.host.example:443