一个小巧的 SSL 证书生成工具(Docker 工具镜像),静态文件尺寸 1.5MB 左右,容器镜像尺寸 5MB 左右。
你可以使用它快速生成需要的自签名证书,用于生产或开发场景。
如果你本地已经安装好 Docker 或者 CTR,那么可以通过一条命令快速生成包含 *.lab.com
和 *.data.lab.com
的证书:
docker run --rm -it -v `pwd`/ssl:/ssl soulteary/certs-maker:v3.6.1 "--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.6.1
在命令执行完毕之后,我们检查执行命令的 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.6.1
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.6.1 "--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.6.1
当然,这里也有使用 FOR_K8S
参数的 compose
配置文件:
version: '2'
services:
certs-maker:
image: soulteary/certs-maker:v3.6.1
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.6.1 "--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.6.1
当然,这里也有使用 FOR_FIREFOX
参数的 compose
配置文件:
version: '2'
services:
certs-maker:
image: soulteary/certs-maker:v3.6.1
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 |