如何创建具有无限有效性的Android密钥库RSA密钥?

时间:2013-01-11 06:20:42

标签: android rsa keystore android-keystore

以下是how Google suggests creating an Android keystore

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name \
  -keyalg RSA -keysize 2048 -validity 10000

虽然10000天似乎是永恒的,但27年的速度可能比您想象的要快,RSA可能仍在使用中。
如果调整命令行参数现在有0.01%的机会在未来节省我的市场份额,我愿意这样做。

问题:如何尽可能长时间地制作此有效期?

3 个答案:

答案 0 :(得分:13)

330万年,如果我正确地做了数学计算。

我查看了keytool的来源http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/security/tools/KeyTool.java,看起来有效期以秒为单位存储。长期可以持有的最大值2 63 - 1 106751991167300秒等于1235555453天,相当于3,385,083年。可能有其他因素不允许这么大的值,但这似乎是工具可以产生的最大数量。

答案 1 :(得分:10)

" 1000年"例如:

我创造了" 1000年" JKS密钥库也没有问题:

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 365000

然后,检查有效期:

keytool -list -v -keystore my-release-key.keystore

Enter keystore password:  

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry
...
Valid from: Tue Aug 04 15:28:01 BST 2015 until: Mon Dec 05 14:28:01 GMT 3014

因此,该密钥有效,直到 Mon Dec 05 14:28:01 GMT 3014

答案 2 :(得分:0)

做一些反复试验,我在9999年左右看到了一个实用的最大值。截至今天,有两个密钥以这种方式创建:

keytool -genkey -v -keystore year-9998.keystore -alias myalias -keyalg RSA -keysize 2048 -validity 2914760

keytool -genkey -v -keystore year-10002.keystore -alias myalias -keyalg RSA -keysize 2048 -validity 2916223

虽然两个键似乎都成功创建,但使用命令检查这些键:

keytool -list -v -keystore year-9998.keystore

  

运行正常,给予“有效期:从8月29日星期二11:12:45 CDT 2017直到:1月1日星期四10:12:45 CST 9998”

keytool -list -v -keystore year-10002.keystore

  

崩溃时出现“keytool error:java.security.cert.CertificateParsingException:java.io.IOException:Parse Generalized time,invalid format”

所以我认为实际的最大到期时间是在10000年之前。