Ce face stream_socket_enable_crypto
Unele protocoale încep necriptat și trec la TLS pe aceeași conexiune: SMTP cu STARTTLS, IMAP, FTP explicit. stream_socket_enable_crypto face această trecere pe un socket deschis cu stream_socket_client.
Pentru clienți, metoda uzuală este STREAM_CRYPTO_METHOD_TLS_CLIENT. Certificatul serverului este verificat după opțiunile ssl din contextul stream-ului (de exemplu peer_name).
Parametri
| Parametru | Descriere |
|---|---|
$stream |
Socket-ul deschis. |
$enable |
true pornește criptarea, false o oprește. |
$crypto_method |
Opțional. Metoda, de exemplu STREAM_CRYPTO_METHOD_TLS_CLIENT. |
$session_stream |
Opțional. Un stream deja criptat de la care se preiau setările. |
Ce returnează
true la succes, false la eșec, sau 0 dacă socket-ul este neblocant și negocierea nu s-a terminat încă.
Exemple
Exemplul 1: Conexiune TCP trecută pe TLS
<?php
$socket = stream_socket_client("tcp://www.dexblog.ro:443", $cod, $mesaj, 10);
stream_context_set_option($socket, "ssl", "peer_name", "www.dexblog.ro");
var_dump(stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT));
fwrite($socket, "HEAD / HTTP/1.1\r\nHost: www.dexblog.ro\r\nConnection: close\r\n\r\n");
echo fgets($socket);
echo stream_get_meta_data($socket)["crypto"]["protocol"];
Rezultat real (necesită conexiune la internet)
bool(true)
HTTP/1.1 200 OK
TLSv1.3
Greșeli frecvente
- Dezactivezi verificarea certificatului (
verify_peer => false) ca să scapi de o eroare. Conexiunea poate fi interceptată fără să observi. Repară certificatele CA ale serverului.
Comenzi înrudite
curl_init / curl_setopt / curl_exec: Pregătește o cerere HTTP către alt server, de exemplu un API. Împreună cu curl_setopt și curl_exec, trimite cererea și primește răspunsul.mail: Trimite un email folosind serverul de email configurat pe server (sendmail sau SMTP din php.ini).