PHP.mk документација

OpenSSL промени во PHP 5.6.x

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

migration56.openssl.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека migration56.openssl.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
OpenSSL промени во PHP 5.6.x

Референца за `migration56.openssl.php` со подобрена типографија и навигација.

migration56.openssl.php

OpenSSL промени во PHP 5.6.x

: валиден JSON влез не е засегнат и ќе продолжи да се анализира нормално.

Stream wrappers сега проверуваат сертификати на партнерот и имиња на хостови по дифолт кога се користи SSL/TLS

Сите шифрирани клиентски потоци сега овозможуваат проверка на партнерот по дифолт. По дифолт, ова ќе го користи стандардниот CA пакет на OpenSSL за да го провери сертификатот на партнерот. Во повеќето случаи, нема да бидат потребни промени за комуникација со сервери со валидни SSL сертификати, бидејќи дистрибутерите генерално ги конфигурираат OpenSSL да користат познати добри CA пакети. cafile or capath Стандардниот CA пакет може да се надмине на глобално ниво со поставување на поставката за конфигурација openssl.cafile или openssl.capath, или на барање со користење на

опции за контекст. verify_peer Иако генерално не се препорачува, можно е да се оневозможи проверката на сертификатот на партнерот за барање со поставување на falseопција за контекст на verify_peer_name Иако генерално не се препорачува, можно е да се оневозможи проверката на сертификатот на партнерот за барање со поставување на false.

Отпечатоци од сертификат

Додадена е поддршка за извлекување и верификација на отпечатоци од сертификат. openssl_x509_fingerprint() е додадено за извлекување отпечаток од X.509 сертификат, и две SSL контекст на стрим опции се додадени: capture_peer_cert за фаќање на X.509 сертификатот на партнерот, и peer_fingerprint за да се потврди дека сертификатот на партнерот треба да одговара на дадениот отпечаток.

Стандардни шифри ажурирани

Стандардните шифри што ги користи PHP се ажурирани на посигурна листа базирана на » Препораки за шифри на Mozilla, со две дополнителни исклучоци: анонимни Diffie-Hellman шифри и RC4.

До оваа листа може да се пристапи преку новата OPENSSL_DEFAULT_STREAM_CIPHERS константа, и може да се презапише (како во претходните PHP верзии) со поставување на ciphers опција за контекст.

Компресија оневозможена по стандард

SSL/TLS компресијата е оневозможена по стандард за да се ублажи нападот CRIME. PHP 5.4.13 додаде disable_compression опција за контекст за да се овозможи оневозможување на компресијата: ова сега е поставено на true (односно, компресијата е оневозможена) по стандард.

Дозволи серверите да го претпочитаат својот редослед на шифри

На honor_cipher_order Додадена е опција за SSL контекст за да им овозможи на серверите за шифрирани стримови да ги ублажат BEAST ранливостите со претпочитање на шифрите на серверот пред оние на клиентот.

Пристап до договорениот протокол и шифра

До протоколот и шифрата што беа договорени за шифриран стрим сега може да се пристапи преку stream_get_meta_data() or stream_context_get_options() кога capture_session_meta SSL контекст опцијата е поставена на true.

<?php
$ctx
= stream_context_create(['ssl' => [
'capture_session_meta' => TRUE
]]);

$html = file_get_contents('https://google.com/', FALSE, $ctx);
$meta = stream_context_get_options($ctx)['ssl']['session_meta'];
var_dump($meta);
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

array(4) {
  ["protocol"]=>
  string(5) "TLSv1"
  ["cipher_name"]=>
  string(20) "ECDHE-RSA-AES128-SHA"
  ["cipher_bits"]=>
  int(128)
  ["cipher_version"]=>
  string(11) "TLSv1/SSLv3"
}

Нови опции за совршена тајност напред во шифрирани стрим сервери

Шифрираните клиентски стримови веќе поддржуваат совршена тајност напред, бидејќи генерално се контролираат од серверот. PHP шифрираните серверски стримови што користат сертификати способни за совршена тајност напред не треба да преземаат никакви дополнителни дејства за да овозможат PFS; сепак, додадени се голем број нови опции за SSL контекст за да се овозможи поголема контрола над PFS и да се справи со какви било проблеми со компатибилност што може да се појават.

ecdh_curve

Оваа опција овозможува избор на специфична крива за употреба со ECDH шифри. Ако не е наведено, prime256v1 ќе се користи.

dh_param

Патека до датотека што содржи параметри за размена на клучеви Diffie-Hellman, како што е создадена со следнава команда:

openssl dhparam -out /path/to/my/certs/dh-2048.pem 2048
single_dh_use

Ако е поставено на true, нов пар клучеви ќе биде креиран при користење на параметри Diffie-Hellman, со што се подобрува тајноста напред.

single_ecdh_use

Ако е поставено на true, нов пар клучеви секогаш ќе се генерира кога ќе се преговараат ECDH шифри. Ова ја подобрува тајноста напред.

Избор на SSL/TLS верзија

Сега е можно да се изберат специфични верзии на SSL и TLS преку crypto_method SSL контекст опција или со специфицирање на специфичен транспорт при креирање на обвивка за стрим (на пример, со повикување stream_socket_client() or stream_socket_server()).

На crypto_method SSL контекст опција прифаќа битно маскирање што ги набројува дозволените протоколи, како што прави crypto_type of stream_socket_enable_crypto().

Избрани верзии на протоколи и соодветни опции
Протокол(и) Клиентско знаменце Серверско знаменце Транспорт
Било која TLS или SSL верзија STREAM_CRYPTO_METHOD_ANY_CLIENT STREAM_CRYPTO_METHOD_ANY_SERVER ssl://
Било која TLS верзија STREAM_CRYPTO_METHOD_TLS_CLIENT STREAM_CRYPTO_METHOD_TLS_SERVER tls://
TLS 1.0 STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT STREAM_CRYPTO_METHOD_TLSv1_0_SERVER tlsv1.0://
TLS 1.1 STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT STREAM_CRYPTO_METHOD_TLSv1_1_SERVER tlsv1.1://
TLS 1.2 STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT STREAM_CRYPTO_METHOD_TLSv1_2_SERVER tlsv1.2://
SSL 3 STREAM_CRYPTO_METHOD_SSLv3_CLIENT STREAM_CRYPTO_METHOD_SSLv3_SERVER sslv3://
<?php

// Requiring TLS 1.0 or better when using file_get_contents():
$ctx = stream_context_create([
'ssl' => [
'crypto_method' => STREAM_CRYPTO_METHOD_TLS_CLIENT,
],
]);
$html = file_get_contents('https://google.com/', false, $ctx);

// Requiring TLS 1.1 or 1.2:
$ctx = stream_context_create([
'ssl' => [
'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT |
STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
],
]);
$html = file_get_contents('https://google.com/', false, $ctx);

// Connecting using the tlsv1.2:// stream socket transport.
$sock = stream_socket_client('tlsv1.2://google.com:443/');

?>

openssl_get_cert_locations() added

На openssl_get_cert_locations() function has been added: it returns the default locations PHP will search when looking for CA bundles.

<?php
var_dump
(openssl_get_cert_locations());
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

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 support

Support has been added for generating, extracting and verifying signed public key and challenges (SPKAC). openssl_spki_new(), openssl_spki_verify(), openssl_spki_export_challenge()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во openssl_spki_export() have been added to create, verify export PEM public key and associated challenge from SPKAC's generated from a KeyGen HTML5 element.

openssl_spki_new

Generates a new SPKAC using private key, challenge string and hashing algorithm.

<?php
$pkey
= openssl_pkey_new();
openssl_pkey_export($pkey, 'secret passphrase');

$spkac = openssl_spki_new($pkey, 'challenge string');
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

SPKAC=MIIBXjCByDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA3L0IfUijj7+A8CPC8EmhcdNoe5fUAog7OrBdhn7EkxFButUp40P7+LiYiygYG1TmoI/a5EgsLU3s9twEz3hmgY9mYIqb/rb+SF8qlD/K6KVyUORC7Wlz1Df4L8O3DuRGzx6/+3jIW6cPBpfgH1sVuYS1vDBsP/gMMIxwTsKJ4P0CAwEAARYkYjViMzYxMTktNjY5YS00ZDljLWEyYzctMGZjNGFhMjVlMmE2MA0GCSqGSIb3DQEBAwUAA4GBAF7hu0ifzmjonhAak2FhhBRsKFDzXdKIkrWxVNe8e0bZzMrWOxFM/rqBgeH3/gtOUDRS5Fnzyq425UsTYbjfiKzxGeCYCQJb1KJ2V5Ij/mIJHZr53WYEXHQTNMGR8RPm7IxwVXVSHIgAfXsXZ9IXNbFbcaLRiSTr9/N4U+MXUWL7
openssl_spki_verify

Verifies provided SPKAC.

<?php
$pkey
= openssl_pkey_new();
openssl_pkey_export($pkey, 'secret passphrase');

$spkac = openssl_spki_new($pkey, 'challenge string');
var_dump(openssl_spki_verify($spkac));
?>
openssl_spki_export_challenge

Exports associated challenge from provided SPKAC.

<?php
$pkey
= openssl_pkey_new();
openssl_pkey_export($pkey, 'secret passphrase');

$spkac = openssl_spki_new($pkey, 'challenge string');
$challenge = openssl_spki_export_challenge($spkac);
echo
$challenge;
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

challenge string
openssl_spki_export

Ги извезува PEM formatted RSA public key from SPKAC.

<?php
$pkey
= openssl_pkey_new();
openssl_pkey_export($pkey, 'secret passphrase');

$spkac = openssl_spki_new($pkey, 'challenge string');
echo
openssl_spki_export($spkac);
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcvQh9SKOPv4DwI8LwSaFx02h7
l9QCiDs6sF2GfsSTEUG61SnjQ/v4uJiLKBgbVOagj9rkSCwtTez23ATPeGaBj2Zg
ipv+tv5IXyqUP8ropXJQ5ELtbXPUN/gvw7cO5EbPHr/7eMhbpw8Gl+AfWxW5hLW8
MGw/+AwwjHBOwong/QIDAQAB
-----END PUBLIC KEY-----

Белешки од корисници

Нема белешки од корисници за оваа страница.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.