【问题标题】:Specify days (expire date) for generated self-signed certificate with openssl使用 openssl 指定生成的自签名证书的天数(到期日期)
【发布时间】:2019-02-01 04:49:09
【问题描述】:

我还没有找到在哪里可以问这个问题,但看起来是the right place

使用以下命令,我可以为证书颁发机构 (CA) 生成自签名证书:

$ openssl req -new -x509 -days 3650 -config ./openssl/ca.cnf -key ./dist/ca_key.pem -out ./dist/ca_cert.pem

您可以看到设置结束日期的选项-days。如果我检查生成的证书,我会看到 days 选项有效:

$ openssl x509 -enddate -noout -in ./dist/ca_cert.pem
notAfter=Aug 23 11:29:57 2028 GMT

在所有places/tutorials 中,人们也使用days 选项。

但是如何在.cnf 配置中指定相同的选项? 我调查了很多articles,但似乎没有任何效果(ca.cnf):

[ ca ]
default_ca      = my_ca
default_days    = 3650 # does not work
days            = 3650 # does not work

[ my_ca ]
...
default_days    = 3650 # does not work
days            = 3650 # does not work
...

[ req ]
...
default_days    = 3650 # does not work
days            = 3650 # does not work
...

如果我不使用-days 选项,以上都不起作用:

$ openssl req -new -x509 -config ./openssl/ca.cnf -keyout ./dist/ca_key.pem -out ./dist/ca_cert.pem
$ openssl x509 -enddate -noout -in ./dist/ca_cert.pem
notAfter=Sep 25 11:38:48 2018 GMT

您可以看到已使用默认的 30 天。

我必须在.cnf 配置中的哪个位置指定-days 选项?

【问题讨论】:

    标签: ssl openssl ssl-certificate


    【解决方案1】:

    its source code,好像req这个工具不支持从配置文件中读取天数。变量days 只在几个明显的地方被修改。

    这在ca tool 中是不同的,在这里可以看到从配置文件here 中读取的天数。

    有多种方法可以为 CA 生成自签名证书。使用req 工具似乎很受欢迎,可能是因为您可以在单行中完成。我更喜欢的另一个选择是(另外)使用ca 工具,就像使用任何证书一样。这样,即使您的自签名 CA 证书也最终会进入 CA 管理。通过my_ca 部分中的default_days 配置选项,它还恰好为您提供了一种方法来满足您的要求。

    例如,您可以使用以下命令来实现。首先创建一个证书签名请求 (CSR),同时生成一个密钥对:

    openssl req -newkey rsa:2048 -keyout dist/ca_key.pem -out ca_csr.pem -config openssl/ca.cnf
    

    然后将 CSR 提交给 CA,就像您提交任何 CSR 一样,但使用 -selfsign 选项。这需要首先准备好您的 CA 目录结构,如果您想设置自己的 CA,无论如何都必须这样做。例如,您可以找到关于 here 的教程。提交请求可以如下进行:

    ca -selfsign -keyfile dist/ca_key.pem -in ca_csr.pem -out dist/ca_cert.pem \
        -outdir root-ca/cert -config openssl/ca.cnf
    

    将应用配置文件的my_ca 部分中的设置default_days,就像我的情况一样:

    $ openssl x509 -enddate -noout -in ./dist/ca_cert.pem
    notAfter=Aug 23 15:21:17 2028 GMT
    

    请注意,这些命令都取决于您的配置文件的内容。您可能必须与它们一起玩才能使它们为您工作,但这为您提供了整体方法。

    【讨论】:

    • 创建csr但不是key:openssl req -new -sha256 -key private/ca.key -out ca_csr.csr -config openssl_ca.cnf
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    相关资源
    最近更新 更多