快速生成证书

一个脚本,并使用容器进行封装,以达到可以使用极其简的命令行来生成证书的目的,并借助容器简化掉了本地需要安装 openssl 依赖的问题,“开箱即用”。

相关代码已经开源,项目地址:https://github.com/soulteary/certs-maker

使用 docker cli 生成

比如想生成一个稍微复杂一些的站点证书,只需要执行下面这行命令就足够了:

1
docker run --rm -it -e CERT_DNS="domain.com;*.domain.com;*.a.domain.com" -v `pwd`/certs:/ssl soulteary/certs-maker

执行完毕你将会看到类似下面的日志:

1
2
3
4
5
6
User Input: { CERT_DNS: 'domain.com;*.domain.com;*.a.domain.com' }
Generating a RSA private key
................................................................................................................................................+++++
.........................................................+++++
writing new private key to 'ssl/domain.com.key'
-----

以及能够在 ssl 目录中看到我们生成的证书文件。

至于其他的使用方式,比如生成包含多个域名的混合证书、生成单个证书,只需要调整 CERT_DNS 参数的值即可。如果想进一步定制前文提到的证书细节,比如证书签发国家、省份等信息,可以参考开源项目仓库的使用方式,添加其他的参数,这里就不过多赘述了。

使用 docker-compose 生成

如果你希望将命令保存下来,作为代码存储在仓库里,也可以考虑编写一个 compose 文件:

1
2
3
4
5
6
7
8
version: '2'
services:
certs-maker:
image: soulteary/certs-maker
environment:
- CERT_DNS=a.com;b.com;c.com;*.d.com;
volumes:
- ./certs:/ssl

将上面的内容保存为 docker-compose.yml,然后执行 docker-compose up ,你会在 certs 目录看到生成的证书文件。