openssl コマンドを使って SANを設定したサーバ証明書を発行する

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を設定する

下記を参考にした。

(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