Android KeyStore:无法生成自签名证书,无效的日期字符串

Rad*_*adi 8 java android x509certificate

我正在尝试使用Android Keystore按照我的代码创建keyPair:

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();
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

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

注: - 设备:HTC M9,Android v.6.0,内部版本号:3.35.401.12

  • 日期格式示例:开始日期:星期六3月12日星期三23:10:08 GMT + 03:00 2016.结束日期:3月12日星期四23:10:08 GMT + 03:00 2026

提前致谢.

小智 1

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

\n\n

当密钥库生成密钥对时,它会生成一个自签名证书。Android 密钥库内部使用的 ASN1 解析器无法正确接收区域设置,并且会导致从右到左语言的设备区域设置失败。示例堆栈跟踪:

\n\n

引起原因:java.lang.IllegalArgumentException:无效的日期字符串:无法解析的日期:“\xc3\xb7\xc3\xb0\xc3\xb0\xc3\xb1\xc3\xb0\xc3\xb1\xc3\xb0\xc3\xb0\ xc3\xb0\xc3\xb0\xc3\xb0\xc3\xb0GMT+00:00" \n 位于 com.android.org.bouncycastle.asn1.ASN1UTCTime。(ASN1UTCTime.java:115)\n 位于 com.android.org .bouncycastle.asn1.DERUTCTime。(DERUTCTime.java:23)\n 在 com.android.org.bouncycastle.asn1.x509.Time。(Time.java:67)\n 在 android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi.generateSelfSignedCertificateWithFakeSignature (AndroidKeyStoreKeyPairGeneratorSpi.java:696)

\n\n

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

\n