在 Centos 6.5+ 服务器上通过 SSLVerifyCilent 在 Apache Web 服务器中设置客户端证书验证

在 Centos 6.5+ 服务器上通过 SSLVerifyCilent 在 Apache Web 服务器中设置客户端证书验证

目标:

我的目标是在 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 注册/签名。

相关内容