起因
在 Windows 上開發環境運行的好好的一個工程,上到 docker 中就報錯,於是一頓查問題,最終得以解決。
打怪:
可以看到訪問接口報錯:
但是這個信息不是很清楚,我們需要更詳細的錯誤信息。
找到 log 下的具體 log 文件
可通過 docker cp 容器ID:目錄/文件 本機路徑
來拷貝容器內的日誌或者其他文件到本機,方便進行查看。
可以看到,routines:ssl_choose_client_version:unsupported protocol
很明確的是不支持的 openssl 協議
確定容器當前使用協議
現在我們需要進入容器,命令docker exec -it 容器ID /bin/bash
進入之後,執行 openssl version
,可以看到結果:OpenSSL 1.1.1d 10 Sep 2019
查看默認支持的最低協議
命令docker cp 容器ID:/etc/ssl/openssl.cnf 本機地址
拷貝到本機後,打開搜索system_default_sect
,如下:TLSv1.2
查看目標 Server 版本
看了我需要連接的 Sql Server 的版本,微軟官方的版本支持對應列表,發現不支持 TLS 1.2,只支持 TLS 1.1
所以調整版本爲 1.1 即可,修改 Dockerfile,加入如下命令:
RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf
然後重新構建鏡像,成功連接!
參考連接