Caddy - 在本地域上设置 HTTPS

Caddy - Setting HTTPS on local domain

我想将 HTTPS 添加到我的本地域,但是我们不能在本地主机上执行此操作。

当我 运行 使用此 Caddyfile

时,我的网站运行正常
localhost:2020 {
  bind {$ADDRESS}
  proxy / http://192.168.100.82:9000 {
    transparent
  }
}

但我想为该网站命名或至少启用 HTTPS。根据 Caddy 的说法,你不能在本地主机上执行此操作,但是如果我有域名怎么办?

我试过使用我自己的本地地址来处理这个 Caddyfile

192.168.100.26 {
  bind {$ADDRESS}
  proxy / http://192.168.100.82:9000 {
    transparent
  }
}

一切正常,但我仍然没有 HTTPS...

例如,当我尝试添加一个随机域名时

www.mycaddytest.com {
  bind {$ADDRESS}
  proxy / http://192.168.100.82:9000 {
    transparent
  }
}

我收到以下错误

Activating privacy features...2016/08/18 11:53:26 [www.mycaddytest.com] failed to get certificate: acme: Error 400 - urn:acme:error:connection - DNS problem: NXDOMAIN looking up A for www.mycaddytest.com
Error Detail:
Validation for www.mycaddytest.com:80
Resolved to:

Used: 

我知道这个错误是由于不存在的域名造成的,但是有什么办法可以处理吗?

只需在本地主机或 ip 地址上获取 HTTPS 就足够了

从 Caddy 0.9 开始我们可以使用 tls self_signed 属性。

使用这个 Caddyfile

localhost:2020 {
  bind {$ADDRESS}
  proxy / 192.168.100.82:9000
  tls self_signed
}

并尝试 https://localhost:2020

我知道答案已经被接受。但是我在使用 Caddy v0.10.14 时遇到了同样的问题,这是一个对我有帮助的解决方案(但使用真正的 SSL 证书而不是 self_signed):

  1. 首先,证书和密钥对必须在这个目录中:/etc/pki/tls/certs/ 用于证书,/etc/pki/tls/private/ 用于密钥。因此,使用 cd 命令

  2. 转到该目录之一
  3. 然后,使用单个命令为 HTTP2.0 测试创建我们自己的自签名证书。只需在命令行上执行即可生成 SSL 证书 + 密钥对:

openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -keyout cert.key -out cert.crt

  1. 之后,将文件移动到正确的目录(见第一点)
  2. 接下来,使用这个 Caddyfile 并尝试 https://localhost:2020:

    localhost:2020 {
      bind {$ADDRESS}
      root /var/www
      gzip
      tls your.address@example.com
      tls /etc/pki/tls/certs/cert.crt /etc/pki/tls/private/cert.key
    }
    

对于 caddy 2.4.5 版,接受的答案对我不起作用。工作原理如下所示:

localhost:443 {
        reverse_proxy 127.0.0.1:8080
        tls internal
}

此外,如果您是 docker 容器中的 运行 球童,您可能需要导入并信任根证书。

docker ps

docker cp container_id:/config/caddy/pki/authorities/local/root.crt ~/Desktop

然后 caddyfile,例如 laravel sail,可能看起来像这样:

yourlocaldomain.dev{
    tls internal
    reverse_proxy laravel.test
}

这里可能还有更多 https://gilbitron.me/blog/enabling-https-ssl-for-laravel-sail-using-caddy/