我编写了一个示例代码,以了解如何获取CRMF (mozilla证书请求),以便将其转换为更类似于PKCS#10的CSR
我得到了ASN1InputStream类型的base64 CRMFRequest。
我将其转换为CertReqMsg类型(Bouncycastle)
当我调试时,我意识到CertReqMsg有公钥,另一个数据,如主题(CN,O,OU,等等)和其他,但更重要的是,它有一个签名和一个AlgoritmIdentifier。
但是该对象没有getter
如何将签名提取为DERBitString...?我需要它作为CertificationRequest对象的参数(它会根据我需要的方式返回CSR )
顺便说一下,CertificationRequest需要一个CertificationRequestInfo对象作为参数。在它内部(CertificationRequestInfo ),它接收属性作为参数。我假设这个属性是这样的:
distributionPoint、unotice、policyOID、subjectAlternativeNameDN
我知道它是以一个
ASN1Set attributes = null;
attributes = new DERSet();但我不知道该怎么填这个参数
CertificationRequestInfo info = new CertificationRequestInfo(subject, infoPublicKey, attributes);抱歉,如果有什么问题很明显的话...但是我找不到解决办法..。
提前感谢
发布于 2012-05-10 08:58:49
您将无法将CRMF格式转换为PKCS#10 CSR。
由主题的私钥签名的CSR is structured like this:
CertificationRequest ::= SEQUENCE {
certificationRequestInfo CertificationRequestInfo,
signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
signature BIT STRING
}(本质上,它非常类似于自签名X.509证书,没有颁发者和有效期。)
由于当您收到CRMF请求时,您将不会拥有主题的私钥,因此您将无法进行此签名。
如果您正在编写某种CA软件,那么您实际上并不需要这个。处理CRMF请求和CSR请求或多或少是相同的。CA不应该盲目地做CSR想要做的事情,所以它必须以其他方式审查它与公钥和身份关联的属性。
https://stackoverflow.com/questions/10522868
复制相似问题