目标:
我的目标是在 Centos 机器上设置一个 Apache Web 服务器,使用 SSL 和客户端证书验证,类似于以下 Apache 虚拟主机(http://hstuart.dk/2010/04/09/x-509-certificates-and-mercurial/):
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /path/to/myserver.pem
SSLCertificateKeyFile /path/to/myserver.key
SSLCACertificateFile /path/to/ca.pem
SSLCACertificatePath /path/to
SSLVerifyClient require
<Location />
SSLRequireSSL
SSLOptions +FakeBasicAuth
AuthName "FakeBasicAuth"
AuthType Basic
AuthUserFile /path/to/httpd.passwd
require valid-user
</Location>
ScriptAliasMatch ^(.*) /path/to/hgwebdir.cgi$1
</VirtualHost>
目前的解决方案:
到目前为止,我有一个可行的 Apache 解决方案,它基于自签名 CA 证书,用于创建中间 CA,该 CA 再次用于创建 Web 服务器证书(https://jamielinux.com/articles/2013/08/act-as-your-own-certificate-authority/)。
CA、中间 CA 和 Web 服务器证书用于 Apache 虚拟主机文件中,以设置 SSL 通信。当我不使用 SSLVerifyClient 时,该解决方案可按预期工作,无论是在 Web 服务器本身还是在添加了 CA 证书的 Windows 框上。没有烦人的屏幕,一切都很好。
问题:
但是,一旦我添加 SSLVerifyClient,我就可以'ssl_error_handshake_failure_alert'
在 Windows 机器上和'sslv3 alert handshake failure'
CentOS 服务器上的 Firefox 中使用该'openssl s_client -connect [ip]:[port]'
命令。
这次失败肯定是因为我缺少客户端证书,但是如何创建和使用此客户端证书?我看不出这个客户端证书适合放在哪里。
我尝试过使用 putty Pageant,但似乎它只适用于 ssh 协议,而不是安全的 http。我正在寻找一种安全的 http 解决方案,其中客户端证书安装在 Windows 机器上,允许开发人员访问 Web 服务器。
答案1
您需要将客户端证书作为 p12/pfx(包括私钥)文件导入到您的 Firefox 中。
客户端证书必须是受 Web 服务器信任的客户端证书。即,客户端证书应由您的 CA 注册/签名。