php tls,使用TLS在PHP中建立连接

我为特殊目的编写了一个小型SIP客户端.

基本上,它使用函数fsockopen()连接到端口5060

$fp = fsockopen("10.0.0.1", 5060, $errno, $errstr, 30);

然后基本上使用fread()和fwrite()读写SIP命令.

现在,我的SIP服务操作符希望我们的客户使用SIPS,

基本上是通过TLS的SIP.我花了几个小时寻找信息

关于如何使用PHP但不使用TLS连接到TLS的端口

成功.显然,fsockopen()在某种程度上支持TLS,但是

当我将以上内容替换为:

$fp = fsockopen("tls://10.0.0.1", 5061, $errno, $errstr, 10);

我什么都没有.我可以使用OpenSSL客户端从外壳连接到服务器:

$openssl s_client -connect 10.0.0.1:5061

而且我可以通过该连接与SIP服务器通信,而不会出现问题. OpenSSL支持在PHP中进行编译.

我的问题是我无法在PHP中与服务器建立TLS连接.我在一些论坛中注意到,在旧版本的PHP中,可以通过fsockopen()构建和使用SSL上下文,但显然不再可用,因为我收到有关太多参数的错误消息.

我还尝试将stream_context_create()与stream_context_set_option()结合使用,但没有从服务器得到任何答复:

$context = stream_context_create();

$result=stream_context_set_option($context, 'ssl', 'verify_peer', 'TRUE');

$result=stream_context_set_option($context, 'ssl', 'cafile', 'cert.cer');

$result=stream_context_set_option($context, 'ssl', 'verify_depth', '5');

$fp = stream_socket_client('tls://'.$host.':'.$port, $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);

但我仍然无法从服务器获得任何答复或错误.在PHP中使用TLS的推荐工作方式是什么?

解决方法:

我认为您的某些选择对于验证自签名证书是错误的;以下内容足以使其正常工作:

$context = stream_context_create([

'ssl' => [

'verify_peer' => true,

'allow_self_signed' => true,

'local_cert' => 'cert.cer',

],

]);

标签:ssl,php

来源: https://codeday.me/bug/20191029/1963911.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单的php探针,php探针程序的推荐

在我们之前的文章已经为大家介绍了什么是php探针,以及他的主要作用是什么,如果你接触了cms或许就会有点了解,当然,不要紧,看完这篇就知道php探针是做什么的了。php探针通常是用来探测空间、服务器运行的状况和php相关信…

php熊掌号怎么设置json-ld,dedecms织梦系统对接百度熊掌号并添加JSON_LD数据

百度近期推出的百度熊掌号非常的不错,我的dedecms织梦系统早早就对接好了,它能对你的原创文章进行原创保护,并评出熊掌号搜索指数,熊掌号搜索指数是对你文章的内容质量,用户喜爱、原创能力、活跃表现、领域专注五个维度进行计算评估而得到的。你的dedecms织梦网站开通熊掌号之后…

php获取信息,PHP文件信息获取函数

知识点:basename():获取文件名,传入第二个参数则只显示文件名,不显示后缀dirname():获取文件路径pathinfo():将文件信息存入一个数组,通过索引basename,dirname,extension可以获得对应的文件名,…

判断文件是否改变php,PHP判断文件是否被修改实例

在网站的管理系统中,有时需要查看某个文件是否被修改过、在什么时间被修改的、最后的修改时间是什么时候,本实例就可以实现这个功能,对表单中提交的文件进行判断,检测出修改时间。关键技术本实例主要应用filectime()和filemtime()…

java输入流转成输出流,[转]java 输出流转输入流

ByteArrayOutputStream.toByteArrayByteArrayInputStreamStringWriter.toStringStringReader字符流和二进制流是javaIO的两类流,输入流和输出流是javaIO的两类流如果你曾经使用过Java IO 编程,很可能会遇到这样一个状况,在一个类中向OutputStream里面写数…

matlab压控振荡器,MATLAB仿真应用_第5章(1)解析.ppt

第5章 数字通信系统的仿真(1) 5.1 概述 5.2 信源 5.3 信源编码 5.4 调制技术(模拟调制) 5.1 概述 实际的数字通信系统需要完成从信源到信宿的全部功能,这通常是比较复杂的。对这个系统做出的任何改动(如改变系统的结构、改变某个参数的设置等)都可能影响到整个系统的…

mysql pdo 查询一条数据,使用 PDO 关联查询 MySQL 数据

使用pdo关联查询mysql数据try {$pdo new PDO(mysql:hostlocalhost;dbnametest;, root, 123456);// 0.等值联结$sql SELECT c.name, o.id, o.customer_id, o.price FROM orders o, customer c WHERE o.customer_id c.id AND c.name :name;// 1.内联结(与上面等值联结返回的查…

php pdo 关闭,php pdo预处理

什么是预处理语句?可以把它看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制。预处理语句可以带来两大好处:查询仅需解析(或预处理)一次,但可以用相同或不同的参数执行多次。当查询准备好后,数据库…

java 下载后删除,在服务器端生成文件后,下载后并删除,改了后发现文件变成空白解决思路...

当前位置:我的异常网 Java Web开发 在服务器端生成文件后,下载后并删除,改了后发现文件在服务器端生成文件后,下载后并删除,改了后发现文件变成空白解决思路www.myexceptions.net 网友分享于:2015-08-26 浏览:99次在服务器端生成文件后,下载后并删除,…

matlab出现红色括号,想让大家看下标红地方为什么说有括号问题

MATLAB特征提取代码for i1:26fstrcat(D:\bishe\,num2str(i)); imagestrcat(f,.jpg); PSimread(image);PSimresize(PS,[300,300],bilinear);%归一化大小 PSrgb2gray(PS);[m,n]size(PS); %测量图像尺寸参数GPzeros(1,256); %预创建存放灰度出现概率的向量for k0:255GP(k1)length…

mysql 数据类型怎么用,myMySQL数据库怎么更改表中某字段的数据类型? MySQL数据库使用教程...

在mysql中,可以使用“ALTER TABLE”语句配合“MODIFY”关键字来更改表中某字段的数据类型;语法格式“ALTER TABLE MODIFY ”。(推荐教程:mysql视频教程)在 MySQL 中,ALTER TABLE 语句可以改变原有表的结构,例如增加或删…

matlab multithreading spyder,spyder和python的关系是什么

版权所有:http://wWw.pxcodeS.comspyder和python的关系:1、Spyder是Python的一个简单的集成开发环境;2、它和其他的Python开发环境相比**大的优点就是模仿MATLAB的“工作空间”的功能,可以很方便地观察和修改数组的值。LHF少儿编程…

python私有成员和保护成员,喜大普奔!Maya 2022来了?!

距离Maya 2020第一个版本发布已经过去将近1年半。各位用户苦等Maya 2021的发布,不料2021没等到,而Maya 2022要来了?!这两天小编刷Maya官网,在帮助页面竟然看到官方放出了“Maya 2022 新特性”的页面!吓得小…

php web教程视频教程下载,Web全栈 PHP+React系列视频教程下载

Web全栈 PHPReact系列视频教程下载课程介绍:此套Web全栈 PHPReact系列视频教程覆盖PHP、前端和区块链应用开发三大热门职位,教程对网络基础、前端基础(HTML CSSJavaScriptjQuery)、网站基础、PHP、React、区块链等均做了详细的讲解,无源码。Web全栈 PHPR…

mac怎么配置php开发环境变量,Mac M1安装mnmp(Mac+Nginx+MySQL+PHP)开发环境

之前刚装好了 HomeBrew ,接下来就要安装 环境了。注意:如果 brew install 出以下错误, 则安装时使用arch -arm64 brew install软件包名 进行安装安装 Nginxbrew install nginx安装成功后,通过 brew info nginx ,查看 nginx 信息,最主要是看 网…

php5 dm.dll,win10模块dll加载失败二进制怎么解决?

首先使用【WinR】,打开运行窗口,输入“Powershell”,并回车;然后在打开的Powershell管理器中,输入“Get-AppXPackage -AllUsers | Foreach {....}”命令;最后等待系统自行处理即可解决方法:1、我…

oracle查询cpu占用率高,解决oracle进程CPU占用过高问题

解决问题的过程:1)查看服务器CPU使用情况输入top会发现排在前面的都是oracle的进程,而且CPU占用率都是50以上。$toptop - 16:28:41 up 4 days, 22:35, 1 user, load average: 21.49, 22.14, 22.05Tasks: 299 total, 31 running, 268 sleeping, 0 st…

有oracle操作系统,Oracle操作系统认证方式

oracle操作系统认证方式linux下只需要在sqlnet.ora文件中添加:SQLNET.AUTHENTICATION_SERVICES (NTS)就禁止了操作系统认证的登陆方式。如果使用操作系统认证的话,要把nts去掉。如下:SQLNET.AUTHENTICATION_SERVICES (TNSNAME,HOSTNAME)windows下需要添…

matlab旋转机械转子故障信号仿真,旋转机械转子不对中故障诊断技术研究解说.docx...

石家庄铁道大学毕业论文旋转机械转子不对中故障诊断技术研究Study on Fault Diagnosis for Rotor Misalignmentof Rotating Machinery2015 届 机械工程 学院专 业 机械设计制造及其自动化 学 号 学生姓名 邵阳鑫 指导教师 申永军完成日期 2015年 5 月 29 日摘要不对中故障是旋转…

oracle10g配置失败6,Oracle10g DataGuard中ORA-16026错误解决-入门基础-Oracle频道-中国IT实验室...

今天配置一个 10g DataGuard的环境,遇到一个如下错误:Tue Sep 2 08:21:26 2008Errors in file /home/oracle/admin/ora10g/udump/ora10g_ora_32028.trc:ORA-16026: parameter LOG_ARCHIVE_DEST_1 contains an invalid attribute valueORA-16026是因为主库…