Methods, systems, and computer program products for negotiating a secure
end-to-end connection using a proxy server as an intermediary. The client first
negotiates a secure connection between the client and the proxy so that any credentials
exchanged will be encrypted. After the exchange of authentication credentials,
the secure client-proxy connection is altered so that no further encryption takes
place. The client and server then negotiate a secure end-to-end connection through
the proxy, with the secure end-to-end connection being encapsulated within the
insecure client-proxy connection. In this way, the overhead of creating a separate
client-proxy connection for the secure end-to-end connection may be avoided, but
the insecure client-proxy connection introduces only minimal overhead because it
no longer encrypts any data that it carries.