openssl コマンドを使って オレオレ認証局を作成してサーバ証明書を発行する
の続きです
SAN
「SAN」とは、「Subject Alternative Name」の略称で、「サブジェクトの別名」という意味です。
Chrome 58 以降では、ドメイン名とサイト証明書を照合するために commonName ではなく、subjectAlternativeName 拡張のみが使用されます。
参考:SANについて教えてください https://jp.globalsign.com/support/faq/516.html
参考:Chrome Enterprise
「サブジェクトの代替名がありません」、「NET::ERR_CERT_COMMON_NAME_INVALID」、「この接続ではプライバシーが保護されません」のいずれかのエラーが表示される。
https://support.google.com/chrome/a/answer/9813310?hl=ja
SANが設定されたサーバ証明書を発行する
2つの方法がある。
(1) CSR を作成する時に SANを設定する
(2) 認証局が署名する時にSANを設定する
CSR を作成する時に SANを設定する
下記を参考にした。
OpenSSL で構築した認証局 (CA) でサーバ証明書を発行する方法
https://nodejs.keicode.com/nodejs/openssl-how-to-issue-certs.php#2-1Subject Alternative Name not present in certificate https://stackoverflow.com/questions/30977264/subject-alternative-name-not-present-in-certificate
Apple : 信頼済み証明書に関する今後の制限について https://support.apple.com/ja-jp/HT211025
(1) SANを記述した設定ファイル san.cnf を作成する
[ req ] default_bits = 2048 distinguished_name = req_distinguished_name req_extensions = req_ext [ req_distinguished_name ] countryName = Country Name (2 letter code) stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) organizationName = Organization Name (eg, company) commonName = Common Name (e.g. server FQDN or YOUR name) [ req_ext ] subjectAltName = @alt_names [alt_names] # SANを記述する DNS.1 = bestflare.com DNS.2 = usefulread.com DNS.3 = chandank.com
(2) 設定ファイルを使用して CSR を作成する
% openssl req -new -config san.cnf -key server_key.pem -out server.csr
(3) CSR を確認する
% openssl req -noout -text -in server.csr
(4) 運用局の設定ファイルを変更する
運用局の設定ファイルをコピーする ファイル名を ca.cnf に変更する。 [ CA_default ] セクションの 「copy_extensions = copy」をアンコメントする
[ CA_default ] # Extension copying option: use with caution. # copy_extensions = copy
(5) 設定ファイルを使って署名する
% openssl ca -config ca.cnf -in server.csr -out server_cert.pem -days 397
有効期限の最大は 397 日
(6) 証明書を確認する
% openssl x509 -text -noout -in server_cert.pem
認証局が署名する時にSANを設定する
下記を参考にした。
OpenSSLでx509証明書 認証局(CA)からの証明書発行
https://zv-louis.hatenablog.com/entry/2018/04/14/222210
1) CSR を作成する
% openssl req -new -key server_key.pem -out server.csr
(2) CSR を確認する
% openssl req -noout -text -in server.csr
(3) 拡張設定ファイル san.txt を作成する
ファイル名は何でもいい
SAN に設定する FQDN を書く
subjectAltName = DNS:hoge.com, DNS:fuga.com
(4) 拡張設定ファイルを使って証明書ファイルに署名する
% openssl ca -extfile san.txt -in server.csr -out server_cert.pem -days 397
有効期限の最大は 397 日
(5) 証明書を確認する
% openssl x509 -text -noout -in server_cert.pem