我需要连接到使用来自带websocat的Android设备的自签名证书的WSS服务器。

websocat wss://example.com对于与授权机构签名的证书可以正常工作,但是无法验证自签名证书。

除了websocat之外,还有一种使用socat的解决方法:

websocat --binary --ws-c-uri=wss://example.com - ws-c:cmd:'socat - ssl:example.com:443,verify=1,cafile=/path/to/cert.crt'

这在Debian中有效,但在Android中不适用,因为Android的socat不支持SSL(我不确定是否有可行的方法通过Android的SSL支持来编译socat)。

是否可以使websocat使用自签名证书?

最佳答案

已经有支持websocat 1.2.0-k)选项的--insecure,例如在curl中,它关闭了证书验证。

此外,我为Android使用made静态openssl可执行静态文件,也可以将其用作websocat 1.1.0中的解决方法:

$ websocat -b --ws-c-uri=wss://echo.websocket.org - ws-c:sh-c:'openssl s_client -quiet -connect echo.websocket.org:443'
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = *.websocket.org
verify return:1
dsaf
dsaf
12345
12345

09-11 17:16