IT资讯/综合软件下载站!┆ 最新软件 最新文章 最新手机 UFO外星人 网站分类
您当前的位置→图文中心软件教程PHP利用Socket获取网站的SSL证书与公钥

PHP利用Socket获取网站的SSL证书与公钥


2017/6/18  编辑:admin 来源:本站整理 
通过 php curl 请求网页并不能获取到证书信息,此时需要使用 ssl socket 获取证书内容。下面来一起看看看详细的介绍这篇文章主要给大家介绍了PHP利用Socket获取网站的SSL证书与公钥的相关资料,文中给出了详细的示例代码供大家参考学习,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。示例代码:
// 创建 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 域名加到厂商证书的域名列表即可。
下一篇python实现各进制转换的总结大全
相关文章
  • ·PHP利用Socket获取网站的SSL证书与公钥
  • ·浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
  • ·Win10系统安装Photoshop CC失败怎么解决
  • ·[图文]iPhone内存不足的四种扩容方法对比,最后一种妥妥的是黑科技!
  • ·[图文]iPhone耳机隐藏的强大功能,98%的人还不知道!
  • ·[图文]iPhone手机自动删除短信功能
  • ·[图文]谷歌Pixel 2搭载原生安卓系统,这才是叫板iPhone的机皇!
  • ·[图文]苹果iPhone新专利曝光:电源键集成指纹识别技术
  • 相关推荐
  • Photo Snap(数码照片编辑软件) v7.1 官方版
  • miphone下载更新到20151028版
  • 苹果iPhone 19个拍照技巧 视频+教程 最新版
  • 阿尔法狗AlphaGo自我对弈棋谱(AlphaGo自我对弈棋谱) 1-30局完整版
  • 图片缩放软件(photoScaler批量图片缩放软件) v1.0 最新版
  • 丢失grphmfc.dll解决方法 grphmfc.dll下载 最新版
  • AlphaPic超级看图 极速版 v3.5.0.19 官方版
  • PhotoShop转换到PDF转换器 v3.0 官方版
  • 发表评论
    栏目列表
    1. 新闻资讯
    2. 注册码区
    3. 评测专区
    4. 电脑技术
    5. ARP文章
    6. 免费资源
    7. QQ文章
    8. 网站专题
    9. 安全防范
    10. 精品下载
    11. 游戏资讯
    12. 手机技巧
    13. 软件教程
    14. 更多分类
    阅读排行
    1. 影音先锋怎么看片搜片【看av片毛...
    2. 微信电脑版怎么查看附近的人?
    3. ofo共享单车要注意些什么
    4. 维棠FLV下载视频失败问题汇总及解...
    5. 微软 Surface Pro 4重装win7系统...
    6. ae怎么制作打字机效果
    7. 微信公众平台发起投票功能怎么设...
    8. Win7系统任务栏和桌面经常自动刷...
    9. uc浏览器的收藏夹在哪里
    10. 192.168.1.1路由器设置密码怎么修...
    11. 创维酷开电视恢复出厂设置步骤
    12. 百度云通讯录查看方法
    13. 网易云音乐我的音乐云盘怎么使用...
    14. win10屏幕保护程序设置win10电脑...
    15. Beyond Compare文本比较禁止编辑...
    16. 完美解码软件怎么设置?完美解码...
    17. cdr文件除了用CorelDraw还可以用...
    18. 关于微信公众号图文排版的技巧
    19. 迅雷7广告怎么去除
    20. 如何使用DiskGenius给硬盘建立新...
    网站帮助 - 广告合作 - 下载声明 - 网站地图
    88lifa