ssl - 使用 openssl 为生成的自签名证书指定天数(过期日期)

标签 ssl openssl ssl-certificate

我还没有找到在哪里可以问这个问题,但看起来是 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 选项?

最佳答案

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

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

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

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

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

请注意,这些命令都取决于您的配置文件的内容。您可能需要试用它们才能让它们为您工作,但这为您提供了总体方法。

关于ssl - 使用 openssl 为生成的自签名证书指定天数(过期日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52025910/

相关文章:

Excel - 此站点的安全证书的吊销信息不可用

python - 由于环境错误,pip3 安装失败

ssl - youtube 自定义小工具 ssl 级别应该是多少

java - 打包为 jar 时的 Alexa 语音服务 SSL 握手

c - 有没有办法用只有 pem 公钥文件或 pem 私钥文件的 RSA 进行加密和解密?

ssl - 创建 csr 文件(用于 ssl 证书)时我使用哪个街道地址?

eclipse - 由于 InvalidAlgorithmParameterException : the trustAnchors parameter must be non-empty,无法从/向中央传输 Artifact

java - SSL 与 javamail 不工作

php - curl 错误 : SSL connect error

c++ - Boost ASIO SSL 握手失败