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

问题描述 投票:0回答:4

这是 Google 建议如何创建 Android 密钥库

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

虽然 10000 天看起来像是永恒,但 27 年可能比你想象的要快,而且 RSA 可能仍在使用。
如果现在调整命令行参数有 0.01% 的机会在未来挽救我的市场份额,我愿意这样做。

问题:如何让这个有效期尽可能长?

android rsa keystore android-keystore
4个回答
29
投票

“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


23
投票

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

我查看了 keytool 的源代码,http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/security/tools/KeyTool.java,并且看起来有效期是以秒为单位存储的,很长。多头可以容纳的最大值为 263 - 1 为 9223372036854776000 秒,相当于 106751991167300 天,相当于 292,271,023,045 年。可能还有其他因素不允许这么大的值,但这似乎是该工具可以生成的最大数量。


4
投票

经过一些反复试验,我发现实际最大值大约在 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 年之前。


0
投票

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

输入密钥库密码:

密钥库类型:JKS 密钥库提供商:SUN

您的密钥库包含 1 个条目 ... 有效日期:8月4日星期二15:28

© www.soinside.com 2019 - 2024. All rights reserved.