Java 我必须如何格式化BouncyCastle创建的X509证书中SubjectAlternativeName的IP地址?
我使用BouncyCastle生成证书。现在我想添加一些Java 我必须如何格式化BouncyCastle创建的X509证书中SubjectAlternativeName的IP地址?,java,security,x509certificate,bouncycastle,x509,Java,Security,X509certificate,Bouncycastle,X509,我使用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 Gen
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
...
。。。
DNS:*。测试,IP地址:,电子邮件:zoltar@spkac.spectra.org
...
调用
GeneralName(GeneralName.iPAddress,…)
时IP地址的正确形式是什么?我认为这是非常旧的BouncyCastle库的问题。应用程序使用2008年的1.39版。所以我将BC升级到1.56版(2016年12月),并重写了应用程序,因为BC更改了一些API。现在我明白了:
DNS:*.test, IP Address:127.0.0.1, email:zoltar@spkac.spectra.org
对我来说,openssl是有效的(输出是DNS:*.test,IP地址:127.0.0.1,电子邮件:zoltar@spkac.spectra.org)。运行
openssl版本
会给出:openssl 1.0.1e-fips 2013年2月11日(在Linux Red Hat 4.4.7-16机器中),可能是您使用的版本有问题有其他理由相信它不正确吗?尝试使用其他工具查看它,例如浏览器。bouncycastle代码需要一个点式ip四元组,就像您的示例中一样,如果无法解析它,它将抛出一个异常。openssl
没有问题。我认为这是旧的BouncyCastle
库的问题。您是如何重写应用程序的?我也有同样的问题,你能给我一些提示吗?thanksI只是用新版本替换了BC罐。然后使用Eclipse,我更改了每一行有问题的代码。我在问题中引用的几行代码保持不变。我使用tcpdump捕获数据包,并发现ip地址被编码为类似以下内容“[BE_ANY!?]”