
複数の subjectAltNames を持ち、独自に作成した CA 証明書で署名された SSL 証明書を作成するのに助けが必要です。
必要なもの:
私はOSX 10.10.5を使用しています
次の別名を持つ別の SSL 証明書に署名するために使用する myCA.cer があります。
(ただし、IP が別名として使えるかどうかはわかりません…)
DNS.1 = foo.bearden.local
DNS.2 = www.bearden.local
DNS.3 = 192.168.1.58
この証明書を、すでに myCA.cer を持っている iPhone にインポートする必要があります。これが iPhone の OS で検証される方法です。
私がやること:
次のシェル スクリプトを実行します。
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 名がありません。
この種の証明書の複数の代替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
オプションの仕組みを説明する