草庐IT

java - Android KeyStore : Failed to generate self-signed certificate , 无效的日期字符串

coder 2023-11-24 原文

我正在尝试按照我的代码使用 android keystore 创建 key 对:

Calendar start = Calendar.getInstance();
                Calendar end = Calendar.getInstance();
                end.add(Calendar.YEAR, 10);
                KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(MyApplication.getInstance())
                        .setAlias(m_alias)
                        .setSubject(new X500Principal("CN="+m_alias))
                        .setSerialNumber(BigInteger.ONE)
                        .setStartDate(start.getTime())
                        .setEndDate(end.getTime())
                        .build();
                KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
                generator.initialize(spec);

                KeyPair keyPair = generator.generateKeyPair();

在运行时我得到了这个异常:

java.security.ProviderException: Failed to generate self-signed certificate
             at android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi.generateKeyPair(AndroidKeyStoreKeyPairGeneratorSpi.java:504)
             at java.security.KeyPairGenerator$KeyPairGeneratorImpl.generateKeyPair(KeyPairGenerator.java:276)

....
 Caused by: java.lang.IllegalArgumentException: invalid date string: Unparseable date: "af`cab`hdedfGMT+00:00" (at offset 0)
             at com.android.org.bouncycastle.asn1.ASN1UTCTime.<init>(ASN1UTCTime.java:115)
             at com.android.org.bouncycastle.asn1.DERUTCTime.<init>(DERUTCTime.java:23)
             at com.android.org.bouncycastle.asn1.x509.Time.<init>(Time.java:67)

我搜索了这个问题,但没有找到任何可能的解决方案,请您帮助解决这个问题。

注意事项: - 设备:HTC M9,Android v.6.0,版本号:3.35.401.12

  • 日期格式示例:开始日期:Sat Mar 12 23:10:08 GMT+03:00 2016。结束日期:2026 年 3 月 12 日星期四 23:10:08 GMT+03:00

提前致谢。

最佳答案

阿拉伯语或波斯语的 key 存储问题

当 keystore 生成 key 对时,它会生成一个自签名证书。 Android Keystore 内部使用的 ASN1 解析器没有正确地接受区域设置,它导致设备区域设置失败,语言从右到左。示例堆栈跟踪:

Caused by: java.lang.IllegalArgumentException: invalid date string: Unparseable date: "÷ððñðñððððððGMT+00:00"原因:java.lang.IllegalArgumentException 在 com.android.org.bouncycaSTLe.asn1.ASN1UTCTime.(ASN1UTCTime.java:115) 在 com.android.org.bouncycaSTLe.asn1.DERUTCTime.(DERUTCTime.java:23) 在 com.android.org.bouncycaSTLe.asn1.x509.Time.(Time.java:67) 在 android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi.generateSelfSignedCertificateWithFakeSignature(AndroidKeyStoreKeyPairGeneratorSpi.java:696)

向谷歌报告的问题:https://code.google.com/p/android/issues/detail?id=207613

关于java - Android KeyStore : Failed to generate self-signed certificate , 无效的日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35955604/

有关java - Android KeyStore : Failed to generate self-signed certificate , 无效的日期字符串的更多相关文章

随机推荐