我需要在CSR中添加额外的字段,例如keyusage,regestrationID等。我正在使用Java IBM-sdk60。我已经通过x500名称API了,找不到任何解决方案。 API的帮助将不胜感激。 提前致谢
答案 0 :(得分:3)
在CSR(PKCS#10)请求中包含其他信息的标准方法是添加Attributes
。根据PKCS#10标准:
包含一组属性的意图有两个:提供 有关给定实体的其他信息,或“质询密码” 该实体以后可能要求撤销证书;并 提供包含在X.509证书中的属性。一个 PKCS#9中给出了非详尽的属性列表
属性是 OID ,其含义取决于OID
实际上PKCS#9定义了3个属性:
您正在寻找的是扩展请求:
extensionRequest属性类型可用于携带信息 关于证书扩展,请求者希望包含在 证书。
此代码模板(未经测试)可能会为您提供有关如何包含此属性的一些提示
CertificateExtensions exts = /* build the extensions set you want to include */
/* Wrap the extensions set into a SET OF */
OutputStream out = new ByteArrayOutputStream();
exts.encode(out);
DerValue val = new DerValue(DerValue.tag_SetOf, out.toByteArray());
PKCSAttribute extReq = new PKCSAttribute(new ObjectIdentifier("1.2.840.113549.1.9.14"), val.toByteArray());
PKCSAttributes attrs = new PKCSAttributes(new PKCSAttribute[] { extReq });
CertificationRequestInfo cri = new CertificationRequestInfo(subject, key, attrs);
CertificationRequest csr = new CertificationRequest(cri);
请注意,除非CA明确宣布支持此PKCS#10属性,否则在证书生成期间将忽略该属性。