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
}
我知道答案已经被接受。但是我在使用 Caddy v0.10.14 时遇到了同样的问题,这是一个对我有帮助的解决方案(但使用真正的 SSL 证书而不是 self_signed):
首先,证书和密钥对必须在这个目录中:/etc/pki/tls/certs/
用于证书,/etc/pki/tls/private/
用于密钥。因此,使用 cd
命令
转到该目录之一
然后,使用单个命令为 HTTP2.0 测试创建我们自己的自签名证书。只需在命令行上执行即可生成 SSL 证书 + 密钥对:
openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -keyout cert.key -out cert.crt
- 之后,将文件移动到正确的目录(见第一点)
接下来,使用这个 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/
我想将 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
}
我知道答案已经被接受。但是我在使用 Caddy v0.10.14 时遇到了同样的问题,这是一个对我有帮助的解决方案(但使用真正的 SSL 证书而不是 self_signed):
首先,证书和密钥对必须在这个目录中:
/etc/pki/tls/certs/
用于证书,/etc/pki/tls/private/
用于密钥。因此,使用cd
命令 转到该目录之一
然后,使用单个命令为 HTTP2.0 测试创建我们自己的自签名证书。只需在命令行上执行即可生成 SSL 证书 + 密钥对:
openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -keyout cert.key -out cert.crt
- 之后,将文件移动到正确的目录(见第一点)
接下来,使用这个 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/