Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-如何获取SSL密钥长度_Php_Ssl_Curl_Fopen - Fatal编程技术网

PHP-如何获取SSL密钥长度

PHP-如何获取SSL密钥长度,php,ssl,curl,fopen,Php,Ssl,Curl,Fopen,我有一个使用fopen的脚本(是的,我知道,但这是出于遗留原因)来检索SSL证书的详细信息。现在他们想将SSL密钥长度添加到摘录中,但我找不到它。我可以使用CURL进行重构,但是提取的变量太多,解析结果需要花费很多时间。有什么简单的方法可以得到我丢失的密钥长度吗 我已切换到使用此获取证书详细信息: $r = stream_socket_client("ssl://www.google.com:443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $g

我有一个使用fopen的脚本(是的,我知道,但这是出于遗留原因)来检索SSL证书的详细信息。现在他们想将SSL密钥长度添加到摘录中,但我找不到它。我可以使用CURL进行重构,但是提取的变量太多,解析结果需要花费很多时间。有什么简单的方法可以得到我丢失的密钥长度吗

我已切换到使用此获取证书详细信息:

$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"]);

然后我将从数组中获取数据

请添加一些有关您正在使用的SSL证书类型的代码。我真的不明白您在问什么。我正在解析很多SSL证书。如果只是一个,我会使用浏览器。这可能会有所帮助:@RobbieAverill谢谢。我用这个来获取证书的详细信息<代码>$r=流\u套接字\u客户端(“ssl://www.google.com:443“,$errno,$errstr,30,STREAM\u CLIENT\u CONNECT,$g)不确定如何将该函数用于此在关闭该代码段之前将其放入您的问题中:)
<?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'];