26

以下是Google 建议创建 Android 密钥库的方式

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

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

问题:如何使此有效期尽可能长?

4

3 回答 3

22

“一千年”的例子:

我也毫无问题地创建了“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

因此,密钥在3014 年 12 月 5 日星期一 14:28:01 GMT之前有效

于 2015-08-04T14:50:57.657 回答
21

如果我计算正确,你应该能够创建一个有效期为 2920 亿年的密钥。

我查看了 keytool 的来源,http ://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/security/tools/KeyTool.java ,它看起来像有效期以秒为单位存储,作为一个长。long 可以容纳 2 63 - 1 的最大值是9223372036854776000 秒,即 106751991167300 天,即 292,271,023,045 年。可能还有其他因素不允许如此大的值,但这似乎是该工具可以生成的最大数量。

于 2013-01-11T06:44:15.740 回答
3

经过反复试验,我看到了 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

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

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

因“keytool 错误:java.security.cert.CertificateParsingException:java.io.IOException:解析通用时间,格式无效”而崩溃

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

于 2017-08-29T16:41:35.813 回答