LoginSignup
6
8

More than 3 years have passed since last update.

Dockerで環境構築したローカルサイトにSSL証明書エラーでアクセスできなかった時の対処法

Posted at

DockerとPHP Laravelを使用し環境構築を行った際、
$ docker-compose up -d でコンテナを立ち上げたあと、
ローカルサイトにhttpsアクセスすると証明書エラーが出てアクセスができない…

SSLサーバ証明書発行したはずなんだけど…と思ってたら、
自己証明書は、基本的にブラウザに信頼されないため、信頼する証明書として手動で追加する必要がある
とのこと。知らんかった。

ということで、
1. SSL証明書を発行する手順
2. macOSで信頼する証明書として追加する手順

の備忘録。

発生したエラー

参考までに、発生したエラー

この接続ではプライバシーが保護されません
NET::ERR_CERT_INVALID

スクリーンショット 2020-05-15 11.58.03.png

1. SSL証明書を発行する

 #nginxコンテナに入る
$ docker-compose exec nginx sh
 #apkアップデートとOpenSSLのパッケージのインストール
$ apk add --update openssl
 #server.keyという名前で 2048bit の秘密鍵を作成
$ openssl genrsa 2048 > server.key
 #秘密鍵から署名要求(server.csr)を作成
$ openssl req -new -key server.key > server.csr
C=JP/ST=Tokyo/L=minato-ku/O=Example/OU=Web/CN=Exampledomain
 #署名要求を秘密鍵で署名してサーバ証明書(server.crt)を作成
$ openssl x509 -days 3650 -req -signkey ./server.key -in server.csr -out ./server.crt

基本的なSSL証明書の発行は以上でOK。

なんかChromeの仕様変更により、ドメイン名のチェックをCommon Name(通称CN)ではなく
Subject Alternative Names(通称SAN)を参照するようになったという記事を見つけたため、
もしSubject Alternative Namesを含んだ自己署名サーバ証明書を作成する場合は以下。

 #SANの設定値を定義するtxtファイルを用意(ファイル名は任意) 
$ touch san.txt
san.txt
subjectAltName = DNS:Exampledomain, IP:127.0.0.1 

SANの定義ファイルを用意したら、秘密鍵・証明要求を作成するところまでは先述した手順と同じ。
サーバ証明書を作成する際に-extfileオプションでSANの定義ファイルを読み込ませる。

 #用意した定義ファイルを読み込ませてサーバ証明書を作成
$ openssl x509 -days 3650 -req -extfile san.txt -signkey server.key < server.csr > server.crt

 #作成したサーバ証明書の内容を確認する
$ openssl x509 -in server.crt -text -noout
Certificate:
     …
        Subject: C = JP, ST = Tokyo, L = minato-ku, O = Example, OU = Web, CN = Exampledomain
        Subject Public Key Info:
     …
        X509v3 extensions:
            X509v3 Subject Alternative Name: 
                DNS:Exampledomain, IP Address:127.0.0.1

サーバ証明書の内容を確認してCommon NameとSubject Alternative Namesが出力されていればOK。

2. 作成したサーバ証明書を信頼する証明書として追加する手順[macOS]

1.で作成したサーバ証明書(server.crt)を 信頼する証明書として設定すれば、 HTTPS の通信ができるようになる。

下記の手順で設定します。詳しくはこちらの記事を参照。

  • キーチェーンアクセス.appを開く
  • 作成したserver.crtをダブルクリックで開く
  • 証明書の詳細画面で「信頼」を開く
  • 「この証明書を使用するとき」項目を常に信頼に変更

以上の手順を踏んでローカルサイトにアクセスすると、入れるようになった…!!!
手順的にはさほど難しくないけど、ど素人からすると解決まで長い道のりだった( ; ; )

参考サイト

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8