我必须如何在 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