以下是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%的机会在未来节省我的市场份额,我愿意这样做。
问题:如何尽可能长时间地制作此有效期?
答案 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年之前。