openwrt 使用ddns 更新changeip不能成功

openwrt 使用ddns 更新changeip不能成功

openwrt 使用ddns 更新changeip不能成功,日志出现以下错误

 233656 ERROR : cURL Error: '35'
 233656       : curl: (35) ssl_handshake returned - PolarSSL: (-0x7700) SSL - An unexpected message was received from our peer

 

经查,changeip的HTTP接口,无法成功(原因大家懂的),换成HTTPS就可以

不过CURL使用HTTPS需要使用证书,OPENWRT上还存在使用证书也不成功

原因需使用SSLV3 ,CURL指令需要加参数 -3

修改过程如下

vi  /usr/lib/ddns/dynamic_dns_functions.sh
 elif [ -x /usr/bin/curl ]; then
                __PROG="/usr/bin/curl -RsS -o $DATFILE --stderr $ERRFILE"
                if [ -n "$bind_network" ]; then
                        local __DEVICE
                        network_get_physdev __DEVICE $bind_network || \
                                write_log 13 "Can not detect local device using 'network_get_physdev $bind_network' - Error: '$?'"
                        write_log 7 "Force communication via device '$__DEVICE'"
                        __PROG="$__PROG --interface $__DEVICE"
                fi
                if [ $force_ipversion -eq 1 ]; then
                        [ $use_ipv6 -eq 0 ] && __PROG="$__PROG -4" || __PROG="$__PROG -6"
                fi
                if [ $use_https -eq 1 ]; then
                        __PROG="$__PROG -3"
                        if [ "$cacert" = "IGNORE" ]; then
                                __PROG="$__PROG --insecure"
                        elif [ -f "$cacert" ]; then
                                __PROG="$__PROG --cacert $cacert"

上面的

__PROG="$__PROG -3"

就是增加的代码,需要使用curl -3 参数才能正确更新

最后不要忘了,安装证书,防止有中间人攻击

mkdir -p /etc/ssl/certs
opkg install ca-certificates

 

 

One thought on “openwrt 使用ddns 更新changeip不能成功

发表评论

电子邮件地址不会被公开。 必填项已用*标注

20 + 20 =