認証局(cmpサーバ)でcmp(証明書管理プロトコル)を超えて証明書を取り消し、エラーコード「無効な署名キーコード」を取得しようとしました。私はそれが私がcmpメッセージに署名する方法のためにその何かが間違っていたと思う。私は全体のメッセージに署名する必要があり、そこに思わその後cmp要求メッセージに正しく署名する方法は?
CertTemplateBuilder builderCer = new CertTemplateBuilder();
// cert to revoke
builderCer.setIssuer(issuer);
builderCer.setSerialNumber(serial);
//body
ArrayList revDetailsList = new ArrayList();
revDetailsList.add(new RevDetails(builderCer.build()));
RevReqContent revReqContent = new RevReqContent((RevDetails[]) revDetailsList.toArray(new RevDetails[revDetailsList.size()]));
PKIBody body = new PKIBody(PKIBody.TYPE_REVOCATION_REQ, revReqContent);
// header
X509Name recipient = new X509Name("CN=recipient");
X509Name sender = new X509Name("CN=sender");
int pvno = 1;
PKIHeaderBuilder builderHeader = new PKIHeaderBuilder(pvno, new GeneralName(sender), new GeneralName(recipient));
AlgorithmIdentifier algId = new AlgorithmIdentifier(new ASN1ObjectIdentifier("1.2.840.10045.4.1"));
builderHeader.setProtectionAlg(algId);
PKIHeader header = builderHeader.build();
:
私はorg.bouncycastle.asn1.crmf.CertTemplateBuilderとorg.bouncycastle.asn1.cmp.PKIHeaderBuilderとヘッダとボディを構築しますそのためには別の方法が必要です。 extracerts(CMPCertificate)では、私は署名の公開鍵を追加しなければなりません、署名はこの公開鍵で検証可能でなければなりません。このような要求に対して正しくこのメッセージに署名するにはどうすればよいですか?私はorg.bouncycastle.asn1.cmp.PKIMessagesとorg.bouncycastle.cert.cmp.ProtectedPKIMessageを試しました。
PKIMessages:
DERBitString signature = new DERBitString(createSignature("signature".getBytes()));
X509Certificate signercert = convertToX509Cert(certPEM);
CMPCertificate cmpCert = new CMPCertificate(org.bouncycastle.asn1.x509.Certificate.getInstance(signercert.getEncoded()));
PKIMessage message = new PKIMessage(header, body, signature, new CMPCertificate[] { cmpCert });
// createsignature()
private static byte[] createSignature(byte[] str){
Signature dsa = Signature.getInstance("SHA256WithRSA");
dsa.initSign(privateKey);
dsa.update(str, 0, str.length);
signature = dsa.sign();
return signature;
- CMPサーバから>エラー: "SIGNATURE_INVALID_KEY_CODE"
ProtectedPKIMessage:
ContentSigner signer = new JcaContentSignerBuilder("SHA1WithRSAEncryption").setProvider(BouncyCastleProvider.PROVIDER_NAME).build((PrivateKey) ks.getKey(KEYSTORE_ALIAS, KEYSTORE_PWD.toCharArray()));
ProtectedPKIMessage message = new ProtectedPKIMessageBuilder(pvno, new GeneralName(sender), new GeneralName(recipient))
.addCMPCertificate(new X509CertificateHolder(ks.getCertificate(KEYSTORE_ALIAS).getEncoded()))
.setBody(body).build(signer);
- CMPサーバから>エラー: "ERROR_READING_CMS_OBJECT_CODE"
cmp要求メッセージにどのように署名するのですか? PKIMessageと 'protection'引数とorg.bouncycastle.cert.cmp.ProtectedPKIMessageの違いは何ですか?
それは私のために働いて、感謝を! – Simi