SSL is precisely designed to ensure integrity when the network is hostile. To make a fake server certificate that the client will accept, the attacker must subvert the basis on which the client builds its trust. This means, in practice, one of the following:
- adding a new attacker-controlled CA in the "root CA" store on the client system;
- obtaining the fake certificate by bribing one the the root CA that the client system trusts;
- exploiting a vulnerability in the software used by the client (namely, his Web browser).
Of course, security holes happen regularly; it would be preposterous to claim that none of the hundred-or-so root CA are all flawlessly honest and rock solid (especially CA controlled by some governments with a creative approach of democracy); and most ISP will send to their customer a "connection kit" (as a CD/DVD) which is a nice vector for rogue CA insertion (if we consider the ISP as hostile, then we may as well assume that the ISP is competently hostile).