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