我做了一个示例代码来了解如何获得CRMF(Mozilla的证书请求)将其转换成一个CSR更类似于PKCS#10从CRMF请求转换成CertificateRequest(PKCS#10)签署
我得到了Base 64 CRMFRequest作为ASN1InputStream类型。
我把它转换成CertReqMsg型(BouncyCastle的)
当我调试,我意识到CertReqMsg具有公共密钥,另一个数据,如主题(CN,O,OU等)等,但更重要它有一个签名和一个AlgoritmIdentifier。
但对象不具有干将
如何提取签名作为DERBitString ...?我需要它作为CertificationRequest对象的参数使用(它会根据需要返回CSR)。顺便说一句,CertificationRequest需要一个CertificationRequestInfo对象作为参数。并在其中(CertificationRequestInfo),它接收Attributes作为参数。我supose这个属性是什么样的:
distributionPoint,unotice,policyOID,subjectAlternativeNameDN
我知道它有
ASN1Set attributes = null;
attributes = new DERSet();
开始,但我不知道怎么填这个paramethers到
CertificationRequestInfo info = new CertificationRequestInfo(subject, infoPublicKey, attributes);
很抱歉,如果有些问题似乎是显而易见的......但我无法找到解决..
在此先感谢
感谢您的回答...是的,但我已经看到CRMF有一些名为拥有证明,其中带来签名内...我认为私钥签署公钥,这是按顺序添加(好吧,其实我希望如此)。这是因为CA和RA已经被开发出来了,并且团队谁否认做出任何改变。这个发展只是阅读了PKCS10的CSR。我发现的唯一解决方案是拆卸CRMF零件并组装成CSR –
您将无法完成。根据定义,签名确保了确切的内容匹配。您可以签署您使用任何其他私钥重新构建的'certificationRequestInfo',但验证PKCS#10规范说明(必须由主题的私钥签名)的任何内容都将失败。如果企业社会责任没有验证签名(如果有其他验证,这不一定是个大问题),它可能会起作用。 – Bruno
如果你需要修改,你可以检查[这个例子](https://github.com/harbulot/keygenapp/blob/174d6e7e7bea3130f9c780a55fbb2784342925b1/base/src/main/java/org/jsslutils/keygen/bouncy/BouncyKeygenService.java) CA代码:它不完整,但会告诉你如何处理PKCS#10,CRMF和SPKAC。 – Bruno