C#SSL/TLS HTTPS&;合法/可信证书错误

本文关键字:错误 合法 证书 amp TLS HTTPS C#SSL | 更新日期: 2023-09-27 18:26:33

最近我从LetsEncrypt获得了一个由受信任的CA签名的证书。正如您所知,这是一个中间CA,它将证书提交给DST根CA X3。

我已经为四个不同的URLS设置了证书,这只是一个例子:

主题:CN=domain.com

SubjectAltName(SAN):www.domain.com、domain.com、www.subdomain.com、subdomain.com

嗯,当我尝试连接到https://www.subdomain.com/index它给我带来了一个例外,告诉我";从服务器接收的证书无效";。

我知道我没有错,因为我可以从任何计算机和传统浏览器访问我的子域。我非常熟悉TLS握手和PKI标准,X509v3 RFC规定,所有证书都应该使用SAN(SubjectAltName)字段进行验证,如果不是空的,则使用CN,但这被认为是不推荐使用的。

那么这里发生了什么?WebRequest/HttpWebRequest是否没有以正确的方式验证证书(如RFC所述)?我希望如此,他们忽略了SAN扩展。

我在Fedora 23 x64中使用最新的MonoDevelop,如果有帮助的话。是的,再说一遍,我的证书是100%合法有效的。

谨致问候!

C#SSL/TLS HTTPS&;合法/可信证书错误

已解决!正如我所看到的,Mono的证书存储不包含证书,甚至不包含谷歌的证书,所以我运行以下命令来添加LetsEncrypt的根CA:

sudo certmgr -ssl linktohttpsdomain
certmgr -ssl linktohttpsdomain

其中linktohttpsdomain等于你通过https的子域,很抱歉StackOverFlow仍然不允许我发布超过2个链接。

此外,还有另一种方法。您可以通过运行以下命令从其DB添加Mozilla的根证书:

mozroots --import --sync

将出现以下输出:

Importing certificates into user store...
140 new root certificates were added to your trust store.
Import process completed.