gpt4 book ai didi

java - 获取所有主机名匹配证书的列表

转载 作者:太空宇宙 更新时间:2023-11-03 12:57:00 25 4
gpt4 key购买 nike

如何获取与证书 (java.security.cert.X509Certificate) 匹配的所有主机名和 IP 的列表,包括主题备用名称?我只找到了 javax.net.ssl.HostnameVerifiers 的各种实现。

最佳答案

RFC 2818, Section 3.1 中定义了主机名验证如何与证书相关联(对于 HTTPS,对于其他协议(protocol),请参阅 RFC 6125 ,但它非常相似)。

简而言之:

  • 使用您的 X509Certificate 实例,并遍历 getSubjectAlternativeNames() 的结果.
  • 每个条目都是一个 2 元素列表。第一个是类型,第二个是实际值。
  • 类型 2 用于 DNS 名称,类型 7 用于 IP 地址。您需要分别对待它们。
  • 如果有任何 SAN IP 地址条目,请将这些地址添加到您的 IP 地址列表中。
  • 如果有任何 SAN DNS 名称条目,请将这些名称添加到您的 IP 地址列表中。
  • 如果没有任何 SAN DNS 名称条目(但可能仍有 IP SAN AFAIK),您可以读取证书的主题 DN 并提取其 CN(通用名称)并将其添加到您的列表中。 (有关如何提取 CN,请参阅 this question。请注意,RFC 2818 中“最具体”CN 的概念是一个歧义,并在 RFC 6125 中得到解决。)

请注意,证书中的某些主机名可能包含通配符,因此您无法构建可能匹配项的详尽列表。通配符的这个问题肯定是编写验证程序通常比尝试获取完整列表更有意义的原因之一。 (阅读 RFC 2818 第 3.1 节以获取有关位置的详细信息,并记住点本身不是通配符表达式的一部分,因此 *.example.orgexample 不匹配.org.)

关于java - 获取所有主机名匹配证书的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17943286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com