使用Docker生成SSL證書

KarenCatron 8年前發布 | 12K 次閱讀 SSL協議 Docker

當聽到“Docker”和“SSL”這兩個詞的時候,你很可能會認為是在說創建SSL證書來保護Docker daemon本身。這很重要但是已經有很多文章詳細介紹過了。或者你可能認為我們在討論創建SSL證書供容器化的應用程序使用。如果你使用第三方工具(比如 這種這種工具 )這也很簡單。但是你知道嗎,還可以使用Docker容器來為主機創建SSL證書?

使用Docker生成SSL證書

使用Docker生成SSL證書大多數開發人員并沒有想這么做過。但是這么做很簡潔也很方便。你可能會問為什么會想用Docker容器來為主機生成SSL證書呢。為什么不能在主機上完成呢?

是的,可以在主機上完成。但是你必須已經在主機上安裝了正確的工具(比如OpenSSL)。并且如果你想讓Docker服務器盡可能簡潔的話,你很可能不想安裝類似OpenSSl這樣的工具。另外,你可能并不是使用的生產環境Docker服務器,而是使用的Docker測試環境。如果你和我一樣,那么這個測試環境實際上就是你的個人筆記本,很可能沒有安裝OpenSSL或者其他服務器工具。

的確,我也可以apt-get來安裝openssl包(或者apache2-utils),但是我不想把我的筆記本變成服務器。最重要的是,我想讓事情盡可能簡潔。這也正是容器一開始就這么吸引人的主要原因。

從Docker容器生成SSL證書

不在主機上生成證書,而是使用Docker容器生成SSL證書,這對我來說很好。也很簡單,按照如下步驟即可。

首先,使用Docker Hub Nginx 鏡像拉取一個支持SSL證書創建的容器鏡像。該鏡像已經內建安裝了OpenSSL。(如果你的鏡像沒有包含OpenSSL,可以自行安裝到鏡像里,或者更簡單地在啟動容器時進行安裝)。

示例命令:

docker pull nginx

接下來,需要創建私鑰和證書簽署請求:

docker run -v $PWD:/work -it nginx openssl req -out /work/CSR.csr -new 

-newkey rsa:2048 -nodes -keyout /work/privateKey.key

現在可以看到主機上的working目錄包含文件privateKey.key和CSR.csr。如果想要使用它們創建自簽名的證書,運行如下命令:

docker run -v $PWD:/work -it nginx openssl req -x509 -sha256 -nodes 

-days 365 -newkey rsa:2048 -keyout privateKey.key -out 

/work/certificate.crt

現在主機的working目錄已經有了簽名的證書, certificate.crt。

好啦。我們已經使用OpenSSL創建出了SSL證書,而實際上并沒有在主機系統上運行OpenSSL。

更進一步

使用上述命令還可以做更多事情。實際上,如果想要為Docker主機或者容器自動化SSL證書的創建,可以將這些命令集成進Dockerfile,然后使用它在使用Codefresh創建的容器化應用里構建SSL證書的創建。

 

來自:http://dockone.io/article/1789

 

 本文由用戶 KarenCatron 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!