【问题标题】:How must I format IP Address for SubjectAlternativeName in X509 certificate created by BouncyCastle?如何在 BouncyCastle 创建的 X509 证书中格式化 SubjectAlternativeName 的 IP 地址?
【发布时间】:2017-04-28 10:27:12
【问题描述】:

我使用 BouncyCastle 生成证书。现在我想添加一些SubjectAlternativeName,就像:

...
ArrayList namesList = new ArrayList();
namesList.add(new GeneralName(GeneralName.dNSName, "*.test"));
namesList.add(new GeneralName(GeneralName.iPAddress, "127.0.0.1"));
namesList.add(new GeneralName(GeneralName.rfc822Name, "zoltar@spkac.spectra.org"));
GeneralNames subjectAltNames = new GeneralNames(new DERSequence((GeneralName[])namesList.toArray(new GeneralName [] {})));
new_cert.addExtension(X509Extensions.SubjectAlternativeName, false, subjectAltNames);
...

程序正常执行,但我看不到“IP 地址”。 openssl 我明白了:

...
DNS:*.test, IP Address:<invalid>, email:zoltar@spkac.spectra.org
...

GeneralName(GeneralName.iPAddress, ...)) 调用中的 IP 地址的正确格式是什么?

【问题讨论】:

  • 对我来说,openssl 有效(输出为DNS:*.test, IP Address:127.0.0.1, email:zoltar@spkac.spectra.org)。运行 openssl version 给出:OpenSSL 1.0.1e-fips 2013 年 2 月 11 日(在 Linux Red Hat 4.4.7-16 机器上),可能是您使用的版本存在问题
  • 还有其他理由相信它不正确吗?尝试使用其他工具查看它,例如浏览器。 bouncycastle 代码需要一个点 ip quad,就像在您的示例中一样,如果无法解析它会抛出异常。
  • openssl 没有问题。我认为这是旧 BouncyCastle 库的问题。

标签: java security x509certificate bouncycastle x509


【解决方案1】:

我认为这是非常古老的 BouncyCastle 库的问题。应用程序从 2008 年开始使用 1.39 版。所以我将 BC 升级到 1.56 版(2016 年 12 月)并重写了应用程序,因为 BC 更改了一些 API。现在我明白了:

DNS:*.test, IP Address:127.0.0.1, email:zoltar@spkac.spectra.org

【讨论】:

  • 你是如何重写应用程序的?我也有同样的问题,能给我一些建议吗?谢谢
  • 我只是用新版本替换了 BC jars。然后使用 Eclipse 我更改了每一行有问题的代码。我在问题中引用的 AFAIK 行保持不变。
  • 我使用 tcpdump 捕获数据包,发现 ip 地址被编码为类似“[BE_ANY!?]”的内容
猜你喜欢
  • 2010-12-09
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 2023-03-10
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多