Let’s Encrypt 是免费 SSL 证书的签发机构,但签发时效太短十分不方便。本文结合自签署CA,介绍如何在内部搭建一个私有 CA。
试用场景
- 测试目的,了解 SSL 工作原理
- 企业内部私有部署,仅需要信任自己的 Root CA 就自行签署证书,免去证书费用
相关文档
实现原理
- 自行签署 Root CA、二级 CA 证书
- 基于二级 CA 签发域名证书
- 使用 x-ca/pebble 暴露基于 ACME 协议的API,就可以使用第三方工具调用 API 签发证书
签署 Root CA、二级 CA 证书
go-ca
推荐,go-ca
封装复杂的签发流程,仅需要两条命令既可以签发自己的 Root CA 和二级 CA,使用方法参考:go-ca:SSL 证书私有签署工具
x-ca
一个基于 shell + openssl 命令签发工具,完成的签发过程和工具参考:基于OpenSSL签署根CA、二级CA
部署 API
x-ca/pebble 是一个基于 letsencrypt/pebble 开发的,支持加载 x-ca/go-ca 签发证书的服务,基于 acme 协议暴露 API
启动服务实例:
KEY_PWD=""
docker run -it -d \
-e "PEBBLE_VA_NOSLEEP=1" \
-e "PEBBLE_VA_ALWAYS_VALID=1" \
-e "PEBBLE_CHAIN_LENGTH=2" \
-e "PEBBLE_ALTERNATE_ROOTS=0" \
-e "USE_X_CA=true" \
-e "IS_DES3_KEY=true" \
-e "X_CA_ROOT_CA_PASSWORD=${KEY_PWD}" \
-e "X_CA_TLS_CA_PASSWORD=${KEY_PWD}" \
-e "PATH_X_CA=/x-ca" \
-v $(pwd)/x-ca:/x-ca \
-p 14000:14000 \
-p 15000:15000 \
xiexianbin/pebble:latest
详见 https://github.com/x-ca/pebble
客户端访问
参考