私の Java プログラムは、受信した X509 証明書要求に独自のキーを使用して署名する必要があります。証明書リクエストは PEM 形式です。署名用のキー/証明書は、ローカルの Java キー ストアにあります。
java.security
パッケージから適切なクラスを探しました。しかし、成功せずに。
X509 証明書に署名するには、どのクラスの Java API を使用する必要がありますか?
PEM を DER に変換できますが、DER のデコードで問題が発生します。私は次のことを試しました:
BufferedInputStream bis = new BufferedInputStream(new ByteArrayInputStream(derReq));
CertificateFactory certFact = CertificateFactory.getInstance("X.509");
java.security.cert.Certificate cert = certFact.generateCertificate(bis);
と
javax.security.cert.X509Certificate cer = X509Certificate.getInstance(derReq);
どちらも次の例外が発生します。
javax.security.cert.CertificateException: Could not parse certificate: java.io.IOException: Empty input
そのため、これらは署名付き証明書専用であり、X509 証明書要求用ではないようです。