久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

PHP利用Socket獲取網站的SSL證書與公鑰

這篇文章主要給大家介紹了PHP利用Socket獲取網站的SSL證書與公鑰的相關資料,文中給出了詳細的示例代碼供大家參考學習,對大家具有一定的參考學習價值,需要的朋友們下面來一起看

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

示例代碼:

// 創建 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'];
 
// 網站證書中只有公鑰,通過 openssl_pkey_get_details 導出公鑰
 
$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;

驗證證書中的公鑰A是否正確,通過私鑰導出公鑰B,比較兩者發現一致。

$domain = 'blog.zhengxianjun.com';
$port = '443';
// ...
$pub_a = $ret['pub'];
 
$private_key_path = '/conf/ssl/blog.zhengxianjun.com.key';
 
// 證書沒有設置密碼,$passphrase 為空字符串
$pkey = openssl_pkey_get_private(file_get_content($private_key_path), $passphrase = '');
$pub_b = openssl_pkey_get_details($pkey)['key'];
 
// 兩者一致
var_dump($pub_a === $pub_b);

函數 stream_socket_client 還有一個用途是當知道服務器 IP 時,能獲取到服務器可能可以使用的域名。

$resource = stream_socket_client("ssl://$ip:$port", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
$cert = stream_context_get_params($resource);
 
// 解析 X.509 格式證書
$info = openssl_x509_parse($cert['options']['ssl']['peer_certificate']);
 
// 獲取證書中的可信域名列表
$domain = str_replace('DNS:', '', $info['extensions']['subjectAltName']);

以上可以看到獲取網站證書并不能獲得私鑰。

在一些使用 CDN 的站點,如果使用了 HTTPS 同時又希望使用自有域名,是否需要將自己的私鑰提供給 CDN 廠商呢?實際上證書路徑與使用者名稱(支持 https 的域名)并不需要一致。

也就是使用自有域名并進行 CDN 加速時不需要使用自有的 ssl 證書,只需將自己的 CDN 域名加到廠商證書的域名列表即可。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對的支持。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結合實例形式分析了php實現針對有序表插值查找的相關操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現服務端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現的多維數組排序算法,結合實例形式對比分析了php針對多維數組及帶有鍵名的多維數組進行排序相關操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要為大家詳細介紹了php結合ajaxuploadfile實現無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細介紹了PHP開發接口使用RSA進行加密解密方法,對此有興趣的朋友可以學習下。
主站蜘蛛池模板: 欧美日韩国产精品一区 | 久久久影院 | 黄色亚洲网站 | 不卡的av在线| 日韩福利 | 女人精96xxx免费网站p | 久久一视频| 91毛片在线看| 国产日韩一区二区三区 | 欧美在线 | 午夜日韩 | 久久美国 | 自拍偷拍精品 | 欧美精品一区二区三区蜜桃视频 | 久久综合伊人一区二区三 | 亚洲欧美日韩中文在线 | 亚洲国产成人av好男人在线观看 | 免费超碰| 日韩欧美二区 | 亚洲天堂av一区 | 欧美精品免费观看二区 | 国产二区三区 | 99久久久久久99国产精品免 | 欧美久久精品 | 久久综合九色综合欧美狠狠 | 久久久婷| 黄色一级视频 | 国产亚洲精品精品国产亚洲综合 | 天堂一区在线观看 | 亚洲性在线 | 91精品国产91久久久久久丝袜 | 日本a v在线播放 | 99成人 | 黄色网一级片 | 精品国产一区二区三区四区在线 | 国产一级片91 | 最近中文字幕在线视频1 | 成人在线视频免费观看 | 欧美日韩精品在线免费观看 | 日韩精品一区二区三区免费视频 | 久久一二三区 |