【问题标题】:Generating a PKCS10 Certificate request with extra fields in java在 java 中生成带有额外字段的 PKCS10 证书请求
【发布时间】:2011-10-22 09:21:25
【问题描述】:

我需要在 CSR 中添加额外的字段,例如 keyusage、regestrationID 等。我使用的是 java IBM-sdk60。我已经浏览了 x500 名称 API,但找不到任何解决方案。对 API 的帮助将不胜感激。 提前致谢

【问题讨论】:

  • 您使用哪个 API 来生成 CSR?
  • 嗨 JCS... 我正在使用 com.ibm.security.pkcs10.*; com.ibm.security.pkcsutil.*; com.ibm.security.x509.X500Name;其中标准 CSR 请求由字段 CN、OU、O 和 C 组成...现在我还需要映射新字段,如 EKU(增强型密钥使用)和 regestrationID。我没有找到映射这些文件的方法。
  • 字符串 keyUsg = KeyUsageExtension.KEY_ENCIPHERMENT; byte [] der =new DerValue(keyUsg).getOc​​tetString(); KeyUsageExtension keyUsage = new KeyUsageExtension(true,der); DerInputStream in = new DerInputStream(keyUsage.toString().getBytes()); PKCSAttributes attr=new PKCSAttributes(in,"IBMJCEFIPS");我尝试使用上面的代码 sn-p 将 KeyUsage 扩展添加到证书签名请求中,但出现以下异常。线程“main”java.io.IOException 中的异常:DerValue.getOc​​tetString,不是八位字节字符串:12 @Jcs 你能帮我解决吗?
  • 有关使用 sun.security 的示例,请参阅dev.harpavieja.cz/gitweb/?p=webscarab/…getCertificateExtensions

标签: java certificate x509certificate pki csr


【解决方案1】:

在 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 属性,否则它将在证书生成期间被忽略。

【讨论】:

  • 非常感谢 JCS...这是我正在寻找的...而且 CA 支持正在处理的 PKCS#10 属性,所以我没有发现解决方案有任何问题已经提供...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
  • 1970-01-01
  • 2023-03-22
  • 2021-02-10
相关资源
最近更新 更多