我有一个linux服务器和一个Windows主机,我试图使用SSL / TLS进行设置。我在服务器上创建了一个CA并生成了此计算机上所需的证书,然后我将它们添加到ca-certs并将CA和证书复制到客户端计算机。我将.pem证书文件转换为.cer,并使用mmc命令将CA和.cer文件添加到受信任的证书中。
现在当我运行服务器并启动客户端时,握手没有完成,服务器只是挂起,直到连接超时,真的很震惊所以任何建议都会受到赞赏。
目前客户端是用C#编写的,我使用RemoteCertificateValidationCallback来验证服务器证书:
private bool RemoteCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
Console.WriteLine("checking for ssl-policy-errors -->");
if (sslPolicyErrors == SslPolicyErrors.None)
return true;
// if got an cert auth error
Console.WriteLine("checking ssl-policy-errors for name mismatch -->");
if (sslPolicyErrors != SslPolicyErrors.RemoteCertificateNameMismatch) return false;
const string sertFileName = @"C:\Users\Christopher\Documents\Visual Studio 2013\Projects\M2MAuth\webservercert.pem";
// check if cert file exists
if (File.Exists(sertFileName))
{
var actualCertificate = X509Certificate2.CreateFromCertFile(sertFileName);
Console.WriteLine("checking if file exists -->");
return certificate.Equals(actualCertificate);
}
return false;
}