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 typeA/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的客户端证书错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)