我需要连接到使用来自带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