如何创建具有多个 DNS 条目的 SSL 证书并使用我自己的 CA 证书进行签名

如何创建具有多个 DNS 条目的 SSL 证书并使用我自己的 CA 证书进行签名

我需要帮助创建具有多个 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工作

相关内容