为什么我得到 RemoteCertificateNameMismatch?
Why do I get RemoteCertificateNameMismatch?
我有以下 C# 客户端代码来检查 SSL 通信(使用 WCF)中的传入证书:
private bool ValidateClientCertificate(System.Security.Cryptography.X509Certificates.X509Certificate cert, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
_certificateValid = sslPolicyErrors == System.Net.Security.SslPolicyErrors.None ? true : false;
return true;
}
进入该方法时,我可以看到 sslPolicyErrors 设置为 RemoteCertificateNameMismatch?
我创建了这样的服务器证书:
- 在服务器 1 上创建 MyCert 根 CA
- 请求在服务器 2 上创建并发送到服务器 1 以颁发从属 CA 证书
- 在服务器2上安装颁发的MyCert CA(从属CA)证书
- 使用 MyCert CA 从服务器 2 请求服务器 1 的功能证书
- 在服务器 1 上安装 MyCert Services Server 1 并将其绑定到服务
- 在客户端安装 MyCert Root CA 和 MyCert CA 并检查它是否验证了整个链 3.
- 启动客户端并连接到服务器 1 上的服务
因为 MyCert 服务服务器 1 的请求是在服务器 1 上创建的,它也安装在服务器 1 上,所以我不应该收到 SSL 错误,对吗?是否需要在针对服务器 1 验证的功能证书上设置任何属性或其他内容?
据我了解,名称不必与服务器相同?
编辑: 我创建了一个新的功能证书并将 CN 设置为服务器本身的 DNS 名称。每台客户端计算机都有一个主机文件,该文件将此 CN 名称指向服务器的特定 IP。但是,我在 ValidateClientCertificate 方法中仍然遇到相同的 SSL 策略错误吗?证书到底需要什么设置才能通过验证?
尝试使用客户端调用的服务器的 DNS 名称填充证书上的 "Subject Alternative Name" 字段。
此错误发生在客户端系统向服务器发出请求(即“https://myserver.com:443/someaction”)并且期望通用名称或“主题备用名称”字段中的值之一时看起来像 "myserver.com"
如果这没有帮助,请尝试将以下信息添加到您的问题中:
- WCF 客户端正在调用的 URL
- 服务器上证书的通用名称值
我有以下 C# 客户端代码来检查 SSL 通信(使用 WCF)中的传入证书:
private bool ValidateClientCertificate(System.Security.Cryptography.X509Certificates.X509Certificate cert, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
_certificateValid = sslPolicyErrors == System.Net.Security.SslPolicyErrors.None ? true : false;
return true;
}
进入该方法时,我可以看到 sslPolicyErrors 设置为 RemoteCertificateNameMismatch?
我创建了这样的服务器证书:
- 在服务器 1 上创建 MyCert 根 CA
- 请求在服务器 2 上创建并发送到服务器 1 以颁发从属 CA 证书
- 在服务器2上安装颁发的MyCert CA(从属CA)证书
- 使用 MyCert CA 从服务器 2 请求服务器 1 的功能证书
- 在服务器 1 上安装 MyCert Services Server 1 并将其绑定到服务
- 在客户端安装 MyCert Root CA 和 MyCert CA 并检查它是否验证了整个链 3.
- 启动客户端并连接到服务器 1 上的服务
因为 MyCert 服务服务器 1 的请求是在服务器 1 上创建的,它也安装在服务器 1 上,所以我不应该收到 SSL 错误,对吗?是否需要在针对服务器 1 验证的功能证书上设置任何属性或其他内容?
据我了解,名称不必与服务器相同?
编辑: 我创建了一个新的功能证书并将 CN 设置为服务器本身的 DNS 名称。每台客户端计算机都有一个主机文件,该文件将此 CN 名称指向服务器的特定 IP。但是,我在 ValidateClientCertificate 方法中仍然遇到相同的 SSL 策略错误吗?证书到底需要什么设置才能通过验证?
尝试使用客户端调用的服务器的 DNS 名称填充证书上的 "Subject Alternative Name" 字段。
此错误发生在客户端系统向服务器发出请求(即“https://myserver.com:443/someaction”)并且期望通用名称或“主题备用名称”字段中的值之一时看起来像 "myserver.com"
如果这没有帮助,请尝试将以下信息添加到您的问题中: - WCF 客户端正在调用的 URL - 服务器上证书的通用名称值