Docker遠程端口開啟SSL證書認證


前言

之前在aliyun買的雲服務器中裝了docker,想通過遠程端口直接連接docker服務進行操作,就按照網上教程配置了遠程端口,但是沒過幾天發現服務器狀態不正常,cpu一直飆升100%,最終排查到是docker中運行的一個容器導致的,但是這個容器不是我自己的,這才發現自己中招了,被挖礦了,但是如何避免被挖礦又能享受這種遠程連接的便利呢?可以通過以下兩種方式對遠程端口進行保護。

  • 安全組中配置白名單,指定訪問IP
  • 開啟SSL證書認證

其中第一種可直接通過阿里雲控制台進行配置實現,且建議雲上的服務器在開端口時務必小心,一定要設置IP白名單,而不要圖省事全局開放(除了80或者443端口),特別是docker默認遠程端口2375,redis默認端口6379,mysql默認端口3306,這些默認端口很可能被黑客找到可乘之機(親身經歷,說多了都是淚啊)。回歸正傳,下面着重說一下如何為docker遠程端口開啟SSL證書認證。

使用openssl制作證書密鑰

在服務器中新建一個目錄,並切換到該目錄下

mkdir /etc/docker && cd /etc/docker

創建根證書RSA私鑰

openssl genrsa -aes256 -out ca-key.pem 4096

備注:此處需要兩次輸入密碼,請務必記住該密碼,在后面步驟會用到

創建CA證書

openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem

備注:該步驟以上一步生成的密鑰創建證書,也就是自簽證書,也可從第三方CA機構簽發

創建服務端私鑰

openssl genrsa -out server-key.pem 4096

創建服務端簽名請求證書文件

openssl req -subj "/CN=47.104.254.199" -sha256 -new -key server-key.pem -out server.csr

備注:其中的IP地址為自己服務器IP地址

創建extfile.cnf的配置文件

echo subjectAltName = IP:47.104.254.199,IP:0.0.0.0 >> extfile.cnf
echo extendedKeyUsage = serverAuth >> extfile.cnf

備注:其中IP地址改為自己服務器IP地址

創建簽名生效的服務端證書文件

openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out server-cert.pem -extfile extfile.cnf

創建客戶端私鑰

openssl genrsa -out key.pem 4096

創建客戶端簽名請求證書文件

openssl req -subj '/CN=client' -new -key key.pem -out client.csr

extfile.cnf文件中增加配置

echo extendedKeyUsage = clientAuth >> extfile.cnf

創建簽名生效的客戶端證書文件

openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out cert.pem -extfile extfile.cnf

刪除無用文件

rm -v client.csr server.csr

為證書文件授權

chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem

配置Docker支持TLS連接

編輯docker.service配置文件

vim /lib/systemd/system/docker.service

找到ExecStart=開頭的一行代碼,將其替換為如下內容

ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem

備注:此處設置docker遠程端口為2375,可根據需要修改

刷新配置,重啟Docker

systemctl daemon-reload && systemctl restart docker

驗證TLS方式遠程連接

在IDEA工具中可以直接通過遠程端口連接Docker,可通過該工具對Docker遠程端口進行連接測試
首先使用alt+8快捷鍵打開IDEA的Services窗口,如下圖所示

點擊列表上方+號,然后選擇Docker Connection,如下圖所示

上圖紅框為需要填寫的內容,其中Name隨意填寫,Engine API URL為服務器地址及Docker遠程端口,注意是使用https方式連接

Certificates folder是指定之前生成的客戶端證書存放的路徑,可之前將前面生成的證書信息從服務器copy到本地某個路徑中,需要的證書信息有ca.pem、cert.pem、key.pem這三個文件,填寫完成之后,點擊OK保存。

然后選定剛剛新建的Docker服務,點擊左上角三角符號進行連接,下圖為連接成功之后的情況,可以直接查看Docker中的容器,以及下載過的鏡像等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM