开发者社区> 猫饭先生> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用Docker生成SSL证书

简介: 本文讲的是使用Docker生成SSL证书【编者的话】学习如何使用Docker生成SSL证书,而不是在主机上生成。
+关注继续查看
本文讲的是使用Docker生成SSL证书【编者的话】学习如何使用Docker生成SSL证书,而不是在主机上生成。

当听到“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证书的创建。

原文链接:Using Docker to Generate SSL Certificates(翻译:崔婧雯) 
===========================
译者介绍

崔婧雯,现就职于IBM,高级软件工程师,负责IBM WebSphere业务流程管理软件的系统测试工作。曾就职于VMware从事桌面虚拟化产品的质量保证工作。对虚拟化,中间件技术,业务流程管理有浓厚的兴趣。

原文发布时间为:2016-10-30

本文作者:崔婧雯

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:使用Docker生成SSL证书

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
什么,容器太多操作不过来?我选择Docker Compose梭哈(下)
什么,容器太多操作不过来?我选择Docker Compose梭哈(下)
314 0
hostPath Volume - 每天5分钟玩转 Docker 容器技术(148)
hostPath Volume 将 Docker Host 文件系统的目录 mount 到 Pod 的容器。
1744 0
data-packed volume container - 每天5分钟玩转 Docker 容器技术(43)
在上一节的例子中 volume container 的数据归根到底还是在 host 里,有没有办法将数据完全放到 volume container 中,同时又能与其他容器共享呢? 当然可以,通常我们称这种容器为 data-packed volume container。
1043 0
用 volume container 共享数据 - 每天5分钟玩转 Docker 容器技术(42)
volume container 是专门为其他容器提供 volume 的容器。它提供的卷可以是 bind mount,也可以是 docker managed volume。下面我们创建一个 volume container: 我们将容器命名为 vc_data(vc 是 volume container 的缩写)。
1099 0
Docker系列教程27-在生产环境中使用Docker Compose
编者按:这是一篇翻译,原文详见:https://docs.docker.com/compose/production/ 译文原文:http://www.itmuch.com/docker/27-docker-compose-in-production/,转载请说明出处。
1321 0
+关注
350
文章
1300
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载