适用范围
本方法适用于使用OpenWrt 在没有80\443端口、不能dns验证的情况下为自己的域名申请免费ssl证书。
提示:
1、如果你的网络的80或者443端口是开放状态,可直接使用https://letsencrypt.org/进行ssl申请,使用acme.sh脚本可快速完成。
2、如果你的网络ddns服务提供商服务到位,可以使用dns验证的方法,也更加方便。
本流程适用于上述两种方法都失效的情况下,采用邮箱验证来完成域名所属验证。
OpenWrt 分支: 22.03.3 内核: 5.10.161
流程简述
- 在https://zerossl.com/ 上为自己的域名开始申请ssl证书
- 验证的时候选择邮箱验证
- 通过在openwrt上架设邮箱服务器,完成邮箱验证
- 下载申请到的证书,上传到openwrt上
- 完成
详细流程
在zerossl上申请证书
在申请的时候需要验证自己域名的所有权,选择邮箱验证(幸好zerossl支持这种方式)
在openwrt上架设邮箱服务器
zerossl是通过发送邮件到包含域名的邮箱地址的,如 admin@你的域名,所以必须在openwrt上架设邮箱服务器。
postfix
使用postfix作为架设邮箱服务器的工具,可以通过命令行或者luci安装 postfix,我这里安装的版本是3.5.8-2。
安装完成之后使用vim /etc/postfix/main.cf
编辑配置文件,将下列配置替换域名直接粘贴到最后区域,覆盖之前的内容。
inet_interfaces = all
inet_protocols = all
default_database_type = cdb
config_directory = /etc/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
shlib_directory = /usr/lib/postfix
manpage_directory = no
data_directory = /usr/var/lib/postfix
queue_directory = /usr/var/spool/postfix
mail_spool_directory = /usr/var/mail
myhostname = 你的域名
mynetworks_style = subnet
经过测试这块代码这样是可以运行的,如果比较懂的可以自行调整。
- 可以先检查配置文件是否有问题:
[root@OpenWrt:10:56 PM /] # /etc/init.d/postfix postinst
postfix: warning: smtputf8_enable is true, but EAI support is not compiled in
postfix: warning: smtputf8_enable is true, but EAI support is not compiled in
postfix: warning: smtputf8_enable is true, but EAI support is not compiled in
newaliases: warning: smtputf8_enable is true, but EAI support is not compiled in
postalias: warning: smtputf8_enable is true, but EAI support is not compiled in
postmap: warning: smtputf8_enable is true, but EAI support is not compiled in
postfix: warning: smtputf8_enable is true, but EAI support is not compiled in
postsuper: warning: smtputf8_enable is true, but EAI support is not compiled i
我这里有这样的warning,不影响功能。
- 运行:
[root@OpenWrt:10:56 PM /] # /etc/init.d/postfix restart
服务器运行成功,不要忘了调整防火墙设置,以免邮件发送不进来。
- 测试是否搭建成功
使用google mail发送任意邮件到root@你的域名测试是否能发送邮件到我们的服务器上,这里不要使用qq邮箱,我这里用qq邮箱发送不进来。 - 检查邮件
稍等一分钟的样子,通过如下命令行检查
这时应该能在其中看到google成功发送过来的邮件,如果没有,考虑是否哪里设置有问题,如ddns解析、防火墙设置、或者邮箱服务器设置是否正确。如果一切正常,邮箱服务器架设成功。vim /usr/var/mail/root
创建合适的邮箱账户
zerossl上只能选择固定的几种邮箱地址来验证,所以root账户是不行的,我选择的是admin@你的域名来验证。这时候可以通过在openwrt上安装shadow-useradd来添加用户,安装完成之后:
运行:
useradd admin
passwd admin
完成之后,重启postfix:/etc/init.d/postfix restart
zerossl域名验证
选择admin@你的域名来进行验证,这时候zerossl会发送一个邮件到这个地址。
使用vim /usr/var/mail/root
来查看邮件内容,按照提示完成验证,然后下载证书文件。文章来源:https://www.toymoban.com/news/detail-443489.html
上传证书
- 提前在luci中安装好luci-app-uhttpd。
- 解压上一步下载好的证书文件,使用工具将其中的certificate.crt和private.key上传到openwrt的/etc/目录。
- 在luci中服务-uHTTPd中选择上一步上传的文件,如下
- 尝试访问https接口,看证书是否有效,完成。
参考链接:
http://cn.linux.vbird.org/linux_server/0380mail.php#postfix
https://letsencrypt.org/zh-cn/docs/allow-port-80/文章来源地址https://www.toymoban.com/news/detail-443489.html
到了这里,关于OpenWrt 在没有80\443端口、不能dns验证的情况下为自己的域名申请免费ssl证书的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!