OpenSSL Änderungen in PHP 5.6.xStreamwrapper verifizieren nun standardmäßig Zertifikate und Hostnamen bei Verwendung von SSL/TLSAlle verschlüsselten Clientstreams verifizieren nun standardmäßig den Kommunikationspartner. Standardmäßig wird dafür das Standard-CA-Bundle von OpenSSL zur Verifikation des Peer-Zertifikates herangezogen. In den meisten Fällen sind keine Änderungen notwendig, um mit Servern mit gültigen SSL-Zertifikaten zu kommunizieren, da Distributoren üblicherweise OpenSSL mit vertrauenswürdigen CA-Bundles konfigurieren.
Das Standard-CA-Bundle kann global durch eine Änderung der
konfigurationseinstellungen openssl.cafile oder openssl.capath
überschrieben werden, oder für einzelne Requests durch die
Verwendung der Kontextoptionen
Obwohl dies generell nicht empfehlenswert ist, kann die Verifikation
der Peer-Zertifikate für einzelne Requests ausgeschaltet werden, indem
die Kontextoption
Fingerabdrücke von ZertifikatenEs wurde Unterstützung für das Auslesen und Verifizieren von Fingerabdrücken von Zertifikaten hinzugefügt. openssl_x509_fingerprint kam hinzu, um den Fingerabdruck aus X.509-Zertifikaten auszulesen und zwei neue SSL Streamkontext-Optionen wurden hinzugefügt: capture_peer_cert zum Auslesen des X.509- Zertifikats des Kommunikationspartners und peer_fingerprint zur Durchsetzung, dass das Zertifikat des Kommunikationspartners dem angegebenen Fingerabdruck entsprechen muss. Aktualisierung der StandardchiffreDie von PHP verwendeten Standardchiffre wurden auf eine sicherere Liste aktualisiert, basierend auf den » Mozilla Chiffreempfehlungen, mit zwei zusätzlichen Ausnahmen: anonyme Diffie-Hellman Chiffre und RC4.
Auf diese Liste kann mit der neuen Konstanten
Komprimierung standardmäßig deaktiviert
Komprimierung von SSL/TLS wurde standardmäßig deaktiviert, um die
CRIME-Attacke zu umgehen. PHP 5.4.13 fügte die Kontextoption
Servern ist erlaubt die Reihenfolge bevorzugter Chiffre festzulegen
Die SSL Kontextoption Zugriff auf ausgehandeltes Protokoll und Chiffre
Auf das Protokoll und den Chiffre, die für einen verschlüsselten Stream
ausgehandelt wurden, kann nun mittels
stream_get_meta_data oder
stream_context_get_options zugegriffen werden, wenn
die SSL-Kontextoption
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe:
array(4) {
["protocol"]=>
string(5) "TLSv1"
["cipher_name"]=>
string(20) "ECDHE-RSA-AES128-SHA"
["cipher_bits"]=>
int(128)
["cipher_version"]=>
string(11) "TLSv1/SSLv3"
}
Neue Optionen für Perfect Forward Secrecy bei Servern für verschlüsselte StreamsVerschlüsselte Clientstreams unterstützen Perfect Forward Secrecy bereits, da dies üblicherweise vom Server kontrolliert wird. Es muss nichts zusätzlich unternommen werden, um PFS bei verschlüsselten PHP-Server-Streams zu aktivieren, die Zertifikate verwenden welche Perfect Forward Secrecy unterstützen. Es wurden jedoch einige neue SSL-Kontextoptionen hinzugefügt, welche mehr Kontrolle über PFS erlauben und eventuell auftretende Kompatibilitätsprobleme behandeln.
SSL/TLS Versionsauswahl
Es ist nun möglich die spezifischen Versionen von SSL oder TLS mittels
der SSL-Kontextoption
Die SSL-Kontextoption
<?phpopenssl_get_cert_locations hinzugefügtDie Funktion openssl_get_cert_locations wurde hinzugefügt: Sie gibt den Standard-Ablageort aus, der von PHP bei der Suche von CA-Bundles verwendet wird.
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe:
array(8) {
["default_cert_file"]=>
string(21) "/etc/pki/tls/cert.pem"
["default_cert_file_env"]=>
string(13) "SSL_CERT_FILE"
["default_cert_dir"]=>
string(18) "/etc/pki/tls/certs"
["default_cert_dir_env"]=>
string(12) "SSL_CERT_DIR"
["default_private_dir"]=>
string(20) "/etc/pki/tls/private"
["default_default_cert_area"]=>
string(12) "/etc/pki/tls"
["ini_cafile"]=>
string(0) ""
["ini_capath"]=>
string(0) ""
}
SPKI-UnterstützungUnterstützung für die Erzeugung, das Auslesen uns Verifizieren von Signed Public Key And Challenges wurde (SPKAC) wurde hinzugefügt. Die Funktionen openssl_spki_new, openssl_spki_verify, openssl_spki_export_challenge und openssl_spki_export wurden hinzugefügt, welche die durch ein KeyGen HTML5-Element erzeugten SPKACs erzeugen, verifizieren oder den PEM Public Key und zugehörige Challenge exportieren.
|