【図解付き】開発用オレオレ認証局SSL通信(+dockerコンテナ対応) : 2021
はじめに
オレオレ証明書使ってますか?無料でssl通信ができて便利ですよね。
便利にオレオレしてたのですが、開発用 vm 内に docker コンテナを2つ起動してコンテナ間で https 通信させようとしたら 「怪しい証明局が署名した証明書やろ」 って怒られたので対処方法を記載しておきます。
# 怪しい証明局が署名したやろエラー
x509: certificate signed by unknown authority
怪しくないオレオレ証明書発行
手順は以下となります。
- オレオレ証明局を作成
- 作成した「オレオレ証明局」を開発用 vm に「信頼できる証明局」として登録
- 「オレオレ証明局」が署名した「オレオレ証明書」を発行
若干めんどくさそうに見えますが、mkcert を利用すると非常に簡単です。
mkcert
mkcert インストール
# https://github.com/FiloSottile/mkcert/releases より最新版をダウンロードして実行権限追加
# ubntu の場合
wget https://github.com/FiloSottile/mkcert/releases/mkcert-v1.4.3-darwin-amd64
mv mkcert-v1.4.3-darwin-amd64 mkcert
chmod +x mkcert
/etc/hosts にドメイン登録
127.0.0.1 {domain}
※2021/01/23追記:/etc/hosts にドメイン登録した状態で、mkcert -install
しないとダメなようでした。
オレオレ証明局を作成 + 「信頼できる証明局」として登録
mkcert -install
「オレオレ証明局」が署名した「オレオレ証明書」を発行
mkcert -key-file key.pem -cert-file cert.pem {domain}
コンテナ起動時に自己証明局をマウント
この状態で dockerコンテナ間で https 通信を行うと、オレオレ証明局が「信頼できる証明局」として認識されていない状態になり、「怪しい証明局が署名した証明書やろ」 エラーとなります。
これを回避するために、VM の「信頼できる認証局」をコンテナにマウントします。
本番環境ではSSL証明書発行業者によって署名されたSSL証明書を利用するため、この処理は不要となります。
通常のdocker-compose.yaml ではなく、docker-compose.override.yaml に記載しておき、本番環境には docker-compose.override.yaml をコピーしない様にします。
{docker-compose folder}/
│ docker-compose.yaml
└ docker-compose.override.yaml # 追加
# mount 設定を追加
volumes:
- /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt
docker run .... -v /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt
おわりに
昔は大変面倒だったことが、簡単にできるようになってきました。
プロジェクトのスリム化が進むと共にフロントエンジニアやインフラエンジニアの境界が曖昧になってきていますので、なるべく簡単に色々な作業をこなせるようにしてより多くの要件を満たせるようにしたいものです。
Author And Source
この問題について(【図解付き】開発用オレオレ認証局SSL通信(+dockerコンテナ対応) : 2021), 我々は、より多くの情報をここで見つけました https://qiita.com/kaku3/items/e06a02ae1068de5c0663著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .