PHP Fetch SSL Certificate



<?php
$hostname = "blackboard.boisestate.edu";
$ssloptions = array(
    "capture_peer_cert" => true, 
    "allow_self_signed"=>false, 
    "CN_match"=>$hostname, 
    "verify_peer"=>true, 
    "SNI_enabled"=>true,
    "SNI_server_name"=>$hostname,
    "cafile"=>'/etc/ssl/certs/ca-certificates.crt' //mozilla ca cert bundle: http://curl.haxx.se/docs/caextract.html
);
 
$ctx = stream_context_create( array("ssl" => $ssloptions) );
$result = stream_socket_client("ssl://$hostname:443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $ctx);
$cont = stream_context_get_params($result);
openssl_x509_export($cont["options"]["ssl"]["peer_certificate"], $pem_encoded);
//$cont["options"]["ssl"]["peer_certificate_chain"]
echo $pem_encoded;
?>

output:
-----BEGIN CERTIFICATE-----
MIIGYzCCBUugAwIBAgIQDQsHQ9qITxKbaYyXhi27TTANBgkqhkiG9w0BAQUFADBm
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSUwIwYDVQQDExxEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
ZSBDQS0zMB4XDTEwMDEwNDAwMDAwMFoXDTEzMDUwNTIzNTk1OVowgZQxCzAJBgNV
BAYTAlVTMQ4wDAYDVQQIEwVJZGFobzEOMAwGA1UEBxMFQm9pc2UxHzAdBgNVBAoT
FkJvaXNlIFN0YXRlIFVuaXZlcnNpdHkxKTAnBgNVBAsTIE9mZmljZSBvZiBJbmZv
cm1hdGlvbiBUZWNobm9sb2d5MRkwFwYDVQQDFBAqLmJvaXNlc3RhdGUuZWR1MIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCZap/3GD5vu8rEemolAyWonrmZ2Nax
Y0FdGMgtwZWOqXEEY3lceuu8nzmmZjeTzTTHtyVTL2wawc7p6Hv36HgQP7WoL9eS
D5fZ2U0Xuv56o3gEki8qFAIXKcjME2T2rwGdK0/HAenfi97EToUXxuRqRl5GFu0H
oHCHIlP7bky+kQIDAQABo4IDYDCCA1wwHwYDVR0jBBgwFoAUUOpzidsp+xCPnuUB
INTeeZlIg/cwHQYDVR0OBBYEFGdRV4KJD9fpWwrWySq3HMM+E1KOMCsGA1UdEQQk
MCKCDmJvaXNlc3RhdGUuZWR1ghAqLmJvaXNlc3RhdGUuZWR1MH8GCCsGAQUFBwEB
BHMwcTAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEkGCCsG
AQUFBzAChj1odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DQUNlcnRzL0RpZ2lDZXJ0
SGlnaEFzc3VyYW5jZUNBLTMuY3J0MA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8E
AjAAMGUGA1UdHwReMFwwLKAqoCiGJmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9j
YTMtMjAxMGEuY3JsMCygKqAohiZodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vY2Ez
LTIwMTBhLmNybDCCAcYGA1UdIASCAb0wggG5MIIBtQYLYIZIAYb9bAEDAAEwggGk
MDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3BzLXJl
cG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUAcwBl
ACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMAbwBu
AHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYAIAB0
AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQAIAB0
AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUAbQBl
AG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkAdAB5
ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAAaABl
AHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMB0GA1UdJQQWMBQG
CCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQUFAAOCAQEAtW/s0OoX4azB
zk7PJOP6yXzAs4wUvTAeqv4ZSASFWwGWKNcsT/Kp3XNFX815fW3rQ3OFmqUgyhPP
dgiHU9pV3O6NxiFrUAAw3xJqITsGBPNIYVRFxT+MyAFa7Zp3+slyTJ1mUwRBokK0
Ot7UwveDBOjAl3NRXsG/lXxzveSnz0cVnrrJ8Dp9KRSld0VL3SjSDNw2qjAiOaIb
+Z8FGeNtfCQk9pztmSUwyj+at2GcTOKyzrbXDihkdjhj3XptN+cddCOyWc25hcph
A4DBkwiKMT3CoFSNSa59gQuOAzvS7xL/ILuw+rs3trpEQ+Shslh9tov00hRU1vAQ
Le2sawkdKg==
-----END CERTIFICATE-----