![如何建立具有多個 DNS 條目的 SSL 證書,並使用我自己的 CA 證書簽名](https://rvso.com/image/1476393/%E5%A6%82%E4%BD%95%E5%BB%BA%E7%AB%8B%E5%85%B7%E6%9C%89%E5%A4%9A%E5%80%8B%20DNS%20%E6%A2%9D%E7%9B%AE%E7%9A%84%20SSL%20%E8%AD%89%E6%9B%B8%EF%BC%8C%E4%B8%A6%E4%BD%BF%E7%94%A8%E6%88%91%E8%87%AA%E5%B7%B1%E7%9A%84%20CA%20%E8%AD%89%E6%9B%B8%E7%B0%BD%E5%90%8D.png)
我需要協助建立具有多個 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瀏覽器仍然說它不受信任,即使我在鑰匙圈中設定了完整的信任選項)
2 -- 當我將憑證新增至鑰匙圈時(myCA.cer 已經存在),它會將其識別為有效且受信任的,但憑證本身(foo.crt) 沒有我在設定中提到的備用DNS名稱。
請幫我取得此類憑證的多個備用 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
工作