无法连接到ubuntu上的https - “未知的SSL协议错误”


2

我似乎无法从我们的Ubuntu服务器通过SSL连接到特定服务器。在我的Mac上,在本地,它完美无瑕。

服务器地址:powerschool.spokaneschools.org

curl -v https://powerschool.spokaneschools.org 输出:

  • 重建网址:https//powerschool.spokaneschools.org/
  • 在DNS缓存中找不到主机名
  • 尝试206.193.1.72 ......
  • 连接到powerschool.spokaneschools.org(206.193.1.72)端口443(#0)
  • 成功设置证书验证位置:
  • CAfile:无CApath:/ etc / ssl / certs
  • SSLv3,TLS握手,客户端问候(1):
  • 与powerschool.spokaneschools.org:443相关的未知SSL协议错误
  • 关闭连接0卷曲:(35)与powerschool.spokaneschools.org:443相关的未知SSL协议错误

openssl s_client -connect powerschool.spokaneschools.org:443 输出:

CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : SSLv3
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1466726411
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

我尝试在不同的SSL检查工具中检查网站,一切似乎都没问题(除了一些安全问题)。即使在该域中,我也没有问题连接到其他服务器。

OS

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.4 LTS
Release:        14.04
Codename:       trusty

$ curl -V
curl 7.35.0 (x86_64-pc-linux-gnu) libcurl/7.35.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smtp smtps telnet tftp 
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP 

$ openssl version -a
OpenSSL 1.0.1f 6 Jan 2014
built on: Mon May  2 16:53:18 UTC 2016
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx) 
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/usr/lib/ssl"

对我来说很好。尝试在curl上使用“-k”选项,或者请提供发行版和卷曲版本(“curl -V”),以便我们更好地理解问题。
jehad 2016年

1
@jehad添加了更多信息,添加-k无效。你有没有设法在ubuntu上运行它?
Kuf

我正在使用与您完全相同的软件版本(ubuntu服务器14.04.4,运行curl 7.35.0,openssl 1.0.1f),我也尝试过运行LinuxMint 17.3的个人桌面计算机(也有相同的curl / openssl组件)。我的ubuntu服务器在虚拟机VM中运行。所以,我想它可能归结为你的基础架构......运行你的服务器是什么,它是云主机,本地机器?并且,是否有防火墙或代理?作为科学测试,您是否尝试过参考测试(例如“superuser.com:443”或“google.com:443”)?
jehad 2016年

@jehad没有代理,防火墙有正确的例外(AWS VPC),并且与所有其他服务器的SSL连接正常工作,甚至是该域中的其他服务器
Kuf

很难说下一步该做什么,因为一切都指向你特定环境中的问题; 如果所有公共服务器都可以访问,但不是这个,那么听起来确实AWS安全组中必定存在拼写错误。你知道如何tcpdump和wireshark吗?阅读下面的Steffen Ullrich的回答,他的分析是正确的,tcpdump可能有助于确认。其他基本实验... 1)尝试另一个VM / VPC(在您的本地笔记本电脑或AWS中),2)可能听起来很愚蠢,但忘了卷曲,你试过一个基本的ping(“ping powerschool.spokaneschools.org”)吗?
jehad 2016年

Answers:


1

这适用于我,它也适用于你的curl / openssl版本。errno 104意味着连接重置,所以我认为像防火墙这样的中间盒导致了问题。从另一个网络检查,您可以确定没有涉及防火墙。


我不认为这是一个防火墙问题 - 我可以连接到没有SSL的同一台服务器,我可以连接到该域中的其他服务器,但不能连接到那个特定的服务器。如果是防火墙问题,我希望所有对该域的调用都失败。
Kuf

@Kuf:这取决于防火墙。如果它是深度检查防火墙,它将查看TLS ClientHello消息中的连接目标,如果不喜欢它则阻止它。因为它适用于相同操作系统和相同目标IP地址的相同版本的openssl,并且由于底层TCP连接有效但服务器(或防火墙)重置连接,因此它必须是网络中的问题 - 或者服务器阻塞您。
Steffen Ullrich

服务器位于亚马逊VPC中,我们使用的唯一“防火墙”是安全组,允许通过端口443进行所有传输
Kuf

@Kuf:“SSL握手读取0个字节并写入0个字节” - 看起来像ClientHello发送之前发生了重置,所以它是TCP级别的一个块 - 在防火墙或服务器前面的其他防火墙上。
Steffen Ullrich 2016年

既然它适合你而不适合我,那么我可以安全地假设我的服务器上存在问题吗?
Kuf
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.