2

私は、php stream_socket_client を介して ssl 証明書をチェックするクラスを作成しました。

ただし、一部のサイトではタイムアウトが機能しません。スクリプトは、一部のホストの応答を最大 60 秒待機することがあります (php 構成の制限のようです)。

(接続)タイムアウトを2秒に設定しているため、これは紛らわしいです。SSLトランスポートの場合、最大接続時間/転送時間を短縮するために設定できる他の制限はありません。他に使用できる時間制限はありますか?

    $options = array( 
        "ssl" => array(
        "capture_peer_cert"       => true,
        "capture_peer_chain"      => true,
        "capture_peer_cert_chain" => true, 
        "verify_peer"             => $verify_peer,  
        "allow_self_signed"       => $allow_self_signed )
    );

    if (strlen($this->cafile) > 0) {
        $options['ssl']['cafile'] = $this->cafile;
        if (strlen($this->capath) > 0 && [..]) {
            $options['ssl']['capath'] = $this->capath;
        }
    } else {
        $options['verify_peer'] = false;
    }

    $get = @stream_context_create( $options);

    $read = @stream_socket_client("ssl://$host:443", $errno, $errstr, 2, STREAM_CLIENT_CONNECT, $get);

    if($read){
        stream_set_timeout($read, 2);
        $cert = stream_context_get_params($read);
    } else {
        $cert = false;
    }       
4

1 に答える 1