pve如何配置https
最近弄了台小主机做软路由,底层使用pve。pve出厂自带了https,但要求使用8006端口访问,但这会被浏览器标记为不安全,连记住密码都不能使用,为了解决这个问题需要进行两步操作
端口转发与持久化
1 | iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8006 |
这样就能通过443端口直接访问pve web ui了,但iptables在重启后会丢失,需要进行持久化
1 | apt-get install iptables-persistent |
安装过程中,会询问是否保存iptables,选择Yes即可
后续需要恢复iptables,可运行
1 | netfilter-persistent reload |
添加了iptables规则需要保存,可运行
1 | netfilter-persistent save |
对应的文件持久化在/etc/iptables
文件夹下
以上功能应该也可以通过iptables-save与iptables-restore实现,但我懒得指定路径了,直接用iptables-persistent实现
如果pve是直接被映射到公网上的,可以考虑把8006端口禁用掉
1 | #禁止访问8006端口 |
受信任的HTTPS
虽然443端口能够访问了,但因为自带的证书是自签名的,没有CA仍不受信任。
如果只是在内网中使用,一个简单的解决办法是去扒拉pve中的root ca文件,到自己的电脑中安装,这样就能解决问题。
但如果一开始设置的ip及自定义域名跟后续的不一样,那出场自带的ssl证书就废了。此时既可以通过root ca重新签发,也可以使用mkcert生成,反正一个道理,生成的ssl证书上传到pve,需要信任的客户端安装root ca即可。
懒得手工生成,且具备公网域名的用户,可以考虑使用acme。
首先配置acme通用信息,如图所示
![[pve-acme-plugin]](/2024/05/16/pve-https/pve-acme-plugin.png)
数据中心-ACME
先注册默认的acme用户,然后选择自己的dns提供商,我这边是腾讯云
![[acme-dns-plugin]](/2024/05/16/pve-https/acme-dns-plugin.png)
需要注意的是,这边对不同的dns域名提供商所看到的web表单是不一样的,比如阿里云就可以让你直接填对应的key和地址,但腾讯云这边还不行。
API数据字段指的是API凭据,以Key=Value的形式填入就好,Value部分不需要用双引号包起来,那样反而会导致验证失败
至于填入的Key可以参考ACME。如果这里面没有,可以直接到/usr/share/proxmox-acme/dnsapi
下看脚本,本质上就是将Key-Value注入到脚本里,脚本来实现不同提供商的验签,最终实现添加dns txt验证记录的目的。至于key去对应的供应商那申请就行
![[acme-valid1]](/2024/05/16/pve-https/acme-valid1.png)
然后到pve节点中,选择凭据,添加
![[acme-valid2]](/2024/05/16/pve-https/acme-valid2.png)
选择刚刚配置的插件填入域名即可
配置完成后点击立即预定凭证
, 有效期三个月,每三个月点一下