コマンド
使用したバージョン
まとめ・ポイント
- コマンドについて
private_key.pem
: 秘密鍵certificate.pem
: サーバ証明書- ヒアドキュメント部分は別ファイルにしても良い。
- サーバ証明書を Chrome から登録するには、
chrome://settings/security
のページの "証明書の管理 HTTPS / SSL の証明書と設定を管理します" のリンクから登録する。 Mac なので、キーチェーンアクセスが立ち上がり、そこで登録した。 - ブラウザで確認するとき、作成したサーバ証明書であるかどうかを判断するために有効期限に注目していた。おかしいと感じた場合は、 Chrome を再起動したり、それでもダメな場合は Mac を再起動して作成したサーバ証明書が使われるようにした。
実践。実際のサーバ証明書作成の様子
実践。サーバ証明書 Mac キーチェーンアクセスに登録した絵
実践。 Chrome でサーバ証明書を確認した絵
おわりに
以前自己署名のサーバ証明書を作って活用していたことがあったのですが、作り方をすっかり忘れてしまいました。あーでもないこーでもないと数日試行錯誤して、ようやく納得いく作り方が完成しましたので、メモいたしました。
その際、次のキーワードなどで調べました。
- NET::ERR_CERT_INVALID openssl localhost
- openssl san localhost
- docker php-apache ssl
- chrome 自己証明書 localhost
- ERR_SSL_KEY_USAGE_INCOMPATIBLE
- openssl-req man
- openssl req 自己署名
- openssl req ワンライナー
- chromeに怒られない openssl
また、最終的に次のページの方法をベースといたしました。ありがとうございました。
なお、納得いく、とは申しましても、 openssl の仕組みや背景をすっかり理解して使っている訳ではないので、何か漏れはあるかもしれませんが、それでも一応当初の目的は達成できた、という状況であることをお断りします。
また、タイトルにもありますが、今回作成したサーバ証明書はあくまでも開発用途であり、一般に公開するようなサーバで使用することは想定しておりませんことも併せてお断りします。
なんにせよ、これで開発でも https で行えるようになりました。
使い方としては、 Docker のビルド時にイメージに入れるのではなく、 Docker コンテナ起動時にボリューム共有でサーバ証明書と秘密鍵を渡すようにしています。こうすることで、環境が変わったときにふさわしいサーバ証明書と秘密鍵にすぐに切り替えられることを狙っています。
以上です。