13

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

当我使用这个 Caddyfile 运行时,我的网站运行良好

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

但我想命名这个网站,或者至少在上面启用 HTTPS。根据 Caddy 的说法,您不能在 localhost 上执行此操作,但是如果我有域名怎么办?

我已经尝试在这个 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: 

我知道这个错误是由于一个不存在的域名造成的,但是有没有办法处理?

只需在 localhost 或 IP 地址上获取 HTTPS 就足够了

4

4 回答 4

17

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

使用这个 Caddyfile

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

并尝试https://localhost:2020

于 2016-08-18T13:46:12.303 回答
6

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

localhost:443 {
        reverse_proxy 127.0.0.1:8080
        tls internal
}
于 2021-10-20T15:01:40.187 回答
4

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

  1. 首先,证书和密钥对必须在此目录中:/etc/pki/tls/certs/证书和/etc/pki/tls/private/密钥。cd所以用命令转到这个目录之一

  2. 然后,使用单个命令为 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
    }
    
于 2018-05-06T10:21:57.060 回答
1

此外,如果您在 docker 容器中运行 caddy,您可能需要导入并信任 Root 证书。

docker ps

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

那么 caddyfile,例如 laravel 帆,可能看起来像这样:

yourlocaldomain.dev{
    tls internal
    reverse_proxy laravel.test
}

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

于 2021-12-30T23:24:38.737 回答