複数の DNS エントリを持ち、独自の CA 証明書で署名された SSL 証明書を作成する方法

複数の DNS エントリを持ち、独自の CA 証明書で署名された SSL 証明書を作成する方法

複数の 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オプションの仕組みを説明する

関連情報