无法通过 wss:// 连接到 WebSocket 服务器(ws:// 有效),并且没有调试信息

无法通过 wss:// 连接到 WebSocket 服务器(ws:// 有效),并且没有调试信息

我在 上有一个网站example.com,在 上有一个 WebSocket 服务器example-websocket-server.com

每个都有一个 SSL 证书,以便我可以从https://

我正在使用 websocket 服务器作为所有其他网站的 websocket 服务器,包括example.com(还有更多网站)。但是wss://连接失败(ws://可以工作)。

websocket 服务器使用 Laravel-Websocket 作为服务器,它要求提供 PEM 证书的路径:https://beyondco.de/docs/laravel-websockets/basic-usage/ssl#configuration

/*
 * Path to local certificate file on filesystem. It must be a PEM encoded file which
 * contains your certificate and private key. It can optionally contain the
 * certificate chain of issuers. The private key also may be contained
 * in a separate file specified by local_pk.
 */

https://因此,对于该 PEM 证书,我使用了与在 IIS 上使用的证书相同的证书

但是我遇到了一些问题 - 我在 IIS 上使用的证书是一个.pfx文件,带有给定的密码字符串。

为了创建用于 websocket 服务器wss连接的 PEM 文件,我首先将 导出.pfx为 PKCS7 文件 ( .p7b),然后使用 OpenSSL 将其转换为.cer文件。当我将扩展名从 更改.cer.pem文件内容时,如下所示:

-----BEGIN PKCS7-----
[..long string..]
-----END PKCS7-----

(我尝试使用该文件作为.cer以防.pem万一)

但是现在wss://失败了,并且没有调试信息,所以我不知道原因是什么。 在我的例子中,原因可能有多种:

  1. 我使用了错误的证书
  2. .pfx我从到.cer/ 的转换.pem是错误的
  3. 我的应用程序端(Laravel)存在跨域限制,这就是问题所在,因为 websockets 服务器和网站位于不同的 URL 上(但可能性较小,因为它适用于ws
  4. IIS 中 WSS 的一些配置(尽管正常ws://连接有效)
  5. PKCS7 不兼容,我需要 PKCS12?

或者其他我还没想到的事情

相关内容