Kezdőlap
> Webfejlesztés > Tanúsítvány ellenőrzésének kikapcsolása webszolgáltatás hívásnál
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: webservice,SOAP
Kategóriák:Webfejlesztés
security, webservice
MSDN Kompetencia Központ
É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.
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.
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.
Igen, valóban lehet kódból is. De ha egyszer oda beleírod, az életben nem fogod onnan kivenni. Egy konfig fájlban több esélyed van a jó útra térésre