我有一個C#程序連接到一個網絡服務器並顯示SSL證書的到期日期。如何確定與網絡服務器的連接是否使用完全正向保密?
我想知道的是如何確定連接是否使用完美向前保密[PFS]?
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ServicePointManager.ServerCertificateValidationCallback += ServerCertificateValidationCallback;
ServicePointManager.CheckCertificateRevocationList = true;
var request = WebRequest.Create("https://www.microsoft.com/");
var response = request.GetResponse();
Console.WriteLine("Done.");
Console.ReadLine();
}
private static bool ServerCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
Console.WriteLine("Certificate expires on " + certificate.GetExpirationDateString());
return true;
}
}
}
我將不得不閱讀,但我相信有DH模式,*不*提供PFS。我認爲你需要更具體地查看*臨時* DH密鑰協議(EDH_XXX密碼套件)。 – erickson
尋找DHE(EDH; Diffie-Hellman短暫)和ECDHE(EECDH;橢圓曲線Diffie-Hellman短暫)。只有這些密鑰協議算法才提供PFS。 DH,ECDH和RSA不。 – zakjan
Steven,我正確的理解你在說如果使用WebRequest.Create創建一個連接,那麼就沒有辦法確定正在使用什麼類型的加密? – JonnyBoats