私はAndroidプロジェクトを開発中です。PEM証明書をAndroidにインストールする適切な方法
Iは、PEM証明書文字列を持っている:
-----BEGIN CERTIFICATE-----
MIIEczCCA1ugAwIBAgIBADANBgkqhkiG9w0BAQQFAD..AkGA1UEBhMCR0Ix
EzARBgNVBAgTClNvbWUtU3RhdGUxFDASBgNVBAoTC0..0EgTHRkMTcwNQYD
VQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5IENlcn..XRpb24gQXV0aG9y
...MANY LINES...
It8una2gY4l2O//on88r5IWJlm1L0oA8e4fR2yrBHX..adsGeFKkyNrwGi/
7vQMfXdGsRrXNGRGnX+vWDZ3/zWI0joDtCkNnqEpVn..HoX
-----END CERTIFICATE-----
私はバイト配列にPEM列の上方復号
(CERT_STR
という名前の変数に証明書文字列の上に割り当てられた):
byte[] pemBytes = Base64.decode(
CERT_STR.replaceAll("-----(BEGIN|END) CERTIFICATE-----", "")
.replaceAll("\n", "")
.getBytes("UTF-8"),
Base64.DEFAULT
);
I次のコードを使用して、Android携帯にプログラムでPEM証明書をインストールしてみてください:
Intent intent = KeyChain.createInstallIntent();
// because my PEM only contains a certificate, no private key, so I use EXTRA_CERTIFICATE
intent.putExtra(KeyChain.EXTRA_CERTIFICATE, pemBytes);// above PEM bytes
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
(アンドロイド7デバイスに)私のコードを実行すると、Androidのシステム証明書インストーラアプリはウィンドウをポップアップ、私はそのウィンドウの「OK」ボタンを押すと、私はログを以下ました:
java.io.IOException: stream does not represent a PKCS12 key store
at com.android.org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi.engineLoad(PKCS12KeyStoreSpi.java:793)
at java.security.KeyStore.load(KeyStore.java:1247)
at com.android.certinstaller.CredentialHelper.loadPkcs12Internal(CredentialHelper.java:396)
at com.android.certinstaller.CredentialHelper.extractPkcs12Internal(CredentialHelper.java:364)
at com.android.certinstaller.CredentialHelper.extractPkcs12(CredentialHelper.java:354)
at com.android.certinstaller.CertInstaller$1.doInBackground(CertInstaller.java:328)
at com.android.certinstaller.CertInstaller$1.doInBackground(CertInstaller.java:327)
私の質問:
私はEXTRA_CERTIFICATE &を使用していたが
intent
に設定し、私はEXTRA_PKCS12を使用しますが、ログ、AndroidのSYからありませんよ私はPKCS#12キーストアをインストールしていると思っています。どうして?プログラムでPEM証明書をAndroidにインストールする正しい方法は何ですか?
それを変換しようとしないために 'ストリームがPKCS12キーstore'を表していない何らかの理由で期待されていることを確認することをお勧めPKCS12へ? –
しかし、私はまだAndroidにPEMをインストールするための正しい方法は何かを知りたいのですが、それは私の質問のポイントです。 –
これはhttps://stackoverflow.com/questions/40464815/install-x509-certificate-programmatically-in-my-case – ozbek