【发布时间】:2021-12-02 13:27:56
【问题描述】:
我正在尝试使用来自 LetsEncrypt 的 certbot 在 Raspberry Pi 上安装证书。我已经安装了 Apache2 并在 Raspberry Pi 上的 http://subdomain.mydomain.com 创建了一个网络服务器。 certbot 命令获取证书并将其写入http://subdomain.mydomain.com/.well-known/acme-challenge/
背景信息:我这样做是因为我需要一个本地服务器来处理 IoT 设备,而我的 Ajax 调用失败了,因为我不允许将 http 与 https 混合使用。物联网设备无法使用 SSL 托管网络服务器 - 它们使用简单的 http://192.168.1.xx/<string> 格式
我不想在我的注册商/ISP 处创建 DNS 条目,因为我正在尝试创建一个可扩展的解决方案并创建数百个(如果我们做得好的话,可能是数千个)子域条目是不切实际的。创建我自己的 DNS 服务器是可能的,但我宁愿只在 Pi 上完成这一切 - 我的 bash 安装脚本会处理所有事情(一旦我让它工作!)。
我首先尝试在本地主机 (/etc/hosts) 文件中创建一个条目,如下所示:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 SubDomain
192.168.1.111 subdomain.mydomain.com
这适用于像ping 这样的命令,但不适用于nslookup 或dig,绝对不适用于certbot。 certbot 命令找到我的主服务器 - DNS 配置有 * 以转到所有未知子域的公共 IP:
A * xx.xx.xx.xx //My public IP address
然后我安装了dnsmasq(参见:When using proxy_pass, can /etc/hosts be used to resolve domain names instead of "resolver"?)并遵循此处显示的配置选项:How to Setup a Raspberry Pi DNS Server
但是,这也不起作用。 certbot 仍然查看我的主(外部 DNS)并找到我的公共(通配符)IP。以下是 /etc/dnsmasq.conf 中所做更改的摘要
domain-needed ## enabled
bogus-priv ## enabled
no-resolv ## enabled
server=8.8.8.8 ## added (#server=/localnet/192.168.0.1 left as is)
server=8.8.4.4 ## added
cache-size=1500 ##increased from 150
如何强制 certbot 查找和使用我的本地/私有 IP 192.168.1.111?任何使用脚本/重定向的替代解决方案?
【问题讨论】:
标签: dns raspberry-pi lets-encrypt certbot