apache - 2 Way SSL using Apache - 证书问题

标签 apache security authentication ssl

我一直在谷歌上疯狂搜索,试图弄清楚这个问题,但答案似乎并不明确,或者至少,似乎存在相互矛盾的答案。

我的任务是使用 2Way SSL 身份验证设置 Apache 网络服务器。我们使用 verisign 来获取我们的证书,因此我们有一个具有正确主机名详细信息的 Web 实例证书,由 verisign 签名,以及一个来自 verisign 的中间证书。这一切都很好。

现在,我们需要建立一个 2Way SSL 连接。最初的期望是客户端将管理自己的证书,并将它们提供给我们进行身份验证。可能有多个客户端正在连接,并且它们在连接时都应该能够访问不同的资源。

根据我的阅读,我不确定这将如何完成...

这是一个很好的概述,但在这种情况下,他们使用的是自签名证书:https://security.stackexchange.com/questions/34897/configure-ssl-mutual-two-way-authentication

使用这些详细信息,我们似乎必须让受信任的 CA 指向签署客户端证书的证书颁发机构。

是否可以将客户端证书用作受信任的 CA(即使它不是自签名的,而是由 CA 签名的)或者我们是否必须从他们的签名者那里放置一个受信任的 CA(在这一点上,会一个包含所有客户端证书颁发机构 CA 的 CA bundle ?)在服务器上,然后使用 SSLRequire 语句来限制对证书特定细节的访问?

作为后续,我们可以使用我们从 verisign 获得的 SSL 证书来签署客户端证书吗?

最佳答案

因此,在谷歌上又搜索了几个小时并进行了一些测试后,我能够弄清楚我需要什么。

如果我想使用由 verisign 或其他公共(public) CA 签名的证书,我必须将他们的公共(public)中间证书(他们用来签署客户端证书的证书)复制到我的服务器并将其指定为 SSLCACertificateFile配置。需要注意的是,任何 由该 CA 签名的证书都将被接受,这就是 SSLRequire 指令可用于将范围缩小到特定证书的地方。

使用 SSLVerifyClient optional_no_ca 指令会假定该证书是可信的,即使它不是,然后我将不得不使用 SSLRequire 指令来验证细节是否正确,但是,任何人都可以创建并签署自己的带有这些详细信息的证书,将无法辨别。

创建我自己的自签名 CA 证书,然后使用它来签署客户端证书并将它们颁发给客户端是确保证书不是伪造并且不需要 SSLRequire 指令来确保仅我指定的人可以连接。

如果我在这方面有任何错误,请评论/纠正我。

关于apache - 2 Way SSL using Apache - 证书问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32746032/

相关文章:

apache - 使用 htaccess RewriteRule 复制站点

apache - 如何在隐藏扩展名时忽略与文件同名的目录

security - 将内容安全策略框架祖先与 HAproxy 结合使用

authentication - 当 Cassandra 不知道 'cassandra' 默认用户时,如何重置 Cassandra super 用户?

azure - 使用 Azure 中的托管身份进行服务到服务身份验证

asp.net - 如何使用当前Windows用户之外的其他用户登录?

php - 从 PHP 脚本执行 shell 脚本

php - 为什么 Apache RewriteRule 以相同的方式处理 '&' 和 '?'

c# - 如何通过 Google 方式找出可能的中间人?

security - 是否需要反向代理背后的 HTTPS?