-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
wss 协议的证书锁定无效 #629
Comments
如理解有误请指正. 您提出有以下3点.
A1. server.crt视为server的电子证书, 但密匙? 您的问题是 “在服务端没有使用 server.crt 作为证书的情况下应该校验失败才对. 而如果将 wss 协议改成 https, 就能看到 certificate signed by unknown authority 的错误日志了” 我尝试题供一些例子给参考,看看可否解答您的问题
不知能否解决您的问题? |
@kingwilliam 谢谢您的回复. 我的意思是这样的: 服务端使用 -L wss , 没有指定证书, 这时 gost 会使用内置的证书 (见 https://docs.ginuerzh.xyz/gost/tls/); 而客户端使用随意生成的证书 server.crt 作为 ca 证书进行证书锁定, 也就是指定 然后客户端尝试与服务端建立 TLS 连接; 此时, 服务端使用的内置证书显然不是我们随意生成的 ca 证书 server.crt 所签名的. 客户端应该认为这个服务端是不被信任的, 我们应该能看到 而如果把 wss 改成 https, 执行同样的操作, 我们就能在客户端看到我们所期望的报错: |
我在阅读源码时没有发现 wss 协议使用 |
你开secure试试 |
开了 secure 就是正常校验证书, 并不会使用 |
正常的+ca 两个一起用就行了 |
不行. 这样自签名的证书就用不了了. |
可以 要有域名 |
如果这样可以的话, 那你有没有试过这样:
这种情况下, 客户端仅信任
如果在开启 |
又看了一遍代码, 在有域名的情况下, 开启 现在唯一的问题就是不使用域名就无法安全地使用 wss. 因为在没有域名的情况下不能使用正式的证书, 也无法使用证书锁定. 我看到 |
你的意思是说,这个如标题所说的bug是不存在的?(如果是的话,这就很尴尬了。) |
严格地来说, 是的. 只能说之前我理解的不充分. 应该是在不使用域名的情况下, wss 协议无法使用证书锁定. 我列出的复现步骤也能说明这个问题; #630 也能解决这个问题, 不过这种做法可能不够好, 应该有更好的办法. |
@luyuhuang 等确定了我再合并到我的gost |
嗯, 还是要请作者大大看下 |
帮你@作者大大 @ginuerzh |
版本: gost 2.11.1 (go1.14.2 linux/amd64)
重现步骤:
server.crt
./gost -L 'wss://127.0.0.1:10040'
在本地启动一个服务端./gost -L 127.0.0.1:10030 -F 'wss://127.0.0.1:10040?ca=server.crt'
启动客户端127.0.0.1:10030
这时是可以正常访问的.在服务端没有使用
server.crt
作为证书的情况下应该校验失败才对. 而如果将 wss 协议改成 https, 就能看到certificate signed by unknown authority
的错误日志了.The text was updated successfully, but these errors were encountered: