php - 尝试使用 fsockopen() 连接 SSL 服务器

标签 php php-5.6 fsockopen

我正在从我的本地主机和生产服务器运行下一个脚本,并且我得到了不同的输出。任何人都知道为什么我会得到那个 false从我的本地主机?

<?php
$host = 'ssl://mail.companyname.org';
$port = 993;
$error = 0;
$errorString = "";

var_dump(fsockopen($host, $port, $error, $errorString, 30));
var_dump($errorString);
var_dump($error);
本地主机输出:
bool (假)
生产服务器输出:
类型(流)的资源(4)
更新 :在评论/回答之后,我修改了代码,现在我在本地主机上得到了这个输出:

PHP Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in /tmp/test.php on line 7 PHP Warning: fsockopen(): Failed to enable crypto in /tmp/test.php on line 7 PHP Warning: fsockopen(): unable to connect to ssl://mail.twmdata.org:993 (Unknown error) in /tmp/test.php on line 7 bool(false) string(0) "" int(0)

最佳答案

这似乎是服务器证书的问题:
首先,您可以通过以下方式检查您的服务器证书及其链是否有效:
https://www.sslshopper.com/ssl-checker.htm
如果 ssl-checker 出现问题?

  • 您可以尝试更正 companyname.org 中的 SSL 证书配置
    如果您成功并且错误仍然存​​在?
  • 你必须手动添加证书文件 .


  • 如果您有自签名证书:
  • 你必须手动添加证书文件 .

  • 如果你没有证书,也不关心中间人攻击,
    您仍然可以在没有证书的情况下使用 SSL。
  • 关闭 php fsock 证书检查 (不推荐)

  • 建议至少拥有自签名证书。如果您有自签名,请尝试 1 解决方案。
    我发现了问题
    您已经暴露了您的 域名 在您的 PHP 警告日志中,所以我检查了您的域 SSL。
    在我使用此工具检查您公司的域证书后:
    https://www.sslshopper.com/ssl-checker.html#hostname=twmdata.org
    您的证书有 2 个错误:
  • 此证书已过期(0 天前)。现在续约。
  • 证书中没有一个通用名称与输入的名称 (twmdata.org) 匹配。在 Web 浏览器中访问此站点时,您可能会收到错误消息。

  • 所以看来你必须先更新你的证书
    certificate error
    更新:
    我发现这个答案可能有帮助
    https://stackoverflow.com/a/40962061/9287628
    它建议使用
    stream_context_create(['ssl' => [
       'ciphers' => 'RC4-MD5'
    ]])
    
    因为@ChrisHaas 建议与 stream_context_create 联系和 stream_socket_client如果您想指定证书目录或要关闭证书检查,则为您提供了很多选择。

    关于php - 尝试使用 fsockopen() 连接 SSL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65010281/

    相关文章:

    php - 拉拉维尔。如何按一个字段排序但首先获取具有另一个字段特定值的项目?

    php - MYSQL - 仅插入尚不存在的记录?

    PHP版本升级5.3.25到5.6

    php - 使用 PHP 连接到 WebDAV?

    php - TLS 1.2 和 HTTP/1.1 升级(PHP fsockopen)

    javascript - 如何在 PHP 中使用 Javascript?

    PHP:防止直接访问页面

    php - 使用 Symfony 2 Finder 组件获取子目录

    php - CURL 与 fsockopen 分块