Tips: ssl and openssl

自己証明書を追加して開発環境でSSLの警告が出ないようにする。
chromeなどのブラウザの場合、サブジェクトの代替名(SAN)の拡張フィールドがないと警告が表示される。
参考:https://pvision.jp/tech/2023/04/importing-self-signed-certificate-as-root-certificate/
(2024/8/7ではsafariはSANなしでもOK)
大まかな流れは以下
- CSRの作成
- 自己署名
- 開発サーバにhttpsを設定
- 証明書を開発PCで信頼
具体手順
SANの追加タイミングは以下の方法がある模様。
- CSR作成時にSANの拡張フィールド追加
- 自己署名時にSANの拡張フィールド追加
参考:https://ken-ohwada.hatenadiary.org/entry/2021/02/27/122841
「CSR作成時にSANの拡張フィールド追加」をする場合
拡張フィールドの追加には拡張フィールドの設定ファイルを追加するようなやり方が紹介されていることが多いが、以下記事のように「-addext」オプションで追加するのが開発用の証明書では楽でよかった。
openssl req -new -key web-server.key -out web-server.csr -addext "subjectAltName=DNS:example.com"
引用:https://pvision.jp/tech/2023/04/importing-self-signed-certificate-as-root-certificate/
証明書を作成したら、開発サーバーに秘密鍵と証明書を設定。
開発PCで証明書を信頼するとして設定。
(Macの場合、.crtファイルを実行するだけでキーチェーンに登録。その後キーチェーン内で証明書を「信頼する」に変更することを忘れずに)

おまけで
chromeはPC自体の信頼するrootCAを参照する。(少なくてもwindowsはそうらしい。Macのchormeも設定画面から「証明書の管理」でキーチェーンが起動されるからその模様)
chromeで「NET::ERR_CERT_AUTHORITY_INVALID」のエラーは証明書が信頼できないなど証明書周りのエラー。
参考:https://www.cybertrust.co.jp/blog/ssl/knowledge/certificate-errors03.html