SORU
31 Mart 2009, Salı


TLS güvenli kanal -- SABUN SSL/için güven ilişkisi kurulamadı

Basit bir web servis çağrısı, bir tarafından oluşturulan var .(C# NET 2.0 windows uygulaması, web hizmeti, web hizmeti proxy Visual Studio tarafından oluşturulan), aynı zamanda C yazılı# (2.0). Bu birkaç yıl boyunca çalıştı, ve burada çalışan çok düzine kadar yerlerde yapmaya devam ediyor.

Yeni bir sitede yeni bir yükleme bir sorun haline çalışıyor. Web hizmetini çağırmak için çalışırken, mesaj başarısız, "SSL için güven ilişkisi kurulamadı/TLS güvenli kanal". Web hizmet URL -- SSL (https://) kullanır ama bu uzun zaman (ve bunu yapmak için devam eder) pek çok başka yerlerden çalışmaktadır.

Nereye bakacağım? Bu Pencereler arasında ve .güvenlik sorunu olabilir Bu yüklemek için benzersiz olduğunu NET? Eğer öyleyse, nerede güven ilişkileri kurma. Kayboldum!

CEVAP
7 Temmuz 2011, PERŞEMBE


Aşağıdaki parçacıkları bir şey aradığınız server üzerinde SSL sertifikası ile yanlış olduğu davayı çözecektir. Örneğin, kendini imzalamış olabilir veya makine ismi ile sertifika ve sunucu arasında aynı olmayabilir.

Butehlikelieğer doğrudan kontrolünüz dışındaki bir sunucu arıyorsanız, artık sunucu konuşuyorsun bu kadar emin olabiliyorsun beri bağlı olduğunu sanıyorsun. Eğer iç sunucuları ve bir "" sertifika değil, pratik, aşağıdaki web hizmet belgesi sorunları ve cesurca asker görmezden söylemek için kullanın. doğru alma ile ilgili olmadığını, ancak,

İlk iki kullanım lambda ifadeleri, üçüncü normal kod kullanır. İlk herhangi bir sertifika kabul eder. Ana belgesinde adı olmadığını kontrol edin en azından son iki beklediğiniz.
... umarım faydalı bulursunuz

//Trust all certificates
System.Net.ServicePointManager.ServerCertificateValidationCallback =
    ((sender, certificate, chain, sslPolicyErrors) => true);

// trust sender
System.Net.ServicePointManager.ServerCertificateValidationCallback
                = ((sender, cert, chain, errors) => cert.Subject.Contains("YourServerName"));

// validate cert by calling a function
ServicePointManager.ServerCertificateValidationCallback  = new RemoteCertificateValidationCallback(ValidateRemoteCertificate);

// callback used to validate the certificate in an SSL conversation
private static bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors policyErrors)
{
    bool result = false;
    if (cert.Subject.ToUpper().Contains("YourServerName"))
    {
        result = true;
    }

    return result;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • How To Cook That

    How To Cook

    16 NİSAN 2011
  • Mark Halberstadt

    Mark Halbers

    19 ŞUBAT 2010
  • PamtheBlamofficial

    PamtheBlamof

    31 Aralık 2010