【问题标题】:Mutual authentication(SSL) setup Java stack (Production Cloud)相互身份验证(SSL)设置 Java 堆栈(生产云)
【发布时间】:2017-10-25 04:32:40
【问题描述】:

我想在 Tomcat 8 上设置相互身份验证。 我已经完成了密钥的设置,主要是密钥库和信任库,并且该设置正在使用 Firefox 测试。 访问 URL 时,系统会提示我输入证书,并在提供适当的证书时允许我访问。

我缺少的一块拼图是,我拥有的信任库具有 CA 证书和少数客户的公钥。此 CA 应该是自签名 CA,而不是来自网络上已知的权威机构。

  1. 我只是不想让任何人访问,只有使用我的 CA 的人应该能够访问。假设 abc.com 拥有由权威 godady 或 verisign 签署的证书,这些都是众所周知且受信任的,应该无法调用。我想要严格的访问权限。
  2. 在我的信任库中,我只想保留 CA 没有公钥,我不想随着客户的成长不断添加证书。客户会使用我的 CA。

我认为我在信任库中的自签名 CA 和仅在链中使用我的 CA 获取证书的客户端对于安全(仅使用我的 CA 的客户端)可扩展解决方案来说应该足够好,我不必继续添加客户端在信任库中。

请告知我的假设对于基于生产云的系统是正确的。

感谢您的宝贵时间。

【问题讨论】:

  • 您将身份验证与授权混为一谈。 TLS 基于 PKI 进行身份验证。授权是应用程序的责任。通过尝试结合这些功能,您正在让自己的生活变得艰难。您所要做的就是让您的应用程序,或者更可能是您的 Web 服务器,检查证书的主题或签名者,以决定应该为他分配哪些角色。
  • @EJP 感谢您的评论,是的,在应用层会有检查,因为您建议从证书中识别用户并授权他使用部分应用程序,我唯一关心的是上述设置,不应该身份验证有任何漏洞,基本上任何有证书的人都不应该打电话,我应该能够用我自己的 CA 控制证书。

标签: java ssl jakarta-ee ssl-certificate


【解决方案1】:

是的,你的假设是正确的。在 SSL 握手期间,服务器将要求客户端提供服务器信任库中存在的 CA 颁发的任何证书。您还需要考虑客户端信任库应该具有服务器证书的颁发 CA,否则它将在客户端/浏览器上显示不受信任的服务器证书。

【讨论】:

  • 如果我将拥有一个受浏览器信任的 CA 证书,这意味着众所周知,CA 不会只是任何拥有该 CA 签名证书的人都能够访问。我只希望带有我的自签名证书的证书能够拨打电话,我知道浏览器中会出现警告,但这不是问题。该服务将由 API 使用,它不是面向用户的。
  • 好的,那么你可以忽略警告。通常的做法是向客户端提供颁发 CA 证书(服务器的),以便他们可以导入此证书,客户端将确定服务器是否受信任。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多