HTTPS komunikace s jinou webovou službou z mé webové služby   zodpovězená otázka

C#, ASP.NET/IIS

Ahojte, mám problém s mojí webovou službou ve které musím použít pro komunikaci s jinou webovou službou https protokol. Z mého počítače to funguje správně, ale ze serveru, kde je nainstalován Windows Server 2003 nebo Windows Server 2012 R2 to skončí hlášením "The request was aborted: Could not create SSL/TLS secure channel.". Je potřeba na serveru s certifikátem ještě něco udělat, aby ho mohla moje webová služba použít ke komunikaci s jiným serverem?

Kód:

        private bool CertValidation(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslpolicyErrors)
        {
            return true;
        }

        public string Test()
        {
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CertValidation);             

                X509Certificate cert = null;
                X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
                store.Open(OpenFlags.ReadOnly);
                X509CertificateCollection colCert = store.Certificates.Find(X509FindType.FindBySerialNumber, "12345678901234567890", true);
                cert = colCert[0];
                store.Close();

                WebReference1.Sluzba sluzba;
                sluzba = new WebReference1.Sluzba sluzba();
                sluzba.ClientCertificates.Add(cert);
                sluzba.PreAuthenticate = true;
                sluzba.Credentials = System.Net.CredentialCache.DefaultCredentials;
                sluzba.UnsafeAuthenticatedConnectionSharing = true;

…
Zavolám metodu webové služby a na serveru dostanu chybové hlášení „The request was aborted: Could not create SSL/TLS secure channel.“, ale na stanici mi to jede. Při volání na serveru se to ani nedostane do funkce „CertValidation“.

        }

Nemá s tím prosím někdo zkušenosti proč to na serveru nejede (cerifikát mám nainstalován v osobním úložišti a je platný - normálně se najde)?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Hláška Could not create SSL/TLS secure channel většinou znamená, že na počítači není nainstalovaný kořenový certifikát certifikační autority, která vydala certifikát pro server, se kterým se klient pokouší navázat spojení.

Stačí se podívat, kdo vystavil certifikát cílovému serveru a nainstalovat jeho kořenový certifikát (s veřejným klíčem) na počítač klienta do složky důvěryhodných certifikační autorit.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

On byl původně trochu s instalací certifikátu problém, protože se pořád objevoval jako nedůvěryhodný kvůli vydavateli a tak jsem musel ze svého počítače udělat export vydavatele z důvěryhodné kořenové certifikační autority a naimportovat ho do „Trusted Root Certification Authorities“. Od té doby je OK a taky proto se najde jako platný - Find(X509FindType.FindBySerialNumber, "12345678901234567890", true). Je to to, co jsi měl na mysli?

Ještě doplním, že pokud na tom serveru spustím exe aplikaci se stejným kódem jako ve webové službě (použije se stejná komponenta), tak spojení také proběhne v pořádku.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, to jsem měl na mysli.

Pod jakým účtem běží ta webová služba, pod jakým spouštíš ten exe a pod jakým účtem jsi nainstaloval ten certifikát? V kódu je new X509Store(StoreName.My, StoreLocation.LocalMachine), takže se ten certifikát hledá v úložišti účtu, pod kterým assembly běží.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji za navedení, už jsem to asi vyřešil. Ohledně účtu to běželo pod tím co je standardně nastaveno po instalaci webového serveru a tak jsem u poolu zkusil poměnit "Identity" v "Advanced Settings". Když jsem "Identity" nastavil na "LocalSystem" tak se to chytlo a komunikace proběhla v pořádku. Snad toto nastavení mohu nechat a není to pro server žádná bezpečnostní hrozba.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback