2015-08-24 19 views
11

göre geçersiz:AuthenticateAsServer uzaktan sertifika Aşağıdaki kodu kullanarak bir test istemci/sunucu bağlantısı oluşturmak çalışıyorum doğrulama prosedürüne

static void Main(string[] args) 
    { 
     var listenerThread = new Thread(ListenerThreadEntry); 
     listenerThread.Start(); 

     Thread.Sleep(TimeSpan.FromSeconds(1)); 

     var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); 
     socket.Connect("localhost", Port); 

     var rawStream = new NetworkStream(socket); 
     var stream = new SslStream(rawStream, false, VerifyServerCertificate); 
     var certificate = new X509Certificate(CertsPath + @"test.cer"); 
     var certificates = new X509CertificateCollection(new[] { certificate }); 
     stream.AuthenticateAsClient("localhost", certificates, SslProtocols.Tls, false); 

     Thread.Sleep(TimeSpan.FromSeconds(1)); 
    } 

    private static bool VerifyServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) 
    { 
     return true; 
    } 

    static void ListenerThreadEntry() 
    { 
     var listener = new TcpListener(IPAddress.Any, Port); 
     listener.Start(); 

     var client = listener.AcceptTcpClient(); 
     var serverCertificate = new X509Certificate2(CertsPath + @"\test.pfx"); 
     var sslStream = new SslStream(client.GetStream(), false); 
     sslStream.AuthenticateAsServer(serverCertificate, true, SslProtocols.Tls, false); 

     Thread.Sleep(TimeSpan.FromSeconds(10)); 
    } 

Ve alma "Uzak sertifika göre geçersiz doğrulama prosedürü "AuthenticateAsServer yönteminde hata iletisi. Sertifika oluşturuldu ve şu komutları kullanarak dosyaya kaydedildi:

makecert.exe -r -pe -n "CN=localhost" -a sha1 -sky exchange -sv test.pvk test.cer 
pvk2pfx -pvk test.pvk -spc test.cer -pfx test.pfx 

Neyi özledim?

cevap

2

, çalışıyor gibi görünüyor. false parametresini 4 - AuthenticateAsServer() parametresi olarak geçmek yalnızca iptal kontrolünü atlar, genel olarak güven kontrolünü atlamaz.

  • kendini sertifika oluşturmak etmeyin ama varsayılan olarak Windows güvenilen bir sertifika yetkilisi tarafından yarattı:

    Yani o iş yapmak için aşağıdaki seçenek var. Bu biraz paraya mal olacak, ama orada da bazı ucuz CA'lar var, Thawte sertifikası gerekmiyor.

  • Sertifikaya kişisel sertifikalar listesine aktarılarak güven oluşturma
  • Zaten güvenilen kök sertifikaları listesine eklenmiş kendinden imzalı bir CA sertifikası oluşturduysanız (şirketler veya kuruluşlarda yaygın olan) ,
  • hiç Kimlik doğrulama yapma o CA sertifikayla imzalamak (ama büyük olasılıkla istemiyorum)
3

onay adımları, senin sürecinde size kimlik doğrulaması için kullanmak sertifikaya güven eklemek nerede göremiyorum

1)First save the certificate in a file 
2)Run MMC 
3)Open the Certificate Manager (certmgr.msc in C:\Windows\System32) 
4)You will see it opens 'Certificates - Current User' 
5)In the menu, choose File, Add/Remove Snap-In 
6)Now press Add, select 'Certificates' and select 'Computer Account' 
7)Select the Local Computer 
8)Now you have two snap-ins: 
9)Certificates - Current User 
10)Certificates (Local Computer) 
11)Now import the certificate in "Certificates (Local Computer)\Trusted Root Certificates\Certificates" 
+0

küresel sertifika deposuna eklemek gerekir mi? – user626528

İlgili konular