Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我必须如何格式化BouncyCastle创建的X509证书中SubjectAlternativeName的IP地址?_Java_Security_X509certificate_Bouncycastle_X509 - Fatal编程技术网

Java 我必须如何格式化BouncyCastle创建的X509证书中SubjectAlternativeName的IP地址?

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

我使用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
...
。。。
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!?]”