發布時間: 2017-06-16 13:49:28
今天,騰科小編為大家帶來如何利用Docker生成SSL證書。當說起“Docker”與“SSL”,很多朋友首先想到的可能是利用SSL證書以保護Docker守護程序自身。沒錯,這項工作非常重要,但與之相關的指導資料已經相當豐富。今天,我們將反其道而行之,考慮如何利用Docker容器為主機創建SSL證書。
利用Docker生成SSL證書
很多開發者朋友可能壓根沒想到過這種作法。然而,這是一項非常便捷且極具實用性的技巧。那么利用Docker容器生成SSL證書,相對于主機生成有著哪些比較優勢?
答案很簡單,我們需要在主機上安裝合適的工具(例如OpenSSL)才能實現這一任務。如果大家希望讓自己的Docker服務器保持整潔,那么OpenSSL這類額外的工具當然是越少越好。另外,大家當然也不希望在生產型Docker服務器上執行證書生成任務。這類工作最好在測試設備上完成如果各位像小編一樣利用個人筆記本充當測試設備,那么其中很可能并沒有安裝OpenSSL或者其它服務器工具。獲取這些工具包并無難度,但小編實在不想讓自己的筆記本真的變成服務器。小編個人有強迫癥,喜愛簡潔與明確的職能劃分,相信不少朋友應該也與小編有著同樣的偏好吧。
立足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
可以看到,主機上的工作目錄內已經包含有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
現在自簽名證書certificate.crt已經存在于主機上的工作目錄內了。
就是這么簡單,無需在主機系統之上運行OpenSSL,已經成功利用OpenSSL創建了一份SSL證書。
進一步探索
大家可以利用以上命令實現更多其它功能。特別是如果各位希望以自動化方式為Docker主機或者容器創建SSL證書,則可以將以上合作整合進Dockerfile,而后利用Codefresh在Docker化應用內實現SSL證書生成。
很明顯,Docker容器能夠帶來較主機更為快速且便捷的證書生成機制。如此簡單明了的生成流程,大家還有什么理由不使用SSL證書進行加密呢?
上一篇: 七款較為實用的Linux命令行工具
下一篇: {甲骨文OCP}Oracle故障案例分析