人人人妻人人人妻人人人,99精品国产综合久久久久五月天 ,欧美白人最猛性XXXXX,日韩AV无码免费播放

News新聞

業(yè)界新聞動態(tài)、技術(shù)前沿
Who are we?

您的位置:首頁      樂道系統(tǒng)FAQ      PHP利用Socket獲取網(wǎng)站的SSL證書與公鑰

PHP利用Socket獲取網(wǎng)站的SSL證書與公鑰

標(biāo)簽: 發(fā)布日期:2017-06-18 00:00:00 281

通過 php curl 請求網(wǎng)頁并不能獲取到證書信息,此時需要使用 ssl socket 獲取證書內(nèi)容。下面來一起看看看詳細(xì)的介紹:

示例代碼:

// 創(chuàng)建 stream context
$context = stream_context_create([
 'ssl' => [
  'capture_peer_cert' => true,
  'capture_peer_cert_chain' => true,
 ],
]);
 
$resource = stream_socket_client("ssl://$domain:$port", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
$cert = stream_context_get_params($resource);
 
$ssl = $cert['options']['ssl'];
$resource = $ssl['peer_certificate'];
 
// 網(wǎng)站證書中只有公鑰,通過 openssl_pkey_get_details 導(dǎo)出公鑰
 
$ret = [
 'crt' => '',
 'pub' => '',
];
 
$pkey = openssl_pkey_get_public($resource);
$ret['pub'] = openssl_pkey_get_details($pkey)['key'];
 
openssl_x509_export($resource, $pem);
$ret['crt'] = $pem;
 
foreach ($ssl['peer_certificate_chain'] as $resource)
{
 openssl_x509_export($resource, $pem);
 $ret['crt'] .= "\n" . $pem;
}
 
// 保存 $ret['crt'] 為 domain.crt
// 保存 $ret['pub'] 為 domain.pub
 
return $ret;