一个小巧的 SSL 证书生成工具(Docker 工具镜像),静态文件尺寸 1.5MB 左右,容器镜像尺寸 5MB 左右。
你可以使用它快速生成需要的自签名证书,用于生产或开发场景。
如果你本地已经安装好 Docker 或者 CTR,那么可以通过一条命令快速生成包含 *.lab.com 和 *.data.lab.com 的证书:
docker run --rm -it -v `pwd`/ssl:/ssl soulteary/certs-maker:v3.8.0 "--CERT_DNS=lab.com,*.lab.com,*.data.lab.com"
# 如果你希望使用 ENV 来调整生成证书的参数
# docker run --rm -it -v `pwd`/ssl:/ssl -e "CERT_DNS=lab.com,*.lab.com,*.data.lab.com" soulteary/certs-maker:v3.8.0在命令执行完毕之后,我们检查执行命令的 ssl 就能看到生成的证书文件啦:
ssl
├── lab.com.conf
├── lab.com.der.crt
├── lab.com.der.key
├── lab.com.pem.crt
└── lab.com.pem.key你可以根据自己的喜好,使用 PEM 或者 DER 格式的证书。
如果你更喜欢使用配置文件来生成证书,可以使用下面这个 docker-compose.yml:
version: '2'
services:
certs-maker:
image: soulteary/certs-maker:v3.8.0
environment:
- CERT_DNS=lab.com,*.lab.com,*.data.lab.com
volumes:
- ./ssl:/ssl接着,执行下面的命令:
docker-compose up
# 或者在新版的 compose 中使用下面的命令
# docker compose up如果你希望生成证书对 K8s 使用体验更友好,可以添加 FOR_K8S 参数:
docker run --rm -it -v `pwd`/ssl:/ssl soulteary/certs-maker:v3.8.0 "--CERT_DNS=lab.com,*.lab.com,*.data.lab.com --FOR_K8S=ON"
# 或
# docker run --rm -it -v `pwd`/ssl:/ssl -e "CERT_DNS=lab.com,*.lab.com,*.data.lab.com" -e "FOR_K8S=ON" soulteary/certs-maker:v3.8.0当然,这里也有使用 FOR_K8S 参数的 compose 配置文件:
version: '2'
services:
certs-maker:
image: soulteary/certs-maker:v3.8.0
environment:
- CERT_DNS=lab.com,*.lab.com,*.data.lab.com
- FOR_K8S=ON
volumes:
- ./ssl:/ssl如果你希望生成证书对 Firefox 的使用体验更友好,可以添加 FOR_FIREFOX 参数:
docker run --rm -it -v `pwd`/ssl:/ssl soulteary/certs-maker:v3.8.0 "--CERT_DNS=lab.com,*.lab.com,*.data.lab.com --FOR_FIREFOX=ON"
# 或
# docker run --rm -it -v `pwd`/ssl:/ssl -e "CERT_DNS=lab.com,*.lab.com,*.data.lab.com" -e "FOR_FIREFOX=ON" soulteary/certs-maker:v3.8.0当然,这里也有使用 FOR_FIREFOX 参数的 compose 配置文件:
version: '2'
services:
certs-maker:
image: soulteary/certs-maker:v3.8.0
environment:
- CERT_DNS=lab.com,*.lab.com,*.data.lab.com
- FOR_FIREFOX=ON
volumes:
- ./ssl:/ssl如果你希望调整生成证书文件的基础信息(描述信息),诸如签发国家、省份、街道、组织等等,可以参考下面支持的配置参数,进行手动调整。
你可以通过调整环境变量或者 CLI 命令行参数来改变生成的证书。
使用环境变量:
| 类型 | 名称 | 如何在环境变量中使用 |
|---|---|---|
| Country Name | CERT_C | CERT_C=CN |
| State Or Province Name | CERT_ST | CERT_ST=BJ |
| Locality Name | CERT_L | CERT_L=HD |
| Organization Name | CERT_O | CERT_O=Lab |
| Organizational Unit Name | CERT_OU | CERT_OU=Dev |
| Common Name | CERT_CN | CERT_CN=Hello World |
| Domains | CERT_DNS | CERT_DNS=lab.com,*.lab.com,*.data.lab.com |
| Issue for K8s | FOR_K8S | FOR_K8S=ON |
| Issue for Firefox | FOR_FIREFOX | FOR_FIREFOX=ON |
| File Owner User | USER | USER=ubuntu |
| File Owner UID | UID | UID=1234 |
| File Owner GID | GID | GID=2345 |
| Custom certs output dir | DIR | DIR=./ssl |
| Custom certs filename | CUSTOM_FILE_NAME | CUSTOM_FILE_NAME=filename |
| Expire Days | EXPIRE_DAYS | EXPIRE_DAYS=3650 |
使用命令行参数:
| 类型 | 名称 | 如何在环境变量中使用 |
|---|---|---|
| Country Name | CERT_C | --CERT_C=CN |
| State Or Province Name | CERT_ST | --CERT_ST=BJ |
| Locality Name | CERT_L | --CERT_L=HD |
| Organization Name | CERT_O | --CERT_O=Lab |
| Organizational Unit Name | CERT_OU | --CERT_OU=Dev |
| Common Name | CERT_CN | --CERT_CN=Hello World |
| Domains | CERT_DNS | --CERT_DNS=lab.com,*.lab.com,*.data.lab.com |
| Issue for K8s | FOR_K8S | --FOR_K8S=ON |
| Issue for Firefox | FOR_FIREFOX | --FOR_FIREFOX=ON |
| File Owner User | USER | --USER=ubuntu |
| File Owner UID | UID | --UID=1234 |
| File Owner GID | GID | --GID=2345 |
| Custom certs output dir | DIR | --DIR=./ssl |
| Custom certs filename | CUSTOM_FILE_NAME | --CUSTOM_FILE_NAME=filename |
| Expire Days | EXPIRE_DAYS | --EXPIRE_DAYS=3650 |


