PHP - 如何获取SSL密钥长度

时间:2015-11-16 18:47:50

标签: php ssl curl fopen

我有一个脚本使用fopen(是的,我知道,但由于遗产原因)来检索SSL证书的详细信息。现在他们想要将SSL密钥长度添加到提取中,但我无法找到它。我可以使用CURL进行重构,但是已经解决了很多变量,解析结果需要很长时间。有没有简单的方法来获得我错过的密钥长度?

我已切换到使用此功能获取证书详情:

server.compression.enabled=true

然后我从数组中获取数据

1 个答案:

答案 0 :(得分: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'];

&GT;