如何为本地托管的 wss:// 服务器创建自签名证书
Posted
技术标签:
【中文标题】如何为本地托管的 wss:// 服务器创建自签名证书【英文标题】:How to create a self-signed cert for a local hosted wss:// server 【发布时间】:2021-05-19 01:11:15 【问题描述】:我正在尝试创建一个 Windows 服务,该服务打开一个安全的 Web 套接字并侦听某个端口 (wss://localhost:1234) 上的连接。示例代码包括引用供服务器使用的证书:
var serverCertificate = new X509Certificate2(certificatePath, "mypassword");
这很好用。
当客户端尝试连接时会出现问题:
using (SslStream n = new SslStream(client.TcpClientInstance.GetStream()))
n.AuthenticateAsServer(serverCertificate, clientCertificateRequired: false, enabledSslProtocols: System.Security.Authentication.SslProtocols.Tls12, checkCertificateRevocation: false);
此行错误并出现通用“对 SSPI 的调用失败,请参阅内部异常”、“InnerException = “处理证书时发生未知错误””:
这发生在受信任的根证书颁发机构中注册的自签名证书。
有趣的是,如果我使用由 Visual Studio 生成的通用 localhost 证书,它就可以工作。
欢迎任何想法。
TIA
【问题讨论】:
【参考方案1】:可能会解决您的问题。
创建一个像 sub-domain.domain.com 这样的子域(使用您的实际域) A 记录到 127.0.0.1 为 sub-domain.domain.com 申请 SSL 证书
当您打开与 sub-domain.domain.com 的连接时,它将是有效的,并且应该解析为 127.0.0.1,这是您的“服务器”正在侦听的位置。
【讨论】:
以上是关于如何为本地托管的 wss:// 服务器创建自签名证书的主要内容,如果未能解决你的问题,请参考以下文章
如何为使用 OpenSSL 生成的证书提供多行证书名称 (CN)
如何为托管在 Azure 上的 Web 应用程序和托管在窗口的 IIS 服务器上的 Web 应用程序使用相同的自定义域?