A bit of follow-up: did some digging, and I spoke too soon. The puzzling errno 0 isn't a problem of WSL's syscall architecture; rather, it seems to be an unfortunate corner of Python due to insufficient info from OpenSSL (see [bpo-10808](https://bugs.python.org/issue10808) and [bpo-31122](https://bugs.python.org/issue31122)). Basically, it appears that in currently known cases, errno 0 means the connection is unexpectedly closed — typically known as `ssl.SSLEOFError`.
Without strong indication otherwise, I file this under network problems beyond our control.
I can't reproduce on Windows 10 Pro 1809, Ubuntu Bionic (18.04.1)-based WSL, Python 3.6.6 from default repository (though the stupid package says `3.6.5-3ubuntu1`, not sure which one to trust), and googler 3.5 from default repository.
More information required. From my limited understanding of TLS, a handshake failure means either this is a network issue, which we can do nothing about, or client and server can't agree on a protocol, which is unlikely, seeing that you have rather recent kernel, OpenSSL, and Python.
(Aside: WTF is errno 0? They didn't bother to implement errno, the backbone of syscall error handling? That's weird.)