证书中不存在主题备用名称

问题描述 投票:0回答:4

我已生成包含字段主题替代名称的 CSR:

openssl req -out mycsr.pem -new -key mykey.pem -days 365

当我检查它时,它看起来与预期的一样,存在一个新字段:

X509v3 Subject Alternative Name:
    DNS: my.alt.dns

但是,当我使用它来签署证书时,该字段由于某种原因被省略。

我使用以下命令生成它:

openssl ca -out mycert.pem -infiles mycsr.pem

我的 CA 证书是否必须包含相同的 Alt 名称才能包含在内?

ssl openssl ssl-certificate
4个回答
60
投票

对于不喜欢编辑系统范围

openssl.conf
的每个人来说,有一个本机 openssl CLI 选项,用于将 SAN 从
.crt
添加到
.csr
。您所需要使用的只是 openssl 的
-extfile
-extensions
CLI 参数。

这是一个例子:

openssl x509 -req -days 3650 -in alice.csr -signkey aliceprivate.key -out alice.crt -extfile alice-csr.conf -extensions v3_req

这需要一个 alice-csr.conf 文件,它看起来像这样(填写适当的数据),用于使用命令

.csr
生成
openssl req -new -key aliceprivate.key -out alice.csr -config alice-csr.conf
:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no

[req_distinguished_name]
C = DE
ST = Thuringia
L = Erfurt
O = Alice Corp
OU = Team Foo
CN = server-alice

[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = server-alice
DNS.2 = localhost

请记住,

-extensions v3_req
选项对应于文件
[v3_req]
中的
alice-csr.conf
部分,您可以在其中定义您想要向其颁发证书的主题备用名称(也称为域)。

由于我一直欣赏完全理解的示例,可以重现每一步,因此我创建了一个具有 Spring Boot 微服务的示例项目:https://github.com/jonashackt/spring-boot-rest-clientcertificates-docker-compose


29
投票

您可以使用:

copy_extensions = copy 

CA_default
openssl.cnf
部分下。

但只有当您确定可以信任 CSR 中的扩展时,如本线程中指出的: http://openssl.6102.n7.nabble.com/subjectAltName-removed-from-CSR-when-signing -td26928.html

另请参阅:如何使用 OpenSSL 生成带有SubjectAltName 的自签名证书?


10
投票

使用替代名称签署 CSR 的描述如下:https://www.feistyduck.com/library/openssl-cookbook/online/ch-openssl.html#creating-certificates-valid-for-multiple-hostnames

简而言之,您创建一个仅包含替代名称的

something.ext
文件:

subjectAltName = DNS:*.my.alt.dns, DNS:my.alt.dns

然后在

openssl x509 -req ...
命令中引用该文件:
-extfile something.ext
。请注意,这是在签署 CSR 时发生的,而不是在准备 CSR 时发生的。


2
投票

另一种不涉及任何配置文件的方法是将

-copy_extensions copyall
参数添加到
openssl x509 -req ...
命令中。

© www.soinside.com 2019 - 2024. All rights reserved.