I'm posting this message so other people might suceed at troubleshooting if they experience the same issues while trying to run ESO on Linux.
I've been running ESO on my Arch Linux system through Steam with Proton (Wine) with relatively few issues until Monday, the 8th of February, when every time I opened the launcher it would be stuck on "Loading..." with relatively high CPU usage. The Start/Update button wasn't visible.
After some attempts at troubleshooting (including keeping the launcher open over night) I saw that the launcher was making requests to
https://analytics.patcher.elderscrollsonline.com/products/analytics/WebGetError, which gives responses with invalid SSL certificates, causing the requests to fail [1].
The launcher also makes requests to
http://live.patcher.elderscrollsonline.com/products/eso/ (note the http instead of https), which returns a 301 Moved Permanently response to the same url, but with https. The launcher itself doesn't seem to follow that redirect and instead considers the request failed.
To make the update process work I've passed all of its requests through mitmproxy. To solve the first issue I've passed the flag --ssl-insecure to tell mitmproxy to ignore the invalid certificate. To solve the second issue I've written a tiny python script for mitmproxy that rewrites relevant requests to use https instead of http.
I then started the mitmdump process, added the mitmproxy's SSL certificate to my system's trust database, and ran the game using the http(s) proxy. It was then installing und updating fine.
To reproduce, create a file forcehttps.py with the following content:
def request(flow):
pattern = "http://live.patcher.elderscrollsonline.com/products/eso/"
if flow.request.url.startswith(pattern):
flow.request.port = 443
flow.request.scheme = "https"
I switched to lutris because I had trouble configuring ESO in steam to use the proxy, so here is how you can do it:
mitmdump --ssl-insecure --listen-port 44203 --script forcehttps.py
sudo trust anchor ~/.mitmproxy/mitmproxy-ca-cert.cer
env http_proxy=http://127.0.0.1:44203 https_proxy=http://127.0.0.1:44203 lutris
The proxy settings might work fine if you modify the LAUNCH OPTIONS in steam to be something like the following, but that didn't work for me. Possibly because I have steam running as a flatpak container. Feel free to let us know if that works for you.
env http_proxy=http://127.0.0.1:44203 https_proxy=http://127.0.0.1:44203 %command%
You should close the launcher once the update is complete, close mitmdump (with ctrl-c), and remove the launch options to start ESO regularly.
Note that doing this could pose a serious security risk for your system, because the launcher attempts to make "secure" https connections and we're circumventing that by accepting all invalid certificates.
You may have to do this every time there is an update until ZOS fixes their servers' SSL certificates and the launcher.
[1]: curl: (60) SSL: no alternative certificate subject name matches target host name 'analytics.patcher.elderscrollsonline.com'