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
php tls,使用TLS在PHP中建立连接相关推荐
- oracle中dblink怎么用,Oracle中建立了dblink怎么使用
Oracle应用服务器OS 1.查看数据库的global_name SELECT * FROM GLOBAL_NAME; 2.查看global_name参数是true还是false show para ...
- paho mqtt java_MQTT之Eclipse.Paho源码(一)--建立连接
写在前面 通过上一个章节MQTT系列---Java端实现消息发布与订阅的介绍,我们已经基本构建出一个可以简单通信的MQTT生产和消费服务,并且具备基本的发布/订阅消息功能.那么从本章开始,我们将从源代 ...
- 如何在嵌入式 Linux 和物联网中建立信任根
随着物联网.5G 和嵌入式设备成为每个人日常生活的重要组成部分,安全和对IOT产品的信任已成为每个用户的核心关切.嵌入式设备没有良好的安全记录:在过去的几年中,出现了大量物联网设备的黑客攻击案例,这些 ...
- SSL/TLS(4): TLS连接握手过程详细分析
SSL/TLS(1):基本概念通俗解释 SSL/TLS (2):通俗解释SSL/TLS为什么安全 SSL/TLS(3): CA证书解释 前言 在前面的文章中,我们讲述了SSL/TLS相关概念和CA证书 ...
- 《深入浅出iPhone/iPad开发(第2版)》——在Xcode中建立你的界面
本节书摘来自异步社区<深入浅出iPhone/iPad开发(第2版)>一书中的在Xcode中建立你的界面,作者 [美]Dan Pilone , Tracey Pilone,更多章节内容可以访 ...
- Microbiome:在人工肠道中建立动态线性模型指导设计和分析微生物组研究
文章目录 在人工肠道中建立动态线性模型指导设计和分析微生物组研究 导读 摘要 主要结果 图1. 技术变异掩盖了微生物动态的模型 图2. 10个最高丰度细菌科随时间变化 图3. 生物和技术变异的结构和幅 ...
- R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图、2D密度估计、MASS包中的kde2d函数实现2D密度估计、geom_density2d函数可视化二维密度图
R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图.2D密度估计.MASS包中的kde2d函数实现2D密度估计.geom_density2d函数可视化二维密度图 目录
- 在SAP PI中建立场景
在SAP PI中建立场景 如果需要在PI中建立场景(scenario),要从主页开始. 主页界面如下: 主页有以下四个工作区的超链接: 企业服务库(ESR) 集成目录(ID) 系统规划(SL) 配置和 ...
- 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确。)...
之前做好的asp.net部署后,发现 访问数据库时: 异常:已捕获: "已成功与服务器建立连接,但是在登录过程中发生错误. (provider: SSL Provider, error: 0 ...
最新文章
- LeetCode MySQL 1355. 活动参与者(any函数)
- 计算机系统中的总线,计算机系统中的总线控制器及其方法
- Intent常用使用汇总
- linux用户管理和群界面怎么打开,Linux命令行界面下的用户和组的管理
- 简述中断处理的6个步骤_基于SCDM软件的CFD前处理工作5个步骤
- nagios 监控出现It appears as though you do not have permission
- 应对互联网变局,这 8 件事必须要做。
- Oracle查询优化改写技巧与案例总结三
- 流水灯c语言代码switch,51单片机流水灯代码,四种方式,开关启动
- 【英语学习工具】学习英语硬背硬记太难了, 在这里解说 LeHoCat 提供免费的 视频集 工具的使用方法, 看视频学英语的工具, 制作英语教学课件的工具, 帮助自学英语(详细图文)第2版
- 显卡刷bios改型号_A卡修改BIOS软件/刷显卡BIOS软件
- idea构建post请求_IDEA-HTTP工具
- html视频怎么改大小,对视频大小、比例进行修改
- java nginx报502,Nginx 502错误排查及解决办法
- 主梁弹性模量计算_各排立杆传至梁上荷载标准值、设计值是那一个数据
- Dubbo支持自适应等待无损下线
- java的Swing框架简介
- Calendar类获取当前时间上一个月,下一个月,当月的最后一天等的处理方法
- vim autoformat php,vim - 如何在VI中整理HTML文件的缩进?
- php显示标题控制长度,wordpress控制文章标题长度的问题
热门文章
- 怎么禁止开机启动nvidia
- socketmq 设置队列大小_[译] TCP的SYN队列和Accept队列
- PageHelper分页插件源码及原理剖析
- Spring 是如何解决循环依赖的?
- 与context的关系_Android-Context
- hadoop 单机单间_Hadoop单机模式配置
- mysql索引结构优缺点_mysql索引优缺点及注意事项
- hadoop ubantu环境搭建_ubuntu hadoop学习 环境搭建
- mysql scrapy 重复数据_MySQL大数据量表中删除重复记录
- 服务器内存不认硬盘_服务器品牌有哪些?如何选择服务器?