OpenWrt 在没有80\443端口、不能dns验证的情况下为自己的域名申请免费ssl证书

适用范围

本方法适用于使用OpenWrt 在没有80\443端口、不能dns验证的情况下为自己的域名申请免费ssl证书。
提示:
1、如果你的网络的80或者443端口是开放状态,可直接使用https://letsencrypt.org/进行ssl申请,使用acme.sh脚本可快速完成。
2、如果你的网络ddns服务提供商服务到位,可以使用dns验证的方法,也更加方便。

本流程适用于上述两种方法都失效的情况下,采用邮箱验证来完成域名所属验证。

OpenWrt 分支: 22.03.3 内核: 5.10.161

流程简述

  1. 在https://zerossl.com/ 上为自己的域名开始申请ssl证书
  2. 验证的时候选择邮箱验证
  3. 通过在openwrt上架设邮箱服务器,完成邮箱验证
  4. 下载申请到的证书,上传到openwrt上
  5. 完成

详细流程

在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

服务器运行成功,不要忘了调整防火墙设置,以免邮件发送不进来。

  1. 测试是否搭建成功
    使用google mail发送任意邮件到root@你的域名测试是否能发送邮件到我们的服务器上,这里不要使用qq邮箱,我这里用qq邮箱发送不进来。
  2. 检查邮件
    稍等一分钟的样子,通过如下命令行检查
    vim /usr/var/mail/root
    
    这时应该能在其中看到google成功发送过来的邮件,如果没有,考虑是否哪里设置有问题,如ddns解析、防火墙设置、或者邮箱服务器设置是否正确。如果一切正常,邮箱服务器架设成功。

创建合适的邮箱账户

zerossl上只能选择固定的几种邮箱地址来验证,所以root账户是不行的,我选择的是admin@你的域名来验证。这时候可以通过在openwrt上安装shadow-useradd来添加用户,安装完成之后:
运行:

  1. useradd admin
  2. passwd admin

完成之后,重启postfix:/etc/init.d/postfix restart

zerossl域名验证

选择admin@你的域名来进行验证,这时候zerossl会发送一个邮件到这个地址。
使用vim /usr/var/mail/root来查看邮件内容,按照提示完成验证,然后下载证书文件。

上传证书

  1. 提前在luci中安装好luci-app-uhttpd
  2. 解压上一步下载好的证书文件,使用工具将其中的certificate.crtprivate.key上传到openwrt的/etc/目录。
  3. 在luci中服务-uHTTPd中选择上一步上传的文件,如下在这里插入图片描述
  4. 尝试访问https接口,看证书是否有效,完成。

参考链接:
http://cn.linux.vbird.org/linux_server/0380mail.php#postfix
https://letsencrypt.org/zh-cn/docs/allow-port-80/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值