Tanúsítvány ellenőrzésének kikapcsolása webszolgáltatás hívásnál

Nem szeretek alapvetően jó és szükséges biztonsági funkciók kikapcsolásáról írni, de mivel nekünk nem volt más választásunk, másnak is hasznos lehet. Adott egy SOAP kliens, ami hívna egy webszolgáltatást, csakhogy a szerveren lévő tanúsítvány nem érvényes. Szerencsére ezt a .NET Framework kliens oldalon ellenőrzi és normális esetben elszáll a hívás, csakhogy néha sajnos az a kívánság, hogy hibás tanúsítvány esetén is csont nélkül menjen minden. Szerencsére az ellenőrzést ki lehet kapcsolni web.configban a servicePointManager elem segítségével:

<configuration>
  <system.net>
    <settings>
      <servicePointManager
          checkCertificateName="false"
          checkCertificateRevocationList="false" />
    </settings>
  </system.net>
</configuration>

 

Technorati-címkék: ,
Advertisements

4 thoughts on “Tanúsítvány ellenőrzésének kikapcsolása webszolgáltatás hívásnál

  1. kketto

    Én anno kódból a System.Net.ServicePointManager.ServerCertificateValidationCallback (a metódusba, amit értékül adtam lazán egy return true-t írtam :)) ill. a System.Net.ServicePointManager.CheckCertificateRevocatinList property-ket használtam erre a célra.

    Reply
    1. Tóth Viktor

      Hát, amit te csinálsz, az azért kicsit más, mert minden retket el fog fogadni. A checkCertificateName csak annyit kapcsol ki, hogy nem igényli, hogy a tanusítvány subject mezője megfeleljen a szerver nevének. De ettől függetlenül például olyannak kell lennie a kibocsátójának (vagy magának, ha önaláírt), hogy benne legyen a trusted rootok között. Szóval ez kisebb biztonsági kockázat.
      A te megodlásodnál generálok egy tanusítványt, és már lehet is támadni a kapcsolatot (na majd ha lesz időm, csinálok egy felvételt, hogy megmutassam, mennyire-mennyire egyszerű adatot lopni egy ilyen megoldásnál a “titkosított” csatornáról). A checkCertificateName esetében még mindig olyan tanusítványt kell szereznem, ami benne van a trusted rootban. Ez sem olyan nehéz, veszek egyet például a verisign-tól, de akkor már hozzám köthető a dolog.

      Reply
      1. kketto

        OK. Ebben igazad van, nyilván a callback megkapja a cert-et, és “agyonra” lehet vizsgálni! 🙂 Mindazonáltal csupán jelezni akartam, hogy létezik kód megoldás is.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s