如何建立具有多個 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瀏覽器仍然說它不受信任,即使我在鑰匙圈中設定了完整的信任選項)

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工作

相關內容