如何在openssl cli中指定subjectAltName?


9

我正在生成一个自签名SSL证书:

$ openssl req -x509 -newkey rsa:2048 -subj 'CN=example.com'

我也想在创建时指定一个subjectAltName,但是我无法在openssl手册页中找到有关如何执行此操作的信息。


2
没有命令行开关。您必须将其写入配置文件,然后使用此配置文件。
史蒂芬·乌尔里希

Answers:


4

尝试将subjectAltName写入一个临时文件(我将其命名为hostextfile),例如

basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=email:my@other.address,RID:1.2.3.4

并通过“ -extfile”选项在openssl命令中链接到它,例如:

openssl ca -days 730 -in hostreq.pem -out -hostcert.pem -extfile hostextfile

1
我相信那是正确的。X509v3使用者替代名称:DNS:kb.example.com,DNS:helpdesk.example.com
quadruplebucky

我用这个描述。
维克多

3

openssl命令无法在不首先写入配置文件的情况下提供包含诸如subjectAltName之类的扩展名的方法。我编写了一个简单的实用程序,可以自动完成所有操作。它可以在github上找到:https : //github.com/rtts/certify

使用示例:

./certify example.com www.example.com mail.example.com

这将创建一个名为的文件example.com.crt,其中包含带有example.com,www.example.com和mail.example.com的使用者备用名称的证书。


0

使用SubjectAltName创建自签名证书

cd /etc/ssl

cat > my.conf <<- "EOF"
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C=UA
ST=Dnepropetrovskaya
L=Kamyanske
O=DMK
OU=OASUP
emailAddress=webmaster@localhost
CN = www.dmkd.dp.ua

[ req_ext ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[ alt_names ]
DNS.0 = www.dmkd.dp.ua
DNS.1 = dmkd.dp.ua

EOF

# Create key
openssl genrsa -des3 -out server.key.secure 2048
# Disable secret phrase for key
openssl rsa -in server.key.secure -out server.insecure.key
# Create request certificate file with params from file my.conf
openssl req -new -key server.insecure.key -out server.csr -config my.conf
# Create certificate with params from file my.conf
openssl x509 -req -days 365 -in server.csr -signkey server.insecure.key -out server.crt -extensions req_ext -extfile my.conf
# Check request file and certificate for SubjectAltName precense
openssl req -text -noout -in server.csr
openssl x509 -in server.crt -text -noout

0

我在这里使用了信息,但仅将其简化为满足浏览所需的信息。

x509 v3扩展选项文件:

echo "subjectAltName = @alt_names

[alt_names]
DNS.1 = www.example.com" > v3.ext

外部密钥文件:

openssl genrsa -out www.example.com.key 2048

CA签名请求:(假设您具有CA密钥和证书)

openssl req -new -key www.example.com.key -subj "/CN=www.example.com" -out www.example.com.csr

签署请求以创建证书,并包括x509扩展数据:

openssl x509 -req -in www.example.com.csr -CA ca.example.com.crt -CAkey ca.example.com.key -CAcreateserial -out www.example.com.crt -days 500 -sha256 -extfile v3.ext
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.