如何利用Docker生成SSL證書
譯文【51CTO.com快譯】在今天的文章中,我們將突破依靠主機(jī)實(shí)現(xiàn)SSL證書的局限,了解如何利用Docker生成此類證書。
當(dāng)說起“Docker”與“SSL”,很多朋友首先想到的可能是利用SSL證書以保護(hù)Docker守護(hù)程序自身。沒錯(cuò),這項(xiàng)工作非常重要,但與之相關(guān)的指導(dǎo)資料已經(jīng)相當(dāng)豐富。今天,我們將反其道而行之,考慮如何利用Docker容器為主機(jī)創(chuàng)建SSL證書。
利用Docker生成SSL證書
很多開發(fā)者朋友可能壓根沒想到過這種作法。然而,這是一項(xiàng)非常便捷且***實(shí)用性的技巧。那么讓我們首先解答***個(gè)疑問,利用Docker容器生成SSL證書,相對(duì)于主機(jī)生成有著哪些比較優(yōu)勢(shì)?
答案很簡(jiǎn)單,我們需要在主機(jī)上安裝合適的工具(例如OpenSSL)才能實(shí)現(xiàn)這一任務(wù)。如果大家希望讓自己的Docker服務(wù)器保持整潔,那么OpenSSL這類額外的工具當(dāng)然是越少越好。另外,大家當(dāng)然也不希望在生產(chǎn)型Docker服務(wù)器上執(zhí)行證書生成任務(wù)。這類工作***在測(cè)試設(shè)備上完成——如果各位像我一樣利用個(gè)人筆記本充當(dāng)測(cè)試設(shè)備,那么其中很可能并沒有安裝OpenSSL或者其它服務(wù)器工具。
獲取這些工具包雖然并無難度,但我實(shí)在不想讓自己的筆記本真的變成服務(wù)器。我個(gè)人喜愛簡(jiǎn)潔與明確的職能劃分,相信不少朋友應(yīng)該也與我有著同樣的偏好。
立足Docker容器生成SSL證書
相較于在主機(jī)之上生成證書,對(duì)我來說能利用Docker容器創(chuàng)建SSL證書實(shí)在是種很贊的體驗(yàn)。流程非常簡(jiǎn)單,只需要如下幾個(gè)步驟。
首先是利用Docker Hub Nginx鏡像提取一套支持SSL證書創(chuàng)建的容器鏡像。這套鏡像已經(jīng)內(nèi)置有OpenSSL。(如果大家的鏡像中尚不包含OpenSSL,則可自行添加或者在其啟動(dòng)時(shí)進(jìn)行安裝。)
作為示例,大家可以運(yùn)行:
docker pull nginx
接下來,我們需要?jiǎng)?chuàng)建一條私鑰與證書簽署請(qǐng)求,命令如下:
docker run -v $PWD:/work -it nginx openssl req -out /work/CSR.csr -new
-newkey rsa:2048 -nodes -keyout /work/privateKey.key
可以看到,主機(jī)上的工作目錄內(nèi)已經(jīng)包含有privateKey.key與CSR.csr兩個(gè)文件。如果大家打算使用二者創(chuàng)建一份自簽名證書,則可運(yùn)行以下命令:
docker run -v $PWD:/work -it nginx openssl req -x509 -sha256 -nodes
-days 365 -newkey rsa:2048 -keyout privateKey.key -out
/work/certificate.crt
現(xiàn)在自簽名證書certificate.crt已經(jīng)存在于主機(jī)上的工作目錄內(nèi)了。
就是這么簡(jiǎn)單,無需在主機(jī)系統(tǒng)之上運(yùn)行OpenSSL,我們已經(jīng)成功利用OpenSSL創(chuàng)建了一份SSL證書。
進(jìn)一步探索
大家可以利用以上命令實(shí)現(xiàn)更多其它功能。特別是如果各位希望以自動(dòng)化方式為Docker主機(jī)或者容器創(chuàng)建SSL證書,則可以將以上合作整合進(jìn)Dockerfile,而后利用Codefresh在Docker化應(yīng)用內(nèi)實(shí)現(xiàn)SSL證書生成。
很明顯,Docker容器能夠帶來較主機(jī)更為快速且便捷的證書生成機(jī)制。如此簡(jiǎn)單明了的生成流程,大家還有什么理由不使用SSL證書進(jìn)行加密呢?
原文鏈接:
https://dzone.com/articles/using-docker-to-generate-ssl-certificates
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】