Mēs nevaram izveidot savienojumu ar HTTPS serveri, izmantojot WebRequest
, jo tiek parādīts šis kļūdas ziņojums:
Pieprasījums tika pārtraukts: Nevarēja izveidot drošu SSL/TLS kanālu.`
Mēs zinām, ka serverim nav derīga HTTPS sertifikāta ar izmantoto ceļu, bet, lai apietu šo problēmu, mēs izmantojam šādu kodu, ko esam pārņēmuši no cita StackOverflow ieraksta:
private void Somewhere() {
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AlwaysGoodCertificate);
}
private static bool AlwaysGoodCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors) {
return true;
}
Problēma ir tā, ka serveris nekad neapstiprina sertifikātu un neizdodas ar iepriekš minēto kļūdu. Vai kādam ir kāda ideja, ko man vajadzētu darīt?
Jāpiebilst, ka pirms dažām nedēļām mēs ar kolēģi veicām testus, un tas darbojās labi ar kaut ko līdzīgu tam, ko es rakstīju iepriekš. Vienīgā "galvenā atšķirība", ko mēs konstatējām, ir tā, ka es izmantoju Windows 7, bet viņš izmantoja Windows XP. Vai tas kaut ko maina?
Problēma, ar ko saskaraties, ir tā, ka aspNet lietotājam nav piekļuves sertifikātam. Jums ir jādod piekļuve, izmantojot winhttpcertcfg.exe
Piemērs, kā to iestatīt, ir atrodams šeit: http://support.microsoft.com/kb/901183
Zem 2. soļa vairāk informācijas
EDIT: Jaunākajās IIS versijās šī funkcija ir iebūvēta sertifikātu pārvaldnieka rīkā, un tai var piekļūt, noklikšķinot ar peles labo pogu uz sertifikāta un izmantojot privāto atslēgu pārvaldības iespēju. Sīkāka informācija šeit: https://serverfault.com/questions/131046/how-to-grant-iis-7-5-access-to-a-certificate-in-certificate-store/132791#132791
Kļūda ir vispārīga, un ir vairāki iemesli, kāpēc SSL/TLS sarunas var neizdoties. Visbiežāk sastopamais iemesls ir nederīgs servera sertifikāts vai beidzies tā derīguma termiņš, un jūs par to parūpējāties, nodrošinot savu servera sertifikāta validācijas āķi, taču tas ne vienmēr ir vienīgais iemesls. Serverim var būt nepieciešama savstarpēja autentifikācija, tas var būt konfigurēts ar šifru kopu, ko jūsu klients neatbalsta, tam var būt pārāk liels laika nobīde, lai nodošanas sakari būtu veiksmīgi, un vēl daudzi citi iemesli.
Labākais risinājums ir izmantot SChannel problēmu novēršanas rīku komplektu. SChannel ir SSPI nodrošinātājs, kas atbild par SSL un TLS, un jūsu klients to izmantos rokas satricināšanai. Aplūkojiet TLS/SSL rīki un iestatījumi.
Skatiet arī Kā iespējot Schannel notikumu reģistrēšanu.