Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – Jelly bean的客户端证书错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用 Android,我使用TLS连接与相互身份验证与使用此代码创建的客户端证书.

private static X509Certificate generateX509V1Certificate(KeyPair pair,SecureRandom sr)
{
  String dn="CN="+sUuid.toString();
  final Calendar calendar = Calendar.geTinstance();
  calendar.add(Calendar.HOUR,-1);
  final Date startDate = new Date(calendar.getTimeInMillis());
  calendar.add(Calendar.YEAR,1);
  final Date ExpiryDate = new Date(calendar.getTimeInMillis());
  final BigInteger serialnumber =   
    BigInteger.valueOf(Math.abs(System.currentTimeMillis()));
  X509V1CertificateGenerator certGen = new X509V1CertificateGenerator();
  X500Principal dnName = new X500Principal(dn);
  certGen.setserialnumber(serialnumber);
  certGen.setIssuerDN(dnName);
  certGen.setNotBefore(startDatE);
  certGen.setNotAfter(ExpiryDate);
  certGen.setSubjectDN(dnName); // note: same as issuer
  certGen.setPublicKey(pair.getPublic());
  certGen.setSignatureAlgorithm("SHA256WithRSAEncryption");
  if (VERSION.SDK_INT<VERSION_CODEs.GINGERBREAD)
    return certGen.generateX509Certificate(pair.getPrivate(),"BC");
  else
    return  certGen.generate(pair.getPrivate(),sr);
}

密钥对算法是“RSA”.
密码算法是“RSA / ECB / PKCS1Padding”.

它在jelly Bean版本之前工作正常.

使用jelly bean,我在调用时收到错误

socket.getSession().getPeerCertificates()

该过程在日志中被杀死:

E/NativeCrypto(1133): error:140C10F7:SSL routInes:SSL_SET_PKEY:unkNown certificate type
A/libc(1133): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1),thread 1233 (AsyncTask #1)

我不知道如何解决这个bug.

你能帮助我吗 ?

解决方法

生成的证书转储到文件并尝试解析它OpenSSL 1.0.这与Android用于解析证书的代码相同,因此它应该可以帮助您找到错误.也许他们不再支持v1证书,你可以尝试生成一个v3证书.

大佬总结

以上是大佬教程为你收集整理的android – Jelly bean的客户端证书错误全部内容,希望文章能够帮你解决android – Jelly bean的客户端证书错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。