我有这三个语句来生成具有我自己的根证书的自签名证书。
openssl genrsa -out domain.org.key
openssl req -newkey rsa:2048 -nodes -keyout domain.org.key -subj "/C=CN/ST=GD/L=SZ/O=Acme, Inc./CN=*.domain.org" -out domain.org.csr
openssl x509 -req -extfile <(printf "subjectAltName=DNS:domain.org,DNS:www.domain.org") -days 1 -in domain.org.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out domain.org.crt
但是,在此期间,有效期只能更改一天。有谁知道我是否可以添加一个参数,让我将开始日期和结束日期更改为秒或分钟的粒度。为了进行测试,我需要创建几个证书,其有效期仅需几分钟。我查看了其他答案,他们建议使用ca
命令:
openssl ca -config /path/to/myca.conf -in req.csr -out ourdomain.pem \
-startdate 0801010000Z -enddate 1001010000Z
但是我不确定如何将两者结合起来,因为第二个命令似乎只是为域生成密钥。任何人都可以帮助组合这两个命令,或者以其他方式更改证书时间,而无需更改我的系统时间。
答案 0 :(得分:1)
openssl命令行不提供用于设置“ x509 -req”选项的开始和结束日期的命令行选项。
如果确实需要执行此操作,则可以修改openssl源代码以执行所需的操作。
在app \ req.c中,您需要修改“ set_cert_times”调用:
if (days == 0) {
/* set default days if it's not specified */
days = 30;
}
if (!set_cert_times(x509ss, NULL, NULL, days))
goto end;
int set_cert_times(X509 *x, const char *startdate, const char *enddate,
int days)
如果提供开始日期和结束日期,它将覆盖days参数,因此您可以执行以下操作:
if (!set_cert_times(x509ss, "0801010000Z", "1001010000Z", days))
goto end;
这将对开始日期和结束日期进行硬编码,或者通过做更多的工作,您可以在x509 -req处理中添加对-startdate和-enddate参数的支持。