linux 如何生成有效期少于一天的openssl证书?

6yoyoihd  于 2022-11-28  发布在  Linux
关注(0)|答案(5)|浏览(264)

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

# 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
z2acfund

z2acfund1#

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
lh80um4z

lh80um4z2#

    • 步骤-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
    Data:
        Version: 3 (0x2)
        Serial Number: 10001009279078968790 (0x8acab8f3a2e32dd6)
    Signature Algoritm: sha256WithRsaEncryption
        Issuer: C=AU, ST=Some-State, O=Internet Widgits Pty Ltd
        Validity:
            Not Before: May 15 17:00:03 2020 GMT
            Not After : May 21 17:00:03 2020 GMT
        Subject: C=AU, ST=Some-State, Internet Widgits Pty Ltd
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
...
slhcrj9b

slhcrj9b3#

或者这是我发现的另一种方法
假设我希望我的证书在10分钟后到期,作为测试
当前日期为2月17日
现在是下午4点40分
首先,我将系统日期设置为-1天:2月16日
我将系统时钟设置为+10分钟:下午四点五十分
我使用openssl x509创建我的证书,使其在1天内到期,这实际上意味着在今天到期Feb 17th

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

然后,我重新设置我的系统时钟和时间,以实际的日期和时间,瞧,你有一个证书,将在10分钟内到期!
显然不是真实的的做事方式,但很好,很容易创建自签名证书供开发人员使用。

ggazkfy8

ggazkfy84#

尝试gossl,它允许以不同的时间单位指定证书有效性开始日期和持续时间。
我开发它是为了克服命令行openssl的限制。这个工具是轻量级的,在Go语言中实现,没有依赖性,在MIT许可证下。

mec1mxoz

mec1mxoz5#

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

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

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

相关问题