特定のWebリクエストに対してSSL認証を必要とするAndroidアプリケーションを作成しています。証明書ファイルを使用してキーストアファイルを作成する方法についてオンラインで参照するオプションとは異なり、私はjsonレスポンスの文字列として証明書を返す初期Webリクエストを作成する必要があります。Android - pkcs12証明書文字列をbksキーストアのx509証明書オブジェクトに変換する
JSONデータが...次のようにフォーマットされます。私は、この値をデコードしています
"result":{
"pkcs12": "Ulv6GtdFbjzLeqlkelqwewlq822OrEPdH+zxKUkKGX/eN...9801asds3BCfu52dm7JHzPAOqWKaEwIgymlk="
},
(注次の証明書が短縮されるが、「...」実際の応答には存在しません) Base64.deocodeを使用すると、バイトとして保存するには、[]次に
ssl.setPkcs12(Base64.decode(jsonObject.optString("pkcs12")));
私はバイトを使用してのX509Certificateを作成しようとしています[]
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
InputStream in = new ByteArrayInputStream(ssl.getPkcs12());
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(in);
私のコードは、私はまったく運を持つ単純な問題と思われるものを修正しようと多くの時間を費やしている
"java.security.cert.CertificateException: org.apache.harmony.security.asn1.ASN1Exception: ASN.1 Sequence: mandatory value is missing at [4]".
でgenerateCertificate()メソッドに失敗しています。どんな助けも素晴らしいだろう!誰が答えを必要とする場合には
ここに証明書を含むJSON応答を貼り付けることはできますか? – emboss
"結果":{ "PKCS12": "Ulv6GtdFbjzLeqlkelqwewlq822OrEPdH + zxKUkKGX/EN ... 9801asds3BCfu52dm7JHzPAOqWKaEwIgymlk =" } – calebisstupid