Пробую уже существующий сокет экспортировать в поток и перевести этот поток в режим TLS. В php.ini прописал:
openssl.cafile=/etc/ssl/certs/ca-certificates.crt
openssl.capath=/etc/ssl/certs
Пробую код:
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, 'google.com', 443);
if ($result === false) {
$str_err = "socket_connect() failed. Reason: ($result) ".socket_strerror(socket_last_error($socket));
exit;
}
$opts = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true,
)
);
stream_context_set_default($opts);
$fd = socket_export_stream($socket); //делаем из сокета поток
if(stream_socket_enable_crypto($fd, true, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT) === false) {
die("Can't switch protocol");
exit;
}
echo "Success";
?>
Поток созданный из сокета в режим не переводится, гугл не помогает.
PHP 7.0.33-0+deb9u6 (cli) (built: Oct 24 2019 18:50:20) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.33-0+deb9u6, Copyright (c) 1999-2017, by Zend Technologies