9

我正在使用以下命令创建我的密钥库:

keytool -genkey -keystore myStore.keystore -keyalg RSA -keysize 1024 -alias myAlias

我怎样才能生成一个过期日期(使用这个?我想用过期证书测试我的应用程序的行为)。

4

3 回答 3

10

您可以使用以下参数使用 keytool 命令生成过期证书。

-开始日期

-有效性

虽然有效性参数仅需要天数作为输入,但 startdate 参数可用于提及从有效性开始的时间。startdate 参数的输入格式 [yyyy/mm/dd][HH:MM:SS]

有关详细信息,请参阅此链接 http://docs.oracle.com/javase/7/docs/technotes/tools/windows/keytool.html

于 2016-05-10T07:09:39.387 回答
6

您可以使用以下openssl命令生成过期证书,这模仿了签署证书的官方流程。

注意:仅在 Linux 上测试。

假设自己是 CA

#Create CA key, which means you are now the CA using root.key and root.cer to sign certificates
openssl genrsa 4096 > root.key
#Create CA certificate expired ten years later
openssl req -new -x509 -key root.key -out root.cer -days 3650

现在,您是申请 CA 签名证书的人

#Generates your own private key 
openssl genrsa 4096 > server.key
#Build a Certificate Signing Request
openssl req -new -key server.key -out server.csr

现在你又是 CA

#sign the certificate and make the certificate expired 1 day ago. Pay attention to the negative -days argument( not working on MacOS )
openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -CAcreateserial -out server.cer -days -1

然后你可以检查日期

openssl x509 -noout -text -in server.cer

Validity Not Before: Mar 7 09:11:13 2019 GMT Not After : Mar 6 09:11:13 2019 GMT

于 2019-03-07T09:30:28.473 回答
3

使用 java keytool,keystore 证书的最短有效期可以是 1 天。

编辑:看起来-startdate@shyam0191 已经回答了一个选项。

因此,您不能(更正:您实际上可以)生成具有过去日期的证书。我建议使用以下命令,它会生成一个有效期为 1 天的证书,第二天您就可以使用它进行测试:

keytool -selfcert -alias Test -genkey -keystore myStore.keystore -keyalg RSA -validity 1

或使用@shyam0191 的答案,最终结果相同(但更快)。

于 2012-12-27T10:10:23.903 回答