プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2020/04/26

OpenSSL で SAN 付きの自己署名証明書を作成する

update2022/04/01 event_note2020/04/26 14:59

サーバー証明書に自己署名証明書を使っているとブラウザが警告を表示しますが、クライアント PC に証明書をインストールしても Chrome だけは警告が消えませんでした。

Chrome はコモンネームではなく SAN(Subject Alternative Name) をチェックしているからだそうです。(Chrome 58 以降)

そこで、以前 OpenSSL を使って自己署名証明書を作成しましたが、

今回はこれに SAN を加える方法です。

細かい説明は以前の記事(上記)に書いてあるので、ここでは実行するコマンドのみを載せたいと思います。

SAN 用のテキストファイルを用意

事前準備として、以下のように SAN の内容を記述したテキストファイルを用意します。
ファイル名は何でも構いません(今回は san.txt という名前で保存しました)。

subjectAltName = DNS:*.example.com, IP:172.20.0.1

DNS ではワイルドカードが使えますが、IP では使えません。

自己署名証明書の作成手順

秘密鍵の作成

以下のコマンドは公開鍵暗号方式として RSA を利用した 2048bit の秘密鍵 server.key を作成しています。

> openssl genrsa -out server.key 2048

証明書署名要求の作成

先ほど作成した秘密鍵 server.key を指定して証明書署名要求 server.csr を作成しています。

> openssl req -out server.csr -key server.key -new

いろいろ聞かれるので、適当に入力します。

サーバー証明書の作成

通常は上記で作成した証明書署名要求 server.csr を自分の秘密鍵 server.key で署名してサーバー証明書を作成します。

ここが前回と異なるところです。
SAN を付加するために -extfile san.txt が追加になっています。

> openssl x509 -req -days 3650 -signkey server.key -in server.csr -out server.crt -extfile san.txt

尚、上記は有効期限が 10 年間のサーバー証明書 server.crt を作成しています。

確認

SAN が付加されているか確認します。

> openssl x509 -text -in sample.crt -noout

X509v3 Subject Alternative Name: にテキストファイルに記述した SAN が追加されていれば OK です。