怎么在PHP中利用套接字对网站的SSL证书与公钥进行获取

  介绍

这期内容当中小编将会给大家带来有关怎么在PHP中利用套接字对网站的SSL证书与公钥进行获取,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强>示例代码:

//,创建,stream 上下文   $ context =, stream_context_create ([   ,& # 39;ssl # 39;,=祝辞,(   & # 39;才能capture_peer_cert& # 39;,=祝辞,真的,   & # 39;才能capture_peer_cert_chain& # 39;,=祝辞,真的,   ,),   ]);   ,   $ resource =, stream_socket_client (“ssl://美元域:$ port",, errno美元,errstr美元,30日,STREAM_CLIENT_CONNECT,,美元上下文);   $ cert =, stream_context_get_params(资源);   ,   美元$ ssl =, cert(& # 39;选项# 39;][& # 39;ssl # 39;];   美元$ resource =, ssl (& # 39; peer_certificate& # 39;);   ,//,网站证书中只有公钥,通过,openssl_pkey_get_details 导出公钥   ,   $ ret =, (   ,& # 39;crt # 39;,=祝辞,& # 39;& # 39;   ,& # 39;酒吧# 39;,=祝辞,& # 39;& # 39;   ];   ,   $ pkey =, openssl_pkey_get_public(资源);   $ ret[& # 39;酒吧# 39;],=,openssl_pkey_get_details (pkey美元)(& # 39;关键# 39;);   ,   openssl_x509_export(资源,美元,美元pem);   $ ret [& # 39; crt # 39;],=, pem美元;   ,   foreach  ($ ssl [& # 39; peer_certificate_chain& # 39;], as 美元资源)   {   ,openssl_x509_export(资源,美元,美元pem);   ,$ ret [& # 39; crt # 39;],。=,“\ n",只pem美元;   }   ,//,保存,随著美元[& # 39;crt # 39;],为domain.crt//,保存,随著美元[& # 39;酒吧# 39;],为domain.pub   ,   return 美元ret;

<强>验证证书中的公钥一是否正确,通过私钥导出公钥B,比较两者发现一致。

domain 美元;=,& # 39;blog.zhengxianjun.com& # 39;;   时间=美元port  & # 39; 443 & # 39;;//,…   美元$ pub_a =, ret[& # 39;酒吧# 39;];   ,   时间=美元private_key_path  & # 39;/conf/ssl/blog.zhengxianjun.com.key& # 39;;   ,//,证书没有设置密码,passphrase 美元;为空字符串   pkey 美元;=,openssl_pkey_get_private (file_get_content (private_key_path美元),,passphrase 美元;=,& # 39;& # 39;);   $ pub_b =, openssl_pkey_get_details (pkey美元)(& # 39;关键# 39;);   ,//,两者一致   var_dump()美元pub_a ===, pub_b美元);

函数stream_socket_client还有一个用途是当知道服务器IP时,能获取到服务器可能可以使用的域名。

resource 美元;=,stream_socket_client (“ssl://$ IP: $ port",, errno美元,errstr美元,30日,STREAM_CLIENT_CONNECT,,美元上下文);   $ cert =, stream_context_get_params(资源);   ,//,解析,X.509 格式证书   info 美元;=,openssl_x509_parse (cert(& # 39;选项# 39;][& # 39;ssl # 39;] [& # 39; peer_certificate& # 39;]);   ,//,获取证书中的可信域名列表   domain 美元;=,str_replace (& # 39; DNS: & # 39;,, & # 39; & # 39;,,美元信息[& # 39;扩展# 39;][& # 39;subjectAltName& # 39;]);

<强>以上可以看到获取网站证书并不能获得私钥。

在一些使用CDN的站点,如果使用了HTTPS同时又希望使用自有域名,是否需要将自己的私钥提供给CDN厂商呢?实际上证书路径与使用者名称(支持HTTPS的域名)并不需要一致。

也就是使用自有域名并进行CDN加速时不需要使用自有ssl证的书,只需将自己的CDN域名加到厂商证书的域名列表即可。

上述就是小编为大家分享的怎么在PHP中利用套接字对网站的ssl证书与公钥进行获取了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

怎么在PHP中利用套接字对网站的SSL证书与公钥进行获取