1

AndroidまたはBouncyCastleライブラリを使用してCA署名付きX509クライアント証明書から証明書チェーン情報を抽出できますか?

信頼できるサーバーからCA署名付きX509証明書を受信するAndroidクライアントがあります。署名されたクライアント証明書と秘密鍵をPKCS12(.p12)ファイルに保存したいと思います。私は現在、KeyStoreオブジェクトを作成し、証明書と秘密鍵を追加することによってこれを行っています。PrivateKeyメソッドを使用してクライアントを追加するとKeyStore.setKeyEntry()、aCertificate[] chainが最後の引数になり、現在はクライアント証明書のみが含まれています。これにより、CA証明書が含まれていないため、証明書を検証できなくなりCertificate[] chainますか?はいの場合、署名されたものから抽出された情報を証明書チェーンに入力することは可能X509Certificateですか?

ほとんどの例は、PEMファイルまたはBKSトラストストアからCAチェーンをロードするか、すでに証明書のリストにアクセスできるようです。

これが私が持っているものです:

    X509Certificate cert;      // signed client cert
    PrivateKey pkey;           // client private key
    String password; 

    KeyStore store;
    store = KeyStore.getInstance("PKCS12", "BC");
    store.load(null, null);

    // adding the signed cert
    store.setCertificateEntry("Client certificate", cert);

    // creating the cert chain
    X509Certificate[] chain = new X509Certificate[1];
    chain[0] = cert;
    // add rest of the certs in the chain here

    // adding the private key   
    store.setKeyEntry("Client private key", pkey, password.toCharArray(), chain);

    FileOutputStream fos;
    fos = openFileOutput("clientCredentials.p12", Context.MODE_PRIVATE);
    store.store(fos, password.toCharArray());
    fos.flush();
    fos.close();

前もって感謝します!

4

1 に答える 1

0

CA証明書は、署名された証明書には含まれていません。どこかから入手する必要があります(プレインストール、信頼できるサーバーからのダウンロードなど)。フルチェーンをインストールしない場合、検証者がすでに必要なCA証明書にアクセスできる場合、検証者はいつでもエンドエンティティ証明書を検証できます。キーと証明書をどのように使用するつもりですか?

ところで、への呼び出しsetCertificateEntry()は信頼できる証明書エントリを作成しますが、これはおそらくエンドエンティティ証明書で必要なものではありません。

于 2012-10-03T02:26:58.137 に答える