Kami sedang menyiapkan SharePoint baru yang sertifikat SSL-nya belum kami miliki. Saya ingin memanggil layanan web Daftar di atasnya untuk mengambil beberapa data meta tentang penyiapan. Namun, ketika saya mencoba melakukan ini, saya mendapatkan pengecualian:
Koneksi yang mendasari ditutup: Tidak dapat membangun hubungan kepercayaan untuk saluran aman SSL / TLS.
Pengecualian bersarang berisi pesan kesalahan:
Sertifikat jarak jauh tidak valid menurut prosedur validasi.
Ini benar karena kami menggunakan sertifikat sementara.
Pertanyaan saya adalah: bagaimana saya bisa memberi tahu klien layanan web .Net ( SoapHttpClientProtocol ) untuk mengabaikan kesalahan ini?
sumber
Alternatifnya, Anda dapat mendaftarkan delegasi panggilan balik yang mengabaikan kesalahan sertifikasi:
... ServicePointManager.ServerCertificateValidationCallback = MyCertHandler; ... static bool MyCertHandler(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors error) { // Ignore errors return true; }
sumber
Seperti jawaban Jason S:
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
Saya meletakkan ini di Utama saya dan melihat ke saya
app.config
dan menguji apakah(ConfigurationManager.AppSettings["IgnoreSSLCertificates"] == "True")
sebelum memanggil baris kode itu.sumber
Saya menyelesaikannya dengan cara ini:
Panggil yang berikut ini tepat sebelum memanggil webservice ssl Anda yang menyebabkan kesalahan itu:
using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; /// <summary> /// solution for exception /// System.Net.WebException: /// The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure. /// </summary> public static void BypassCertificateError() { ServicePointManager.ServerCertificateValidationCallback += delegate( Object sender1, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }; }
sumber
Saya mengalami kesalahan yang sama saat menggunakan DownloadString; dan mampu membuatnya bekerja seperti di bawah ini dengan saran di halaman ini
System.Net.WebClient client = new System.Net.WebClient(); ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; string sHttpResonse = client.DownloadString(sUrl);
sumber
ServicePointManager.ServerCertificateValidationCallback += (mender, certificate, chain, sslPolicyErrors) => true;
akan melewati invaild ssl. Tuliskan ke konstruktor layanan web Anda.
sumber
Untuk pemula, Anda dapat memperluas kelas layanan parsial Anda dalam file cs terpisah dan menambahkan kode kode yang disediakan oleh "imanabidi" untuk membuatnya terintegrasi
sumber
Untuk memperluas posting Simon Johnsons lebih lanjut - Idealnya Anda menginginkan solusi yang akan mensimulasikan kondisi yang akan Anda lihat dalam produksi dan memodifikasi kode Anda tidak akan melakukannya dan bisa berbahaya jika Anda lupa untuk mengeluarkan kode sebelum Anda menerapkannya.
Anda akan membutuhkan semacam sertifikat yang ditandatangani sendiri. Jika Anda menggunakan IIS Express, Anda akan memiliki salah satunya, Anda hanya perlu menemukannya. Buka Firefox atau browser apa pun yang Anda suka dan buka situs web pengembang Anda. Anda seharusnya dapat melihat informasi sertifikat dari bilah URL dan tergantung pada browser Anda, Anda harus dapat mengekspor sertifikat ke sebuah file.
Selanjutnya, buka MMC.exe, dan tambahkan snap-in Sertifikat. Impor file sertifikat Anda ke penyimpanan Trusted Root Certificate Authorities dan hanya itu yang Anda perlukan. Penting untuk memastikannya masuk ke toko itu dan bukan toko lain seperti 'Pribadi'. Jika Anda tidak terbiasa dengan MMC atau sertifikat, ada banyak situs web dengan informasi bagaimana melakukan ini.
Sekarang, komputer Anda secara keseluruhan akan secara implisit mempercayai sertifikat apa pun yang telah dibuatnya sendiri dan Anda tidak perlu menambahkan kode untuk menangani ini secara khusus. Ketika Anda pindah ke produksi, itu akan terus berfungsi asalkan Anda memiliki sertifikat valid yang tepat terpasang di sana. Jangan lakukan ini di server produksi - itu akan buruk dan tidak akan berfungsi untuk klien lain selain yang ada di server itu sendiri.
sumber