Go语言 尝试在本地运行webtransport示例时出现“Opening Handshake Failed”

vbopmzt1  于 2024-01-04  发布在  Go
关注(0)|答案(1)|浏览(173)

我一直在尝试运行WebTransport实现的一些示例,例如

但是当我尝试通过浏览器访问它们时,所有的示例都得到了相同的错误,即“打开握手失败”。
Opening Handshake Failed
我使用以下命令创建了一个自签名证书

openssl req -newkey rsa:2048 -nodes -keyout cert.key \
-x509 -out cert.pem -subj '/CN=Test Certificate' \
-addext "subjectAltName = DNS:localhost"

字符串
我通过wsl 2运行它们,并从Google Chrome Canary版本121访问客户端。

--origin-to-force-quic-on=localhost:4443 localhost:1234 --allow-insecure-localhost --ignore-certificate-errors-spki-list=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=


有没有人有这个问题,或者知道我错过了什么?

xv8emn3q

xv8emn3q1#

这是一个主要的头痛,我在过去的几天,以及试图得到简单的证明概念旋转起来。
你提到你使用的是wsl 2--这就是故障点。wsl 2不支持转发分段的UDP数据包,https://github.com/microsoft/WSL/issues/6351。看起来在某些情况下,人们在networkingMode=mirroredhostAddressLoopback=true[experimental]设置上运气不错,但据我所知,情况似乎并非如此。
您需要定位您的WSL 2 IP,例如172.6.2.1(WSL中的ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
还有几件事--据我所知,RSA密钥不受支持。我成功连接到本地QUIC / WebTransport服务器的方法如下:
1.通过openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -x509 -nodes -days 10 -out ./certificate.pem -keyout ./certificate.key -subj '/CN=Test Certificate' -addext "subjectAltName = DNS:localhost"生成一对有效期<14天的ECDSA密钥
1.使用openssl x509 -in certificate.pem | openssl dgst -sha256 -binary | openssl enc -base64计算公钥的base64哈希
1.启动服务器并使用tls选项的那些键。
1.在repl中连接,而不使用Chrome标志:

function base64ToArrayBuffer(base64) {
    var binaryString = atob(base64);
    var bytes = new Uint8Array(binaryString.length);
    for (var i = 0; i < binaryString.length; i++) {
        bytes[i] = binaryString.charCodeAt(i);
    }
    return bytes.buffer;
}
const wt = new WebTransport('https://{WSL_IP}:{PORT}/counter', {
        serverCertificateHashes: [
          {
            algorithm: 'sha-256',
            value: base64ToArrayBuffer('{BASE64_HASH}')
          }
        ]
      });

字符串
FWIW我使用https://github.com/adriancable/webtransport-go实现,因为它目前支持数据报。我仍然是整个生态系统的新手,这一切似乎都很困难,很难设置。有一个当前的问题记录在 * 其他 * webtransport-go repo here https://github.com/quic-go/webtransport-go/issues/112在mac arm 64上的人无法以相同的方式连接。我仍然能够成功地获得与WSL IP和WebTransport选项的连接,普通的Chrome,没有金丝雀或旗帜的必要。

相关问题