-
Notifications
You must be signed in to change notification settings - Fork 73
EFF Certificate change disables update check #300
Description
The issue
"Check for update" failed when executed both from the web interface and the (ssh) command-line:
root@cerowrt:~# /lib/update/update.py check
Advise-only mode (checking whether update is available)
Getting update metadata...
(60, 'SSL certificate problem: unable to get local issuer certificate')
Failed to download update metadata
A local fix
I downloaded a new ca-cert bundle, cacert.pem, and placed it in /etc/ssl/certs/cacert.pem on the router. I then changed line number 39 in /lib/update/update.py to point to the new ca-cert bundle and was able to successfully run an update check from both the web interface and the command-line.
My Trouble-shooting Process
Is there a problem with /etc/ssl/certs/StartCom_Certification_Authority.crt?
I've found zero bit-wise difference between this file on the router and copies obtained elsewhere. So, ... no? It should be noted, however, that I am no expert when it comes to CA-certs, so this probably an avenue worth double-checking.
Is s.eff.org presenting a new/different cert?
Good question. I don't know the answer, but it's probably easy for a skilled someone to check. EDIT: Yep, this is the cause of the issue.
What about bare curling?
I noticed that bare curl also fails to retrieve the signed metadata. To wit,
root@cerowrt:~# curl -v --socks4a localhost:9050 --cacert /etc/ssl/certs/StartCom_Certification_Authority.crt https://s.eff.org /files/openwireless/update.json.asc
gives:
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem: unable to get local issuer certificate
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
...
I tried many permutations and combinations of bare curling, to no avail:
- Removing the
--socks4a localhost:9050option - Removing the
--cacert ...option - Disabling
toron the router - Removing any/all
torrelatediptablesfrom/etc/firewall.useron the router - Adding the
-kflag tocurl"works", of course, but this is cheating big-time!
My Version Information
root@cerowrt:~# cat /etc/openwrt_*
DISTRIB_ID="MVP-EA"
DISTRIB_RELEASE="3.10.50-1"
DISTRIB_TAINTS="no-all busybox"
DISTRIB_CODENAME="b7eafbe"
DISTRIB_TARGET="ar71xx/generic"
DISTRIB_REVISION="r41861"
DISTRIB_RELEASE_DATE="1420850891"
DISTRIB_DESCRIPTION="MVP-EA b7eafbe r41861 3.10.50-1"
3.10.50-1