如何生成openssl证书,有效期不到一天?

时间:2012-08-14 07:02:11

标签: linux openssl

我正在尝试使用openssl命令创建CA签名的最终实体证书,如下所示,在Linux中:

# openssl genrsa -des3 -out clientkey.pem 2048
# openssl req -new -key clientkey.pem -out clientcert.csr
# cp clientkey.pem clientkey.pem.org
# openssl rsa -in clientkey.pem.org -out clientkey.pem
# openssl x509 -req -days 1 -in clientcert.csr -out clientcert.pem -CA cacert.pem -CAkey cakey.pem -CAcreateserial

是否可以以小时而不是天来指定到期时间?我需要生成证书,比如1小时的到期时间,以进行一些测试。

Openssl命令似乎支持一些指定startdate和enddate的选项,但我无法弄清楚如何使用它。 (我假设enddate可能支持指定日期和时间)。

#openssl x509 -req -startdate 120814050000Z -enddate 120814060000Z -in clientcert.csr -out clientcert.pem -CA cacert.pem -CAkey cakey.pem -CAcreateserial

unknown option 120814050000Z
usage: x509 args
.
.
-startdate      - notBefore field
-enddate        - notAfter field
.
.
-days arg       - How long till expiry of a signed certificate - def 30 days

5 个答案:

答案 0 :(得分:26)

x509命令的-startdate和-enddate选项是显示选项。您可以使用ca命令设置特定的开始和结束时间,而不是签署证书。

尝试这样的事情:

openssl ca -config /etc/openssl.cnf -policy policy_anything -out clientcert.pem -startdate 120815080000Z -enddate 120815090000Z -cert ca.pem -keyfile cakey.pem -infiles clientcert.csr

答案 1 :(得分:3)

尝试允许以不同时间单位指定证书有效期开始日期和持续时间的gossl

我开发它来克服命令行openssl的限制。 该工具是轻量级的,在Go中实现,没有依赖性,在MIT许可下。

答案 2 :(得分:1)

您可以将-days选项设置为0:

openssl x509 -req -days 0 -in clientcert.csr -signkey cert.key -out ssl.crt

这将创建一个notBeforenotAfter等于当前时间的证书(即您的证书将立即失效)。

答案 3 :(得分:1)

第1步。安装假时间

sudo apt-get install faketime

第2步。。在当前日期前一天生成过期的证书。

faketime 'last friday 5 pm' /bin/bash -c 'openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 6 -nodes'

步骤3 验证证书的有效日期

openssl x509 -noout -text -in cert.pem

Certificate Validity dates - Screenshot

答案 4 :(得分:-1)

或者这是我找到的另一种工作方式

说我希望我的证书在10分钟内过期作为测试

  

当前日期是2月17日   当前时间是4:40 pm

     

首先我将系统日期设置为-1天:2月16日   我将系统时钟设置为+10分钟:下午4:50

我使用openssl x509创建我的证书,在1天后到期,这真的意味着今天到期Feb 17th

openssl x509 -req -days 1 -in clientcert.csr -signkey cert.key -out ssl.crt

然后我将系统时钟和时间重置为实际日期和时间,并且您有一张证书将在10分钟后到期!

显然,这不是真正做事的方式,而是为开发使用创建自签名证书的好方法。