在Linux服务器上创建自签名证书并在Windows客户端上使用它们?

时间:2015-08-21 00:12:56

标签: c# ssl networking mosquitto

我有一个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;
}

0 个答案:

没有答案