Domanda

La mia azienda ha sviluppato un servizio web NET e una dll client che utilizza tale servizio web. Il webservice è ospitato sul nostro server tramite SSL e il CERT è fornito e firmato da GoDaddy. Abbiamo alcuni clienti in un ambiente host che stanno ottenendo il seguente messaggio di errore dalla DLL client quando si tenta di accedere al nostro servizio web.

System.Net.WebException La connessione sottostante chiusa:. Impossibile stabilire una relazione di fiducia per la SSL / TLS canale sicuro

La nostra soluzione è stata quella di averli aprire IE su server, che è una sfida in sé e per sé per un sacco di servizi in hosting, e passare all'URL WSDL. IE poi li richiede una finestra di avviso di protezione. Si dice che la data CERT è valido e un nome valido corrispondente al nome della pagina, ma è stato emesso da una società non si è scelto di fiducia. Quando si fa clic su Sì per procedere, la dll client può quindi con successo la connessione al servizio web e funzionare normalmente.

Qualcuno ha alcuna idea del perché GoDaddy non sarebbe stato in lista editori validi lì? Tutti i server che abbiamo in esecuzione ha GoDaddy come autorità valida. Sto cercando di indovinare, per motivi di sicurezza, hanno disinstallato l'autorità per GoDaddy, ma non del tutto convinto che non ci sia qualche altro problema di fondo.

Purtroppo, non ho avuto molta fortuna cercando di ricreare questo a livello locale. Se vado in Opzioni Internet e rimuovere le autorità GoDaddy e ha colpito il nostro servizio, SSL funziona bene. Torno nella lista degli editori e GoDaddy viene messo di nuovo a destra in. Quindi la mia seconda domanda è, come cazzo si fa a sbarazzarsi di GoDaddy in modo da poter ottenere un avvertimento cert non valida?

Ok, ultima domanda. C'è un modo nel codice che posso dire al servizio web di ignorare certs non validi. Ho visto alcuni messaggi su questo modo programmatico con WCF, ma non i servizi vecchio web.

È stato utile?

Soluzione

Potrebbe essere necessario installare sui propri server i certificati intermedi utilizzati per firmare i certificati SSL.

I browser tenterà di convalidare il certificato SSL controllando la convalida della catena di certs che hanno firmato il CERT SSL. Se il server non fornisce la catena del certificato con il certificato SSL, il browser potrebbe respingere il CERT SSL. (Più di un problema per Firefox che IE). Il certificato principale deve ancora essere installato sul computer client per niente di tutto questo al lavoro.

Altri suggerimenti

Ho risolto questo errore con l'aggiunta di questa linea prima di chiamare il metodo web:

System.Net.ServicePointManager.ServerCertificateValidationCallback = (senderX, certificate, chain, sslPolicyErrors) => { return true; };

VB.NET equivalente è

   System.Net.ServicePointManager.ServerCertificateValidationCallback = Function(senderX, certificate, chain, sslPolicyErrors)
                                                                             Return True
                                                                         End Function

Questa è davvero più di una domanda serverfault, ma io aggiungerò quello che posso qui.

La radice del CERT lista autorità che le finestre macchine normalmente fiducia viene aggiornato abbastanza regolarmente. Questo viene giù come un aggiornamento di Windows per IE. Si può vedere MSDN per ulteriori informazioni .

Se i clienti non hanno windows update attivato o stanno attivamente ignorando gli aggiornamenti di Windows, che è purtroppo molto comune per un sacco di reparti IT, quindi non c'è molto che si può fare altro che fornitori di interruttore SSL.

In sostanza, hanno bisogno di ottenere gli aggiornamenti certificato o è necessario passare a un provider di cert che ha un'alta probabilità di essere già di fiducia da parte delle macchine in questione. In genere questo mezzo Verisign o Thawte . La terza alternativa è la strada che state andando verso il basso:. Li hanno fiducia manualmente la CA principale

Alla fine della giornata io odio l'idea di cambiare un app in questo modo semplicemente perché i reparti IT in questione sono idioti, ma la vera domanda si riduce a come la vostra azienda vuole gestire questa situazione.

Quando si guarda il Percorso certificazione Go Daddy di tale certificato sul server web, vedete Go Daddy Classe xxx o Starfield Classe xxx?

E dal client non-legacy cioè Windows Vista verso l'alto, che cosa fa il display Percorso certificazione Go Daddy? Go Daddy Classe xxx o Starfield Classe xxx?

E questi clienti che ottengono l'avvertimento, sono essi i client legacy? cioè WinXP e anziani?

aggiornamenti Certificato Root funziona in modo diverso, come di Windows Vista.

http://support.microsoft.com/kb/931125

certificati principale in Windows Vista e versioni successive sono distribuiti tramite il meccanismo di aggiornamento automatico di radice - cioè, per ogni certificato di origine. Quando un utente visita un sito Web protetto (tramite HTTPS SSL), si legge in una e-mail protetto (S / MIME), o download di un controllo ActiveX che è firmato (firma del codice) ed incontra un nuovo certificato principale, il certificato di software di verifica della catena di Windows controlla Microsoft Update per il certificato principale. Se lo trova, scarica la corrente Certificate Trust List (CTL) che contiene l'elenco di tutti i certificati principali attendibili nel programma, e verifica che il certificato di origine è elencato lì; poi scarica il certificato principale specificato al sistema e lo installa nel Windows Trusted certificazione principale autorità Store.

Probabilmente troverete che il Percorso certificazione Go Daddy sul server web pensa che sia Starfield classe 2 invece di Go Daddy classe 2 in modo da è stato installato il certificato principale sbagliata. Mi ha colto in fallo, come quando si visualizza nel sul web server non visualizza un certificato di origine di avvertimento, scaricare e installare la classe 2 CERT della radice Do papà e rimuovere lo Starfield uno e il problema dovrebbe scomparire.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top