使用 wget、curl 时 SSL 连接失败,但使用 firefox 和 lynx 时成功

2024-01-06

我在通过自动脚本访问该网站时遇到问题:

如果我从浏览器(chrome、firefox、甚至 lynx 都可以工作)查看,一切都可以。 我如果尝试从 PHP (fsockopen)、wget 或 curl 加载它,它会抱怨:

警告:stream_socket_enable_crypto():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:140943FC:SSL 例程:SSL3_READ_BYTES:sslv3 警报坏记录 mac

openssl 检查也失败:

openssl s_client -connect mydtac.dtac.co.th:443 3074164412:错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知协议:s23_clnt.c:787:

我尝试过不同的系统(debian),包括稳定版和测试版,wget 的问题无处不在。

我已经对连接进行了 TCP 转储,工作方法和失败方法尝试初始化 ssl 连接的方式似乎不同:

失败的请求和响应:

T 192.168.1.42:60748 -> 202.91.21.208:443 [美联社] .....,...(..j...3O.....N[U.iv.).5'...P..2.......0.,.( .$.........k.j.9.8.....2...*.&.......=.5.../.+.'.#[电子邮件受保护] /cdn-cgi/l/email-protection.).%...... .<. ......># T 202.91.21.208:443 -> 192.168.1.42:60748 [美联社] ……(

工作请求和响应:

T 192.168.1.42:60751 -> 202.91.21.208:443 [美联社] ....2...axg....;..|vYV....oS#..WD=u.zp..R./w .....................3.2.E.9.8...../.A.5.........B........ .mydtac.dtac.co.th...... .................#..3t.........
# T 202.91.21.208:443 -> 192.168.1.42:60751 [美联社] ....:...6..T ..(..ok.q
..A....F?....k.>V....U..T.......^x.c................. ..0...0..................a..L.Gd....0....H........0f1.0...U....US1 .0...U....DigiCert Inc1.0...U....www.digicert.com1%0#..U....DigiCert 高保证 CA-30...120912000000Z..150917120000Z0 ..1.0...U...TH1.0。 ..U....曼谷1.0...U....Pathumwan1(0&..U....DTAC Internet Service Co., Ltd.1#0!..U....企业服务支持1 .0...U.....dtac.co.th0..” 0...*[电子邮件受保护] /cdn-cgi/l/email-protection.....|...F...LgP.{J....b+.....:....".._.b.{c.....h... n.2.J...h..|lJ.=..^..i@6..^.Fgg.!s....U|..'[电子邮件受保护] /cdn-cgi/l/email-protection.>.... 3=cc.W......0U.......Jvlr....J.hb...p.+...d.}..A.. .;R..U.HN.\.#r%.%..F..X..;..Y&.......y....IUy>.....NU.-..$..i..I.P....... ...\c........N0..J0...U.#..0...P.s..)...... ..y.H..0...U.......-f.....U.Y.9;.....T0#..U....0...*.dtac.co.th..dtac.co.th0...U...........0...U .%..0...+.........+.......0a..U...Z0X0*.(.&.$http://crl3.digicert.com/ca3-g22.crl0*.(.&.$http://crl4.digicert.com/ca3-g22.crl0.....U. ....0. ..0......H...l..0...0:..+.........http://www.digicert.com/ssl-cps-repository.htm0..d..+.......0..V...R.A.n.y http://www.digicert.com/ssl-cps-repository.htm0..d..+.......0..V...R.A.n.y。 。使用。 。的。 。这。 .C.e. r.t.i.f.i.c.a.t.e. .c.o.n.s.t.i.t.u.t.e.s. 。验收。 。的。 。这。 .D.i.g.i.C.e.r.t. .C.P./.C.P.S. 。和。 。这。 .R.e.l.y.i.n. G。 。派对。 。协议。 。哪个。 。限制。 。责任。 。和。 。是。 .in.n.c.o.r.p.o.r.a.t.e.d. 。在此处。 。经过。 .r.e.f.e.r.e.n.c.e..0{..+........o0m0$..+.....0

我花了两天时间试图找到解决方法,但被困在这里。 任何建议将不胜感激。

我知道这是网站管理员应该调查的事情,但这不是一个选择,因为 99% 的人访问这些页面没有任何问题,他们肯定不会做任何事情......


openssl s_client -connect mydtac.dtac.co.th:443 3074164412:错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知 协议:s23_clnt.c:787:

您需要使用 SSLv3 或 TLS 1.0。您无法发送ClientHello使用 TLS 1.1 或 1.2。

首先,TLS 1.0(不用担心自签名证书警告 - 我没有使用CAfile选项):

$ /usr/local/ssl/darwin/bin/openssl s_client -tls1 -connect mydtac.dtac.co.th:443
CONNECTED(00000003)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
 0 s:/C=TH/ST=Bangkok/L=Pathumwan/O=DTAC Internet Service Co., Ltd./OU=Enterprise Service Support/CN=*.dtac.co.th
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3
 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
 2 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
...

接下来是 TLS 1.2:

$ /usr/local/ssl/darwin/bin/openssl s_client -tls1_2 -connect mydtac.dtac.co.th:443
CONNECTED(00000003)
140735152734684:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:337:
...

相关的是,该服务器处于较低级别且配置不当。如果可能的话,你应该避免它:

$ openssl s_client -ssl3 -connect mydtac.dtac.co.th:443
CONNECTED(00000003)
...
New, TLSv1/SSLv3, Cipher is RC4-MD5
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : SSLv3
    Cipher    : RC4-MD5
    Session-ID: 1C04C221FDD0501832FFD8904790A34

从 SSL 扫描来看,我推测它是一个较旧的 IIS 服务器:

$ sslscan --no-failed mydtac.dtac.co.th
                   _
           ___ ___| |___  ___ __ _ _ __
          / __/ __| / __|/ __/ _` | '_ \
          \__ \__ \ \__ \ (_| (_| | | | |
          |___/___/_|___/\___\__,_|_| |_|

                  Version 1.8.2
             http://www.titania.co.uk
        Copyright Ian Ventura-Whiting 2009

Testing SSL server mydtac.dtac.co.th on port 443

  Supported Server Cipher(s):
    Accepted  SSLv3  128 bits  ADH-RC4-MD5
    Accepted  SSLv3  128 bits  RC4-SHA
    Accepted  SSLv3  128 bits  RC4-MD5
    Accepted  SSLv3  40 bits   EXP-ADH-RC4-MD5
    Accepted  SSLv3  40 bits   EXP-RC4-MD5
    Accepted  TLSv1  256 bits  AES256-SHA
    Accepted  TLSv1  128 bits  AES128-SHA
    Accepted  TLSv1  128 bits  ADH-RC4-MD5
    Accepted  TLSv1  128 bits  RC4-SHA
    Accepted  TLSv1  128 bits  RC4-MD5
    Accepted  TLSv1  112 bits  EDH-RSA-DES-CBC3-SHA
    Accepted  TLSv1  112 bits  ADH-DES-CBC3-SHA
    Accepted  TLSv1  112 bits  DES-CBC3-SHA
    Accepted  TLSv1  56 bits   EDH-RSA-DES-CBC-SHA
    Accepted  TLSv1  56 bits   ADH-DES-CBC-SHA
    Accepted  TLSv1  56 bits   DES-CBC-SHA
    Accepted  TLSv1  40 bits   EXP-EDH-RSA-DES-CBC-SHA
    Accepted  TLSv1  40 bits   EXP-ADH-DES-CBC-SHA
    Accepted  TLSv1  40 bits   EXP-DES-CBC-SHA
    Accepted  TLSv1  40 bits   EXP-ADH-RC4-MD5
    Accepted  TLSv1  40 bits   EXP-RC4-MD5

  Prefered Server Cipher(s):
    SSLv3  128 bits  RC4-MD5
    TLSv1  128 bits  RC4-MD5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 wget、curl 时 SSL 连接失败,但使用 firefox 和 lynx 时成功 的相关文章

  • Perl LWP GET 或 POST 到 SNI SSL URL

    我有一个使用 perl LWP 向客户发送数据的系统 他们可以选择 URL 以及是 POST 还是 GET 一位新客户最近抱怨该服务不起作用 他们怀疑这是因为他们的端点使用了 SNI SSL 查看日志 我看到的只是错误消息 证书验证失败 5
  • 通过 C# Mailkit / Mimekit 发送电子邮件,但出现服务器证书错误

    Visual Studio 2015 中的 0 代码 1 我正在使用 Mailkit 最新版本 1 18 1 1 从我自己的电子邮件服务器发送电子邮件 2 电子邮件服务器具有不受信任的自签名证书 3 我在代码中添加了以下两行 以忽略服务器证
  • .NET 中非常奇怪的 SSL 错误:仅针对特定 URL 无法解密指定数据

    我正在使用 NET 从 URL 下载数据 对于大多数 URL 它都没有问题 但对于一个特定的 URL 当我尝试建立连接时 我收到一个非常奇怪的错误 此外 该错误仅在第二次 及后续 尝试发出请求时发生 第一次似乎总是有效 这是一些演示该问题的
  • 无法访问 GitLab:SSL 证书已过期

    在 Visual Studio 中 我尝试从 GitLab 上的存储库中提取一些更改 但它给了我一个错误 Git 因致命错误而失败 无法访问https gitlab git SSL证书问题 证书已过期 如何生成新证书并将其添加到 VS 中
  • 如何在c++中使用libcurl发送POST请求并接收它?

    我正在使用 c libcurl 向网页发送 POST 请求 但我正在努力测试它 使用的代码是 include
  • PRAW 出现 SSLError?

    我正在尝试开始使用 PRAW 但在使用 login 时遇到问题 我有以下代码 import praw r praw Reddit This is a test bot r login myRedditUsername password 我收
  • Android WebView setCertificate 问题 SSL 问题

    我看过很多关于 SSL 错误的帖子和信息 并且我自己也偶然发现了一个 我尝试使用 GlobalSign CA BE 证书通过 Android WebView 访问网页 但收到不受信任的错误 对于大多数手机来说 处理这个问题效果很好 只需告诉
  • 如何使用curl将多个参数传递给cron作业?

    我正在运行两个 cron 作业 这个执行没有问题 curl sS http example com cronjob php days 1 但这根本不运行 curl sS http example com cronjob php days 1
  • Google PageSpeed Insights API 无法正常工作 [PHP]

    我是 PHP 的初学者 所以也许有人可以帮助解决这个问题 我的网络应用程序显示 Google PageInsights API 错误 这是代码 我尝试将版本更改为 v2 但仍然不起作用 public function getPageSpee
  • node.js 我可以为同一个项目使用多个 ssl 证书和密钥吗?如何?

    我有我的贝宝 SSL 证书 https www webhostingtoolbox com kb how do i generate the needed ssl certificate for paypal ipn html对于为我的代码
  • 有什么简单的方法可以完全忽略带有 java url 连接的 ssl ?

    我正在构建一个应用程序 定期检查一些 RSS 提要是否有新内容 其中一些提要只能通过 https 访问 有些具有自签名或以某种方式损坏的证书 我仍然希望能够检查它们 请注意 安全性在此应用程序中不是问题 目标是以最小的努力访问内容 我使用此
  • AF网络3问题

    In AFNetworking3 表示我使用的 SSL 证书无效验证证书链 false 但现在看来该字段已被删除 我无法向我的服务器发出请求 这是请求类 import UIKit import AFNetworking class Clie
  • 没有 ssl 的 Web 加密 API

    我编写了一个用于安全消息传输的小网络应用程序 以了解有关加密的更多信息 并想向我的朋友展示它并让他们玩一下 所以我将它托管在我的小服务器上 并惊讶地发现 Web Crypto API 我竭尽全力开始工作 因为它的错误消息不是很具体 需要 S
  • 如何解决错误:消息:fsockopen():无法连接到 ssl://smtp.gmail.com:465(连接被拒绝)

    我在用着代码点火器我创建了一个电子邮件功能来将电子邮件发送到特定的电子邮件 ID public function email email config protocol smtp config smtp host ssl smtp gmai
  • 使用 C# 使用证书进行 SSL 客户端身份验证

    我需要创建一个 C 应用程序 该应用程序必须使用 SSL 向服务器发送 API 请求 我需要创建客户端身份验证 我已经拥有服务器 CA 证书 客户端证书 cer 客户端私钥 pem 和密码 我找不到有关如何创建客户端连接的示例 有人可以建议
  • 如何更改使用 wget 下载的文件的文件名?

    我正在下载一个文件www examplesite com textfile txt 当运行以下命令时 wget www examplesite com textfile txt 文件另存为textfile 我怎样才能将其另存为newfile
  • 使用 https 的 Web 服务身份验证给出错误

    我编写了一个简单的 Web 服务 并使用摘要和 HTTPS 身份验证来保护它 我已经使用 Java 中的 keytool 生成了我的证书 当我通过创建 war 文件在 Tomcat 中部署 Web 服务时 axis 的欢迎页面正确显示 但是
  • WCF、REST、SSL、客户端、自定义证书验证

    我有一个无法解决的具体问题 让我详细解释一下 我是这项技术的新手 所以我可能使用了一些错误的术语 如有不明白之处 请指正并解释或要求解释 我正在创建一个自托管的 WCF REST 服务器 托管在 WPF 应用程序中 它使用 https SL
  • PHP cURL 看不到 /etc/hosts 文件

    我在让 PHP cURL 库识别我在我的文件中创建的别名时遇到了麻烦 etc hosts file 这就是我的 etc hosts现在归档 192 168 0 20 www example dev 在另一端 192 168 0 20 Apa
  • Google Firebase SSL 证书 - 我的证书列出了大量其他网站

    问题 我的 Google Firebase SSL 证书中列出了其他域 我创建了一个 firebase 项目来测试来自 Cloud Functions 的 firebase 身份验证电子邮件 firebase jhanley com htt

随机推荐

  • 常见的未知 PHP 安全陷阱

    我知道这样的问题已经被问过一百次了 但我的有点不同 我了解所有常见且广为人知的安全问题 例如 SQL 注入 XSS 等 但是那些经常出现但大多数时候未被识别或未被判断为漏洞的问题呢 有吗 我见过很多作为一项功能而开发的一件事 直到为时已晚才
  • 有没有办法在 C++ 中实现 Python 的“separator”.join() 的模拟?

    我所找到的只是boost algorithm string join 然而 仅使用 Boost 进行连接似乎有点矫枉过正 那么也许有一些经过时间考验的食谱 UPDATE 抱歉 问题标题不好 我正在寻找用分隔符连接字符串的方法 而不仅仅是一一
  • PHPExcel toArray 跳过第一个标题行

    我正在将 Excel 文件上传到网站并对其进行处理以供数据库使用 我在用着toArray 函数获取 php 数组中的所有行 但我想跳过第一行 标题行 其余行将存储在数组中 我怎样才能跳过第一行 注意 我不能使用rangeToArray 函数
  • 如何从 Azure DevOps 管道将密钥写入 Azure Key Vault?

    我已经使用 ARM 在 Azure DevOps 中创建了一个 Key Vault 现在我想在同一管道中向它写入一个密钥 我使用以下内联 PowerShell 创建了一个 Azure PowerShell 任务 secretvalue Co
  • 使用 ImageMagick 批量调整图像大小并将图像输出到新文件夹

    当前图像文件夹路径 public html images thumbs 输出图像文件夹路径 public html images new thumbs 我当前文件夹中的每个视频有 10 个视频拇指 名为图像拇指 1 1 jpg 1 2 jp
  • 如何在 C++ 中从基类构造函数调用派生类方法? [复制]

    这个问题在这里已经有答案了 我有一个基类和两个派生类 基类构造函数在调用时应计算一些属性 尽管这些属性取决于派生类的详细信息 为了避免在每个派生类构造函数中重新编码相同的步骤 我在基类构造函数中对这些步骤进行编码 如下例所示 问题是 当我这
  • 使用 UIImagePickerController 时 iOS 10 错误 [access]

    我正在使用 XCode 8 并使用 iOS 10 2 Beta 进行测试 我已将 Photos PhotosUI 和 MobileCoreServices 框架添加到项目中 非常简单的代码 import
  • 在客户端访问IE8中文件输入的文件数据?

    是否可以获取在文件输入中选择的实际文件数据 我正在尝试执行以下代码 但 this files 不包含我期望的文件数据 在 Chrome 中确实存在 document getElementById txtFileInput onchange
  • Objective-C中使用GCD的dispatch_once创建单例

    如果您可以定位 iOS 4 0 或更高版本 使用GCD 这是在Objective C 线程安全 中创建单例的最佳方式吗 instancetype sharedInstance static dispatch once t once stat
  • 如何在自定义 Cordova 插件中包含多个 AAR 文件?

    我是科尔多瓦开发的新手 我需要编写一个引用两个 aar 文件的自定义插件 我可以将第一个 aar 文件添加到插件中 但是我对添加第二个 aar 文件有一些疑问 我可以在同一个自定义插件中添加第二个 aar 文件吗 或者我是否需要创建另一个自
  • 如何在 T-SQL 中计算 GROUP BY 行数

    我有一个 SQL 查询 它执行 GROUP BY 将包含相同 Player id 但不相同 Game id 的所有行合并在一起 SELECT p Player id p Name p Position SUM s Goals AS goal
  • 如何通过电视马拉松将消息转发给其他联系人

    当我收到联系人发来的消息后 如何立即将消息转发到另一个聊天室 我创建这个示例只是为了测试路由 但它不起作用 usr local bin python3 from telethon import TelegramClient events a
  • 如果进程以参数启动,Ruby readline 将失败

    我遇到了最奇怪的问题 下面的代码工作正常 require json require net http h Net HTTP new localhost 4567 while l gets chomp res h post api v1 se
  • Varargs Kotlin Java 互操作无法正常工作

    对于 makeSceneTransitionAnimation 有两个静态函数 public static ActivityOptionsCompat makeSceneTransitionAnimation Activity activi
  • Javascript键盘输入过滤

    有没有人有一个有效的动态 JavaScript 输入过滤器 可以限制跨多个浏览器的文本输入 我在网上看到了多个示例 但大多数似乎都有缺陷或缺乏多浏览器支持 我当前的尝试发布在下面 但在 Firefox 下移动数字失败 而且我还没有尝试过其他
  • Swift Actor 中发生数据争用

    我使用 Thread Sanitizer 在 Swift 应用程序中发现了数据争用 因此我第一次尝试通过转换有问题的数据来修复争用条件class to an actor 竞争造成的崩溃似乎已经消失 但 Thread Sanitizer 仍然
  • Angular 9 引入了需要加载的全局“$localize()”函数

    我在新的角度项目设置中遇到以下错误 已安装的软件包及其版本 https i stack imgur com 2Fb18 png 错误错误 未捕获 承诺 错误 它看起来像你的 应用程序或其依赖项之一正在使用 i18n 角9 推出了全球 loc
  • 将大流转换为字符串时内存不足

    我正在尝试将大流 4mb 转换为字符串 最终将其转换为 JSON 数组 当流大小很小 以 KB 为单位 时 一切正常 当它开始处理 4mb 流时 它就会耗尽内存 下面是我用来将流转换为字符串的方法 我几乎尝试了所有方法 我怀疑问题出在 wh
  • 无法初始化代理 - 无会话

    我有一个错误 看起来像这样 无法初始化代理 无会话 我正在使用 java hibernate 和 spring 尝试生成 PDF 文档时出现此错误 我正在按照后续步骤动态生成它并将其存储在数据库中 我通过 POST 方法向应用程序发送了请求
  • 使用 wget、curl 时 SSL 连接失败,但使用 firefox 和 lynx 时成功

    我在通过自动脚本访问该网站时遇到问题 如果我从浏览器 chrome firefox 甚至 lynx 都可以工作 查看 一切都可以 我如果尝试从 PHP fsockopen wget 或 curl 加载它 它会抱怨 警告 stream soc