果冻豆的客户端证书错误

问题描述:

使用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版本。

我只是有这个问题,并多了一个与以下错误:在0x3f80005c 致命信号11(SIGSEGV)(代码= 1),螺纹11709(FinalizerDaemon)

他们开始在随机发生的事情,当我升级到4.1 .1在使用客户端SSL验证的应用程序上通过使用KeyChain API中的密钥在Galaxy S3上运行。

它在4.0.4上运行良好(幸运的是我设法降级)。

我不是100%肯定,但4.1.1似乎有相关的SSL不少错误 - 检查这一个:http://code.google.com/p/android/issues/detail?id=35141 也是这一个:http://code.google.com/p/android/issues/detail?id=34577(可能不是有关当前情况下) 同样在这个论坛帖子中:https://groups.google.com/forum/?fromgroups=#!topic/android-developers/Lj2iHX4prds在对从KeyChain API返回的PrivateKey对象进行GC操作时,有一段关于SEGFAULT的提及。

所以作为最后的建议 - 尽可能长时间停留在4.0.4上或转到4.1.2 - 似乎有一些错误修复。

另外,我可以证实,我所拥有的两个问题在4.1.2模拟器上不存在。 Galaxy S3没有4.1.2图像,所以我无法确认它们是否适用于真实设备(没有其他设备)。

希望heps。