caddyserver step-ca 集成

最近在学习caddy2 的一些新特性,以前大致看过step-ca 这个强大的证书管理工具,所以集成caddy+step-ca 的acme 进行测试下
因为acme 需要对于dns 进行校验,但是因为自己是本地测试,解决方法有:修改本地hosts 文件,后者配置自己的dns server ,对于
自己的dns server coredns 是一个很不错的选择(可以同时集成mysql 扩展,这样就可以灵活的处理dns 记录了)

参考集成图

 

 

 

集成运行说明

上图已经说明了,基于step-ca 启动自己的acme server ,然后就是caddyserver 的一些配置了,运行上我没有使用容器

  • step ca 环境准备
    下载软件包,具体参考自己的环境
    初始化(按照提示操作,选择标准本地运行模式)
 
step ca init 

启动step ca 服务

step-ca $(step path)/config/ca.json

客户端访问root ca (ca-url 就是上边的,需要使用https)

step ca bootstrap --ca-url [CA URL] --fingerprint [CA fingerprint]

安装本地root ca (方便测试,以及更新信息)

step certificate install $(step path)/certs/root_ca.crt

添加acme 功能(注意之后需要重启下step ca 服务,因为都是基于配置文件的)

step ca provisioner add acme --type ACME

添加测试hosts 文件

127.0.0.1 example.com
127.0.0.1 exampleappdemo.com
  • caddyserver 配置
    参考配置内容
 
{
  "apps": {
    "tls": {
      "automation": {
        "policies": [
          {
            "issuers": [
              {
                "ca": "https://localhost:9000/acme/acme/directory",
                "email": "dalong@example.com",
                "module": "acme",
                "trusted_roots_pem_files": [
                  "/Users/dalong/.step/certs/root_ca.crt"
                ]
              }
            ],
            "disable_ocsp_stapling": true
          }
        ]
      }
    },
    "http": {
      "servers": {
        "example": {
          "listen": [":2015"],
          "routes": [
            {
              "match": [
                {
                  "host": ["example.com"]
                }
              ],
              "handle": [
                {
                  "handler": "static_response",
                  "body": "Hello, world! from example.com"
                }
              ]
            },
            {
              "match": [
                {
                  "host": ["exampleappdemo.com"]
                }
              ],
              "handle": [
                {
                  "handler": "static_response",
                  "body": "Hello,world! from exampleappdemo.com"
                }
              ]
            }
          ]
        }
      }
    }
  }
}

启动caddyserver (可以按需配置自己的tls 存储路径,比如export XDG_DATA_HOME=$PWD/conf)

caddy  run 

通过admin api 添加配置

curl localhost:2019/load \
  -H "Content-Type: application/json" \
  -d @caddy.json
  • 自动证书获取效果

caddyserver 日志信息

 

 


证书文件

 

 

说明

以上是一个简单的测试集成,关于coredns 部分以上没有说明,实际在我们进行一些测试环境中就会需要了,同时以上关于step-ca 的部署是本地模式,也不适合远程访问,对于实际生产玩法官方也有文档说明可以参考

参考资料

https://smallstep.com/docs/tutorials/acme-protocol-acme-clients
https://caddyserver.com/docs/caddyfile/options
https://smallstep.com/docs/step-ca/acme-basics
https://caddyserver.com/docs/json/apps/tls/

posted on 2023-01-24 20:52  荣锋亮  阅读(287)  评论(0编辑  收藏  举报

导航