我正在编写一个需要某些Web请求的SSL证书的Android应用程序。与我在网上看到的使用cert文件创建密钥库文件的选项不同,我必须进行初始Web请求,该请求返回作为JSON响应中的字符串的证书。
JSON数据的格式如下...(注意:以下证书已缩短,“...”在实际响应中不存在)
我正在使用Base64.decode解码该值,以便将其保存为byte[]。
JSON数据的格式如下...(注意:以下证书已缩短,“...”在实际响应中不存在)
"result":{
"pkcs12": "Ulv6GtdFbjzLeqlkelqwewlq822OrEPdH+zxKUkKGX/eN...9801asds3BCfu52dm7JHzPAOqWKaEwIgymlk="
},
我正在使用Base64.decode解码该值,以便将其保存为byte[]。
ssl.setPkcs12( Base64.decode( jsonObject.optString( "pkcs12" ) ) );
接下来我尝试使用byte[]创建X509证书
CertificateFactory certFactory = CertificateFactory.getInstance( "X.509" );
InputStream in = new ByteArrayInputStream( ssl.getPkcs12() );
X509Certificate cert = (X509Certificate) certFactory.generateCertificate( in );
我的代码在调用 generateCertificate() 方法时出现错误:
"java.security.cert.CertificateException: org.apache.harmony.security.asn1.ASN1Exception: ASN.1 Sequence: mandatory value is missing at [4]".
我花了很多时间尝试修复一个看起来很简单的问题,但一直没有成功。任何帮助都将是惊人的!