問題描述
今天更新 SSL 憑證時發現在 Docker 中運行的網站做 SSL 驗證時會出現 x509 錯誤 certificat signed by unknown authority,這是因為 Docker 中對照的 Root CA 不是最新的,需要手動把 Root CA 加入到信任的 CA list中,即可解決。
解決方法
先下載最新的 Root CA,可以到 sslchecker查找。
下載後用文字編輯器打開,稍後複製其內容,會長得像這樣:1
2
3
4
5
6-----BEGIN CERTIFICATE-----
MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD
......
......
+O7AWXX1uw16OFNMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3pQ==
-----END CERTIFICATE-----在 Docker 運行的伺服器中執行以下指令,查看目前信任的 CA list 檔案位置。
1
$ curl https://yourdomain.com -v
我這邊得到的是
CAfile: /etc/pki/tls/certs/ca-bundle.crt,依照你的 OS 不同會有所不同。將步驟 1 的內容貼到檔案最後面,並儲存。
1
$ sudo vi /etc/pki/tls/certs/ca-bundle.crt
重新啟動 Docker。
1
2$ cd ~/<your docker app folder>
$ docker compose restart我們是使用 docker compose 來運行 Docker,所以使用
docker compose restart來重啟 Docker,如果你是使用 docker run 的話,可以使用docker restart <container name>來重啟 Docker。