2013-06-06 4 views
1

Quelle est la différence entre une socket simple et une socket ssl (par rapport à openSSL)?Prise simple vs socket SSL

Un client peut-il se connecter au port 443 (https) du serveur sur un socket normal, puis initier un ssl Handshake?

Répondre

1

La seule différence entre la communication simple et la communication SSL est le protocole. Il n'y a rien de spécial à propos du port 443, sauf que s'attend à ce que communique via le protocole SSL. Par conséquent, un client peut certainement se connecter au port 443 sans rien de spécial, et tant qu'il envoie les octets corrects (ceux qui représentent une négociation SSL), tout serveur écoutant des connexions SSL sur le port 443 répondra.

Si par 'socket simple' et 'socket ssl' vous voulez dire quelque chose d'spécifique à l'API, comme un Java EncryptedSSLSocketConnection, alors s'il vous plaît clarifier.

+0

Merci. La distinction à laquelle j'ai fait référence concerne l'API OpenSSL pour C++. Les noms des fonctions sont 1. connect (appel de connexion socket vide à partir de winsock.h) 2.SSL_connect (connexion socket ssl pour SSL.h) – sgowd

2

Oui. L'API classique (non-BIO) d'OpenSSL est conçue pour prendre en charge exactement ce type d'utilisation, permettant à tout moment d'associer une session SSL/TLS à une socket existante. HTTPS n'est pas un bon exemple de cette utilisation, puisque HTTPS nécessite une prise de contact immédiatement lors de la connexion. Pensez plutôt à POP3 ou SMTP, qui prennent en charge les commandes STARTTLS pour initier dynamiquement une prise de contact SSL après que les deux parties l'aient explicitement accepté par le biais d'une connexion simple en premier.