
我需要協助建立具有多個 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
工作