2016-12-01 10 views
-1

Javaコードを使用して存在するキーストアからcsrを生成する方法は?javaを使用して存在するキーストアからcsrを生成する方法

機能(ただし、ファイルgenearateない)

をキーツール-certreq -alias certificate_alias -keystore jssecacerts -storepass changeitと-file client.csr

私はちょうど見つけたなどと同じになります影響を及ぼす"Generating a Certificate Signing Request using Java API"

私はすでにX.509証明書を持っていますが、どのようにしてこの証明書を使ってjavaでcsrを生成できますか?

KeyStore ts = KeyStore.getInstance("JKS"); 
FileInputStream is = new FileInputStream(trustStoreFileName); 

ts.load(is, trustStorePassword.toCharArray()); 
is.close(); 
X509Certificate x509Cert = (X509Certificate)ts.getCertificate("certificate_alias"); 

CSRを生成するにはどうすればよいですか?

私はちょうどそれが〜

が存在する証明書からCSRを生成するために、すべての私のコードを共有するには解決します。

KeyStore ks = KeyStore.getInstance("JKS"); 
FileInputStream is = new FileInputStream(trustStoreFileName); 

ks.load(is, trustStorePassword.toCharArray()); 
is.close(); 

X509Certificate x509Cert = (X509Certificate)ks.getCertificate("certificate_alias"); 

X500Principal principal = x509Cert.getSubjectX500Principal(); 
X500Name x500Name = new X500Name(principal.getName()); 

PublicKey publicKey = x509Cert.getPublicKey(); 
PrivateKey privateKey = (PrivateKey) ks.getKey("certificate_alias", trustStorePassword.toCharArray()); 

String sigAlg = x509Cert.getSigAlgName(); 
PKCS10 pkcs10 = new PKCS10(publicKey); 
Signature signature = Signature.getInstance(sigAlg); 
signature.initSign(privateKey); 
pkcs10.encodeAndSign(new X500Signer(signature, x500Name)); 
ByteArrayOutputStream bs = new ByteArrayOutputStream(); 
PrintStream ps = new PrintStream(bs); 
pkcs10.print(ps); 
byte[] c = bs.toByteArray(); 
try { 
    if (ps != null) 
     ps.close(); 
    if (bs != null) 
     bs.close(); 
} catch (Throwable th) { 
} 
+0

既存のキーストアからCSRを生成しています*。秘密鍵を持たないため、証明書からCSRを生成することはできません。あなたの質問は理にかなっていません。 – EJP

+0

あなたの答えをありがとう、私はそれを解決〜 – RoyHSIEH

答えて

2

CSRに署名するには、証明書の公開鍵と秘密鍵が必要です。 JKSには、x509証明書と鍵のペアが含まれます。したがって、あなたが持っていることを確認してください。

PrivateKey privateKey = ts.getPrivateKey("certificate_alias"); 

CSRに署名したら、CAは新しいX509証明書を発行します。しかし、新しい証明書を発行するために既存の鍵(改ざんされている可能性がある)を再利用するのは通常ではありません。新しい鍵ペアを生成することをお勧めします。

関連する問題