我必须如何在 BouncyCastle 创建的 X509 证书中为 SubjectAlternativeName 格式化 IP 地址?
How must I format IP Address for SubjectAlternativeName in X509 certificate created by BouncyCastle?
我使用 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 Address"。使用 openssl
我看到:
...
DNS:*.test, IP Address:<invalid>, email: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
我使用 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 Address"。使用 openssl
我看到:
...
DNS:*.test, IP Address:<invalid>, email: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