2015-11-16 1 views
2

У меня есть сценарий, использующий fopen (да, я знаю, но по причинам, устаревшим), чтобы получить детали SSL-сертификатов. Теперь они хотят добавить длину ключа SSL в извлечение, но я не могу его найти. Я МОЖЕТ использовать рефакторинг, используя CURL, но так много переменных вытащили, что для разбора результата потребуется возраст. Есть ли простой способ получить длину ключа, которую я пропускаю?PHP - как получить длину ключа SSL

Я перешел на использование этого, чтобы получить подробную информацию CERT:

$r = stream_socket_client("ssl://www.google.com:443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $g); 
$cont = stream_context_get_params($r); 
$temp = openssl_x509_parse($cont["options"]["ssl"]["peer_certificate"]); 

Тогда я получаю данные из массива

+0

Пожалуйста, добавьте некоторые код о типе сертификата SSL, который вы используете. – Xogle

+0

Я не совсем понимаю, о чем вы спрашиваете. Я разбираю много сертификатов SSL. Если бы это был только один, я бы использовал браузер. – atlaz

+1

Это может помочь: http://php.net/manual/en/function.openssl-pkey-get-details.php –

ответ

0
<?php 
    $ssloptions = [ 
     "capture_peer_cert" => true, 
     "capture_peer_cert_chain" => true, 
     "allow_self_signed"=>false, 
     "CN_match"=>$domain, 
     "verify_peer"=>true, 
     "SNI_enabled"=>true, 
     "SNI_server_name"=>$domain, 
     "cafile"=>'/etc/ssl/certs/ca-certificates.crt' //mozilla ca cert bundle: http://curl.haxx.se/docs/caextract.html 
    ]; 
    $g = stream_context_create (["ssl" => $ssloptions]); 
    $r = stream_socket_client("ssl://$domain:$port", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $g); 
    $cont = stream_context_get_params($r); 
    $key = openssl_pkey_get_public($cont["options"]["ssl"]["peer_certificate"];); 
    $res = openssl_pkey_get_details($key); 
    echo $res['bits']; 

>

Смежные вопросы