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

Nic*_*oul 13 android rsa keystore android-keystore

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

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name \
  -keyalg RSA -keysize 2048 -validity 10000
Run Code Online (Sandbox Code Playgroud)

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

问题:如何尽可能长时间地建立这个有效期?

EJK*_*EJK 17

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年.可能有其他因素不允许这么大的值,但这似乎是工具可以产生的最大量.

  • `jarsigner`(“官方”命令行工具)在我刚刚创建的有效期为 10,000,000 天的密钥库上崩溃。因此,虽然理论上是正确的,但实际答案可能要少一些。 (2认同)

Dan*_*ail 13

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

因此,密钥有效期至格林威治标准时间3014年11月5日14:28:01

  • 1,000,000天似乎也有效.但是,10,000,000天不起作用. (2认同)