【问题标题】:How check if the script can connect to 443 Port如何检查脚本是否可以连接到 443 端口
【发布时间】:2018-06-01 13:34:24
【问题描述】:

我正在寻找一个 PHP 脚本来检查脚本是否可以连接到 http 端口。

我试过这样的代码,但是https和http的响应是一样的:

<?php
$get = stream_context_create(array("ssl" => array("capture_peer_cert" => TRUE)));
$read = stream_socket_client("ssl://www.raffelpages.com:443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $get);
$cert = stream_context_get_params($read);
var_dump($cert["options"]["ssl"]["peer_certificate"]);

【问题讨论】:

  • 你发现了什么?你试过什么?什么失败了?
  • 我用尝试过的脚本更新了我的帖子
  • 此方案使用 fopen() 而不是 stream_socket_client():stackoverflow.com/questions/36950874/…
  • 我也试过了,但它只在所有链接上显示“1”
  • 值得注意的是,这里可能对“有效证书”有不同的定义: 0) 连接是否响应带有某种 X.509 证书的 SSL/TLS 握手? 1)根据您的系统时钟是否在其有效期内? 2) 它是为特定域名发行的吗? 3) 它是否由系统上某些根证书存储中列出的权威机构签署? 4)它被撤销了吗?请注意,这些中的每一个都依赖于一些额外的数据来进行比较,而不仅仅是打开连接。

标签: php ssl


【解决方案1】:

你可以尝试这样的事情,它会尝试连接到网站: 它将尝试使用端口“443”连接到域,如果无法连接,则因为证书无效

$domain = "www.google.es";
$port = "443";

    $fp = fsockopen($domain, $port, $errno, $errstr, $timeOut);
        if (!$fp) {
            //If not valid:
            echo "Certificate not valid";
        } else {
            echo "Certificate is valid";

【讨论】:

  • 如果服务器已关闭,如果沿途某处存在网络连接问题等,这也会返回“无效”。这不是一个好方法。
  • 它还会为端口 443 侦听 HTTPS 以外的服务器的服务器返回“证书有效”。它实际上可能满足某些用例,但描述应更改为“服务器当前正在/未在侦听标准 HTTPS 端口”之类的内容。它绝对不会做的是验证任何证书的任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 2019-10-15
  • 2012-10-29
  • 1970-01-01
相关资源
最近更新 更多