【问题标题】:How to generate multi-domain (UCC) certificate in Java?如何在 Java 中生成多域 (UCC) 证书?
【发布时间】:2011-10-18 05:02:55
【问题描述】:

目前我正在使用BouncyCastle 库来生成证书。像这样的:

X509V3CertificateGenerator certGenerator = new X509V3CertificateGenerator();
certGenerator.setIssuerDN( rootCertificate.getSubjectX500Principal() );
certGenerator.setSignatureAlgorithm( "SHA1withRSA" );
certGenerator.setSerialNumber( serial );
certGenerator.setNotBefore( notBefore );
certGenerator.setNotAfter( notAfter );
certGenerator.setPublicKey( rootCertificate.getPublicKey() );

Hashtable<DERObjectIdentifier, String> attrs = new Hashtable<DERObjectIdentifier, String>();
Vector<DERObjectIdentifier> order = new Vector<DERObjectIdentifier>();

attrs.put( X509Principal.C, "RU" );
// other attrs.put() calls here

order.addElement( X509Principal.C );
// other order.addElement() calls here

certGenerator.setSubjectDN( new X509Principal( order, attrs ) );
certGenerator.addExtension( X509Extensions.AuthorityKeyIdentifier, false, new AuthorityKeyIdentifierStructure( rootCertificate ) );
certGenerator.addExtension( X509Extensions.SubjectKeyIdentifier, false, new SubjectKeyIdentifierStructure( newKeyPair.getPublic() ) );

return certGenerator.generate( rootPrivateKey, "BC" );

我可以在生成的证书中添加SubjectAltNames 字段吗?

【问题讨论】:

  • 回答您自己的问题很好,但您可能应该将其作为一个明确的答案(以便它更明显并且可以被投票)。
  • @JoachimSauer:我试图这样做,但系统说我应该让 rep >= 100 或等待 8 小时。所以我决定这总比没有好:)
  • 哦,是的,我明白了。有一些限制。我希望你不介意我把你的答案贴在下面(作为社区维基,所以我不会得到任何代表)。

标签: java ssl-certificate bouncycastle multiple-domains


【解决方案1】:

要完成任务,请在 certGenerator.generate() 调用之前插入以下内容:

ASN1EncodableVector alternativeNames = new ASN1EncodableVector();
for( String domainName : domainNames )
{
  alternativeNames.add( new GeneralName( GeneralName.dNSName, domainName ) );
}
certGenerator.addExtension( X509Extensions.SubjectAlternativeName, false, new GeneralNames( new DERSequence( alternativeNames ) ) );

(Double-V提供的答案)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 2022-08-16
    相关资源
    最近更新 更多