小编cal*_*pid的帖子

Android - 将pkcs12证书字符串转换为bks密钥库的x509证书对象

我正在编写一个Android应用程序,需要对某些Web请求进行SSL认证.与我在网上看到的关于使用cert文件创建密钥库文件的选项不同,我必须创建一个初始Web请求,将证书作为json响应中的字符串返回.

JSON数据的格式如下...(注意:缩短了以下证书,实际响应中不存在"...")

"result":{
    "pkcs12": "Ulv6GtdFbjzLeqlkelqwewlq822OrEPdH+zxKUkKGX/eN...9801asds3BCfu52dm7JHzPAOqWKaEwIgymlk="
},
Run Code Online (Sandbox Code Playgroud)

我使用Base64.deocode解码此值以将其保存为byte []

ssl.setPkcs12( Base64.decode( jsonObject.optString( "pkcs12" ) ) );
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用byte []创建X509Certificate

CertificateFactory certFactory = CertificateFactory.getInstance( "X.509" );
InputStream in = new ByteArrayInputStream( ssl.getPkcs12() );
X509Certificate cert = (X509Certificate) certFactory.generateCertificate( in );
Run Code Online (Sandbox Code Playgroud)

我的代码在generateCertificate()方法上失败了

"java.security.cert.CertificateException: org.apache.harmony.security.asn1.ASN1Exception: ASN.1 Sequence: mandatory value is missing at [4]".
Run Code Online (Sandbox Code Playgroud)

我花了很多时间试图解决看似简单的问题而根本没有运气.任何帮助都会很棒!

java ssl android keystore x509certificate

5
推荐指数
1
解决办法
6172
查看次数

标签 统计

android ×1

java ×1

keystore ×1

ssl ×1

x509certificate ×1