Zend Http Request ve Response SSL sertifikası almak

1 Cevap php

Bir üçüncü taraf API bağlanmaya çalışıyorum ve bunu erişmek için Zend 1.7.0 çerçevesini kullanıyorum. Doğrulamak için, ben ilk bir URL'den dönen bir SSL sertifikası kontrol etmelisiniz. Bu benim kodda ne yapıyorum.

$client = new Zend_Http_Client($url);
$response = $client->request('GET');

Yanıt her zaman Tamam, ve ben '$ url' gittiklerinde benim tarayıcı penceresinin sağ alt köşesinde kilit tıklarsanız ben sertifikayı görebilirsiniz.

Tepki nesnesi aracılığıyla sertifika sahibini, son kullanma tarihi ve diğer özelliklerine erişmek için bir yolu var mı? Ben sertifika hakkında bilgi edinmek için göndermeden önce talebi için özel bir şey yapmak zorunda mı?

1 Cevap

Ben Zend_Http_Client kullandığı standart bağlantı adaptörü ile mümkün olduğunu sanmıyorum. Ben kazma biraz yaptım ve adaptör hemen hemen aradığınız ne gizlemek fsockopen kullanır gibi görünüyor. Bunu yapmak için yolu soket kendinizi açın ve ilk sertifika almak için:

$url = 'mail.google.com'; // For example
$context = stream_context_create();
$res = stream_context_set_option($context, 'ssl', 'capture_peer_cert', true);
$res = stream_context_set_option($context, 'ssl', 'verify_host', true);
if ($socket = stream_socket_client("tls://$url:443/", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context)) {
    if ($options = stream_context_get_options($context)) {
        if (isset($options['ssl']) && isset($options['ssl']['peer_certificate'])) {
            $keyinfo = openssl_x509_parse($options[$wrapper]['peer_certificate']);
            var_dump($keyinfo);
        }
    }
    fclose($fp);
}