2015-06-22 102 views
7

现在我已经产生了社会责任,其中包括场主题Alt名称:主题备用名称不在证书

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键名字被列入了吗?

+0

Stack Overflow是用于编程和发展问题的站点。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。另请参阅[我在哪里发布有关Dev Ops的问题?](http://meta.stackexchange.com/q/134306)。 – jww

+0

另请参阅[如何使用您的证书颁发机构签署证书签名请求?](http://stackoverflow.com/a/21340898/608639) – jww

+0

@jww我可以看到为什么你说这个问题是离题的,但似乎对于大多数涉及堆栈溢出的SSL相关问题(包括您正在链接的问题),都是如此:) – jimmy

回答

9

您可以使用:

copy_extensions = copy 

在你CA_default部分在openssl.cnf

,但只有当你确定,你可以信任的扩展在企业社会责任是在这个线程指出:http://openssl.6102.n7.nabble.com/subjectAltName-removed-from-CSR-when-signing-td26928.html

参见:How can I generate a self-signed certificate with SubjectAltName using OpenSSL?

+0

完美,这就像一个魅力!谢谢! – jimmy

+0

@jimmy - 小心'copy_extensions = copy'。您需要验证每个签名请求。坏人可以设置“CA = TRUE”,并且你会为他打造一个下级CA. – jww

+0

@jww好的建议。我将不得不考虑这一点。 – jimmy

0

对于每个人,谁doesn't喜欢编辑系统范围内的openssl.conf,有一个本地openssl CLI选项,用于将SAN从.csr添加到.crt。所有你必须使用的是openssl的-extfile-extensions CLI参数。

Here's一个例子:

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

这需要爱丽丝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选项对应于文件alice-csr.conf,在那里您可以定义[v3_req]节你主题备用名称又名域,这你想要颁发你的证书。

正如我一直很欣赏完全理解的例子,其中一个可以复制的每一步,我创建了一个例子项目设有弹簧引导微服务:https://github.com/jonashackt/spring-boot-rest-clientcertificates-docker-compose

相关问题