AC86U开启SMB共享

因为官方固件对外是只读的,通过ssh或者telnet连上去做的修改,重启路由器后又会还原,所以只能把官固自带申请的Let’ssEncrypt的免费证书同步到外接存储(U盘或者移动硬盘)上,然后通过smb共享给到局域网的其他设备.

  1. 路由器插入U盘,在路由器管理页面开启SMB共享,
  2. U盘创建专用文件夹(示例ssl)
  3. SMB共享设置页新增个专用用户(示例ssl),赋予第2步创建的用户只读权限,如下图

image.png

AC86U开机自启动脚本

AC86U是在U盘根目录创建名为asusware.arm的文件夹,在此文件夹创建名为 .asusrouter的脚本(这样就能开机自动执行此脚本,注意文件夹与脚本文件的名字不能更改为其他),其他华硕路由器文件夹名,执行命令
nvram get apps_install_folder 获取
路由器每3个月会自动更新Let’ssEncrypt的证书 ,以下方式共享出去的证书能保持最新

  1. vi /tmp/mnt/sda1/asusware.arm/.asusrouter
  1. #!/bin/sh
  2. i=0
  3. while [ $i -le 20 ]; do
  4. success_start_service=`nvram get success_start_service`
  5. if [ "$success_start_service" == "1" ]; then
  6. break
  7. fi
  8. i=$(($i+1))
  9. echo "autorun APP: wait $i seconds...";
  10. sleep 1
  11. done
  12. #参考链接:https://koolshare.cn/thread-105955-1-1.html
  13. #以上代码目的是等待路由器所有程序初始化完成
  14. #内部存储改动,重启路由后会还原,所以每次开机都要执行一次
  15. mkdir /tmp/home/root/ssl
  16. #开机复制第一次
  17. cp -rf /jffs/.le/*.com/fullchain.pem /tmp/home/root/ssl/cert.pem
  18. cp -rf /jffs/.le/*.com/*.com.key /tmp/home/root/ssl/key.pem
  19. #挂载到外接存储的专用文件夹下
  20. mount --bind /tmp/home/root/ssl/ /tmp/mnt/sda1/ssl/certs/
  21. #默认非管理员账户没有读的权限,需要修改
  22. chmod 666 /tmp/mnt/sda1/ssl/certs/key.pem
  23. chmod 666 /tmp/mnt/sda1/ssl/certs/cert.pem
  24. /usr/sbin/cru a mv_cert "0 0 ? * 3 /mnt/sda1/asusware.arm/mv_cert"
  1. #如果U盘是ext2,3,4文件系统,需要给脚本执行权限
  2. chmod 777 /tmp/mnt/sda1/asusware.arm/.asusrouter
  1. vi /mnt/sda1/asusware.arm/mv_cert

cp -rf /jffs/.le/.com/fullchain.pem /tmp/home/root/ssl/cert.pem cp -rf /jffs/.le/.com/*.com.key /tmp/home/root/ssl/key.pem chmod 666 /tmp/mnt/sda1/ssl/certs/key.pem chmod 666 /tmp/mnt/sda1/ssl/certs/cert.pem

  1. chmod 777 /tmp/mnt/sda1/asusware.arm/mv_cert

新固件启动方法

/usr/sbin/下的app_init_run.sh app_check_folder.sh脚本会判断pkg配置(就是asusware.arm/lib/ipkg/info下的配置文件)是否存在,然后运行asusware.arm/etc/init.d/下的相关启动脚本,.asusrouter已经不会执行了,必须伪造了个pkg包,下载压缩包,解压后把asusware.arm放在u盘根目录就能行了,脚本在asusware.arm/etc/init.d/S50asusstartd,这个脚本是改发射功率的,请按需求自行修改。
https://pan.baidu.com/s/1nwTpsGL
精简后只需要保留3个文件

  1. \asusware.arm.asusrouter
  2. \asusware.arm\etc\init.d\S50asusstartd
  3. \asusware.arm\lib\ipkg\info\asusstartd.control

\asusware.arm.asusrouter不会被执行,所以可以是空白文件(不能没有)
\asusware.arm\etc\init.d\S50asusstartd是需要执行的脚本
\asusware.arm\lib\ipkg\info\asusstartd.control用途是让系统识别需要执行的脚本文件S50asusstartd,代码为:

  1. Enabled: yes

新固件会挂载U盘几次,所以对应的脚本也会启动几次

挂载共享目录到本地

  1. 安装依赖组件

    1. apt install cifs-utils
  2. 手动挂载 ```bash

以下命令任选1个用来手动挂载 AC86U的samba版本低,必须制定版本vers=1.0

mount -t cifs -o username=ssl,password=密码,vers=1.0 //路由器IP/ssl /root/ssl mount -t cifs -o username=ssl,password=密码,vers=1.0 \\路由器IP\ssl /root/ssl mount.cifs //192.168.50.1/ssl /root/ssl -o username=ssl,password=密码,vers=1.0 mount.cifs \\192.168.50.1\ssl /root/ssl -o username=ssl,password=密码,vers=1.0

如有报错,用下面命令检查日志

tail -f /var/log/kern.log

  1. 3. 开机自动挂载
  2. ```bash
  3. #创建访问smb共享的所需的账户文件,root目录下权限要求高,相对安全
  4. vim /root/.smbcredentials

username=ssl password=密码

  1. #新增开机挂载项
  2. vim /etc/fstab

//路由器IP/ssl /root/ssl cifs vers=1.0,credentials=/root/.smbcredentials 0 0

  1. mount -a #立刻执行挂载

参考链接:
https://www.serverlab.ca/tutorials/linux/storage-file-systems-linux/mounting-smb-shares-centos-7/

SSL证书相关

编码格式

PEM - Privacy Enhanced Mail,打开看文本格式,以”——-BEGIN…”开头, “——-END…”结尾,内容是BASE64编码.
查看PEM格式证书的信息: openssl x509 -in certificate.pem -text -noout
DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.
查看DER格式证书的信息: openssl x509 -in certificate.der -inform der -text -noout

证书编码的转换

PEM转为DER openssl x509 -in cert.crt -outform der -out cert.der
DER转为PEM openssl x509 -in cert.crt -inform der -outform pem -out cert.pem

监控证书文件修改重启Web服务

安装inotify-tools

  1. wget --no-check-certificate https://github.com/inotify-tools/inotify-tools/releases/download/3.20.2.2/inotify-tools-3.20.2.2.tar.gz
  2. # opkg update
  3. # opkg upgrade tar openwrt中要升级tar
  4. tar -xzvf inotify-tools-3.20.2.2.tar.gz
  5. #opkg install grep
  6. ./configure
  7. make
  8. make install
  9. #或者openwrt下直接opkg install inotifywait
  10. #armbian下 apt-get install inotify-tools
  1. touch /root/cert_monitor_log.txt
  2. vi /root/cert_monitor

!/bin/sh

inotifywait -mrq —format ‘%e’ —event modify /root/ssl/https-cert.crt | while read event do case $event in MODIFY) /etc/init.d/uhttpd restart;; esac done

  1. #使用nohup 后台执行cert_monitor
  2. nohup sh /root/cert_monitor>/root/cert_monitor_log.txt &
  3. vi /etc/rc.local # 添加nohup sh /root/cert_monitor>/root/cert_monitor_log.txt & 到开机启动中

OMV 证书地址

The certificates managed by OMV are located in /etc/ssl/certs/openmediavault-.crt and /etc/ssl/private/openmediavault-.key
You can find out the UUID in /etc/openmediavault/config.xml.