【.com速译】在今天的文章中,我们将超越依赖主机实现SSL证书的局限,学习如何使用Docker生成此类证书。 说到“Doc??ker”和“SSL”,很多朋友可能首先想到的是使用SSL证书来保护Docker守护进程本身。是的,这项工作很重要,但是与之相关的指导资料已经相当丰富了。今天,我们将反其道而行之,考虑如何利用Docker容器为主机创建SSL证书。 使用Docker生成SSL证书 很多开发者朋友可能都没有想到过这种方式。但是,这是一种非常方便且最有用的技术。那么我们先来回答第一个问题,使用Docker容器生成SSL证书与主机生成相比有哪些比较优势? 答案很简单,我们需要在宿主机上安装合适的工具(比如OpenSSL)来完成这个任务。如果你想让你的Docker服务器保持干净,那么当然,像OpenSSL这样的额外工具越少越好。此外,您当然不想在生产Docker服务器上执行证书生成。这种工作最好在测试设备上完成——如果你像我一样使用个人笔记本电脑作为测试设备,那么很可能上面没有安装OpenSSL或其他服务器工具。 很容易得到这些工具包,但我真的不希望我的笔记本电脑实际上是一个服务器。我个人比较喜欢简洁明了的功能划分,相信很多朋友应该和我有同样的偏好。 基于Docker容器生成SSL证书 相对于在宿主机上生成证书,使用Docker容器生成SSL证书对我来说真的是很棒的体验。该过程非常简单,只需要以下步骤。 首先,使用DockerHubNginx镜像提取一组支持创建SSL证书的容器镜像。此镜像已经内置了OpenSSL。(如果您的镜像还没有包含OpenSSL,您可以自己添加或在启动时安装。) 例如,您可以运行: dockerpullnginx 接下来我们需要创建私钥和证书签名请求,命令如下: dockerrun-v$PWD:/work-itnginxopensslreq-out/work/CSR.csr-new -newkeyrsa:2048-nodes-keyout/work/privateKey.key 可以看到宿主机的工作目录已经包含两个文件privateKey.key和CSR.csr。如果您打算使用两者来创建自签名证书,则可以运行以下命令: dockerrun-v$PWD:/work-itnginxopensslreq-x509-sha256-nodes -days365-newkeyrsa:2048-keyoutprivateKey.key-out /work/certificate.crt 自签名证书certificate.crt现在存在于主机的工作目录中。 就这么简单,无需在主机系统上运行OpenSSL,我们就成功地使用OpenSSL创建了SSL证书。 进一步探索 您可以使用以上命令实现更多其他功能。特别是如果你想以自动化的方式为Docker主机或容器创建SSL证书,你可以将以上配合集成到Dockerfile中,然后使用Codefresh在Dockerized应用程序中实现SSL证书生成。 很明显,Docker容器可以带来比宿主机更快更方便的证书生成机制。这么简单明了的生成过程,为什么不用SSL证书加密呢? 【翻译稿件,合作网站转载请注明原译者及出处.com】
