我需要帮助创建具有多个 subjectAltNames 的 SSL 证书,并使用我自己制作的 CA 证书进行签名。
我需要的:
我在 OSX 10.10.5 上
我有 myCA.cer,我用它来签署另一个具有以下备用名称的 SSL 证书:
(但不确定 IP 是否可以作为替代名称……)
DNS.1 = foo.bearden.local
DNS.2 = www.bearden.local
DNS.3 = 192.168.1.58
我需要将此证书导入到已有 myCA.cer 的 iPhone 中。这样它才能在 iPhone 的操作系统中进行验证。
我做什么:
我运行这个 shell 脚本:
cat > ./cust.cnf <<-EOF
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
CN = *.bearden.local/ CN=192.168.1.58
[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = foo.bearden.local
DNS.2 = www.bearden.local
DNS.3 = 192.168.1.58
EOF
openssl genrsa -out foo.key 2048 -config ./cust.cnf && \
openssl req -new -out foo.csr -key foo.key -config ./cust.cnf && \
openssl x509 -req -sha256 -in foo.csr -extfile ./cust.cnf -out foo.crt -CAkey myCA.key -CA myCA.cer -days 365 -CAcreateserial -CAserial serial
问题/疑问:
1 - CN 中的通配符不起作用(即使我在钥匙串中设置了完全信任选项,Google Chrome 仍然说它不受信任)
2——当我将证书添加到钥匙串(myCA.cer 已经存在)时,它会将其识别为有效且受信任的,但证书本身(foo.crt)没有我在配置中提到的备用 DNS 名称。
请帮助我获取此类证书的多个 Alt DNS 名称
谢谢你!
答案1
这些是我应该做的改变以使其发挥作用(感谢 Steffen Ullrich):
openssl x509 -req -sha256 -in foo.csr -extfile ./cust.cnf -extensions v3_req -out foo.crt -CAkey myCA.key -CA myCA.cer -days 365 -CAcreateserial -CAserial serial
这里是openssl 文档-extfile
解释和选项如何-extensions
工作