2017-04-11 8 views
1

Q:公開キーから公開キーサブジェクトIDを取得できるJava Key StoreからRSAキーペアを読み取ることはできますか?RSAPublicキーをX509Certificate(Java)に変換する

Java Keytoolを使用してSHA1 2048ビットキーでRSAを生成し、そのキーペアをJKSファイルに保存しました。ここからコードを使用してキーをロードすることができます:https://stackoverflow.com/a/26711907/1203182しかし、私はRSAPublicKeyを取得していますが、X509Certificateではありません。 RSA公開鍵には、公開鍵からSubject IDまたはDNを見つける方法がありません。

RSA公開鍵を変換する方法や、X509証明書を何らかの方法で派生させる方法はありますか?あるいは、私は何かを理解していないだけかもしれない。

答えて

1

そしていつものように、私はこれを掲示した後、私自身の答え秒を思い付きました。ラバーダックのコーディングについて語る解決策はかなり単純でした。私は間違った場所を探していました。下のコードスニペット...

Key key = keystore.getKey(alias, "password".toCharArray()); 
if (key instanceof PrivateKey) { 
    // Get certificate of public key 
    Certificate cert = keystore.getCertificate(alias); 

    //Answer > get the DN from 'cert.getSubjectDN()` 

    // Get public key 
    PublicKey publicKey = cert.getPublicKey(); 
    //publicKey is NOT where you can get the certificate DN.... 
-1

Javaで暗号化と復号化を処理する場合は、Bouncy Castleの使用をお勧めします。ここで

はあなたにいくつかの情報を与えることができる何か(私は彼がしたいと同じようにやりたいと思います)です:

PEMParser pemParser = new PEMParser(new StringReader(certPEMData)); 
    Object parsedObj = pemParser.readObject(); 
    System.out.println("PemParser returned: " + parsedObj); 
    if (parsedObj instanceof X509CertificateHolder) 
    { 
     X509CertificateHolder x509CertificateHolder = (X509CertificateHolder) parsedObj; 
     return x509CertificateHolder.getSubjectPublicKeyInfo().getPublicKeyData().getString(); 
    } 
    else 
    { 
     throw new RuntimeException("The parsed object was not an X509CertificateHolder."); 
    } 

Read public key from file in keystore

のコード例があり、このようになります。

そしてここにあなたのためにいくつかの情報を持っているはずBouncy城​​の図書館のウェブサイトがあります:

Bouncy Castle

あなたが怠惰な場合は、最新のバージョンへのリンクです。ビルドパスにそのJARファイルを含めて、上記のコードをコピーして貼り付けるだけで済みます。

Bouncy Castle library direct download

関連する問題