问题描述
我需要帮助来了解如何创建具有多个DNS的CSR。我正在使用Windows命令提示符创建CSR
我最初使用
Openssl req -new -newkey rsa:2048 -nodes -keyout -test.key -out test.csr
使用1个通用名称创建csr。
openssl genrsa -out test.key
openssl req -new -key test.key -out test.csr -config csr.conf
openssl x509 -req -days 365 -in test.csr -signkey test.key -out test.crt -extensions req_ext -extfile csr.conf
但是,我敢肯定,所有人都很明显,第二行的-config命令不起作用。说找不到以下文件配置文件。
我对所有这些都很陌生。我正在做企业社会责任,因为这是我实习的一部分。没人知道怎么做对没有帮助。我尝试在线搜索了半天,但仍然找不到问题所在。
解决方法
-
(元)这与编程问题无关,很可能被关闭。尽管在最近十年中,stackoverflow的范围相当广泛,但近年来,由于针对其他主题创建了其他stackexchange网站,并且大量的非编程问题使该网站更难以用于其预期目的,并且观众对主题的使用也越来越严格。 / p>
-
CSR和X.509证书中的“主题”字段只能有效地在CommonName中包含一个DNS名称,至少与TLS常用,即
artist协议(以前称为TLS) SSL。从技术上讲,RDN可以具有多个值,但规范规定仅使用第一个,而忽略所有其他值。如果此证书是用于TLS以外的证书,则可能允许名称属性的其他组合,在这种情况下,您应参考该协议或应用程序的相关规范。 -
对于TLS和其他一些用途,您可以可以将多个DNS名称放入SubjectAlternativeName extension (SAN)中,如RFC 6125和HTTPS中对TLS所述,特别是{ {3}}。
-
可以在CSR中放置SAN扩展(或技术上是 requested 扩展)。在具有OpenSSL的正确设计的系统上,这在手册页中进行了描述,但Windows却没有手册页,因此您需要查看在线版本RFC 2818,该版本通常描述了配置文件并链接到for
req(1)
专门描述了SAN。 -
但是由于您使用
openssl x509 -req
从CSR创建证书,所以这完全没用,因为x509 -req
没有使用CSR的任何扩展名。相反,如果要使用包含DNS名称的SAN证书,则需要使用此扩展名而不是CSR创建证书。最简单的方法是将req
和-new
一起使用-x509
,它可以有效地结合您的第二步和第三步:openssl req -new -key test.key -x509 -days 365 -config $file -out test.crt
在这种情况下,如上面链接的手册页所述,配置文件可以指定主题名称和扩展名(使用
x509_extensions
项),这些扩展名可以包括SAN。您也可以像第一个示例一样将其包括第一步(genrsa
):openssl req -new -newkey rsa:2048 -nodes -keyout test.key -x509 -days 365 -config $file -out test.crt