- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我遇到了一个奇怪的问题。看起来 OpenSSL 的“s_client”工具不喜欢我的 AppEngine 应用程序的 SSL 证书,甚至不承认它(“没有对等证书可用”),但是 Python 的 SSL 模块报告了颁发者、日期范围、序列号、主题等等,好像一点问题都没有。
我假设我的 SSL 证书存在一些细微的错误配置,但是,由于 AppEngine 提供了一个非常简单的证书上传向导,所以说存在错误配置就是说 Google 的功能被破坏了......我怀疑是这样的。
如果其他人经历过,我希望对此有所了解。
s_client:
openssl s_client -connect www.abc.com:443
s_client 输出:
CONNECTED(00000003)
3073997000:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 225 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
Python 3.3 测试脚本:
import socket
from ssl import wrap_socket, CERT_NONE, PROTOCOL_SSLv23
from ssl import SSLContext # Modern SSL?
from ssl import HAS_SNI # Has SNI?
from pprint import pprint
# Stole this from "requests" package.
def ssl_wrap_socket(sock, keyfile=None, certfile=None, cert_reqs=None,
ca_certs=None, server_hostname=None,
ssl_version=None):
context = SSLContext(ssl_version)
context.verify_mode = cert_reqs
if ca_certs:
try:
context.load_verify_locations(ca_certs)
# Py32 raises IOError
# Py33 raises FileNotFoundError
except Exception as e: # Reraise as SSLError
raise SSLError(e)
if certfile:
# FIXME: This block needs a test.
context.load_cert_chain(certfile, keyfile)
if HAS_SNI: # Platform-specific: OpenSSL with enabled SNI
return context.wrap_socket(sock, server_hostname=server_hostname)
return context.wrap_socket(sock)
hostname = 'www.abc.com'
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((hostname, 443))
sslSocket = ssl_wrap_socket(s,
ssl_version=2,
cert_reqs=2,
ca_certs='/usr/local/lib/python3.3/dist-packages/requests/cacert.pem',
server_hostname=hostname)
pprint(sslSocket.getpeercert())
s.close()
测试脚本输出:
{'issuer': ((('countryName', 'US'),),
(('organizationName', 'GeoTrust, Inc.'),),
(('commonName', 'RapidSSL CA'),)),
'notAfter': 'Oct 2 20:01:20 2014 GMT',
'notBefore': 'Sep 29 02:17:38 2013 GMT',
'serialNumber': '0E45AF',
'subject': ((('serialNumber', 'd3tVuFeMunyn/gFFucMFHgZ2iBihdthR'),),
(('organizationalUnitName', 'GT22884059'),),
(('organizationalUnitName',
'See www.rapidssl.com/resources/cps (c)13'),),
(('organizationalUnitName',
'Domain Control Validated - RapidSSL(R)'),),
(('commonName', 'www.abc.com'),)),
'subjectAltName': (('DNS', 'www.abc.com'),
('DNS', 'abc.com')),
'version': 3}
最佳答案
问题是我没有在“s_client”调用中包含“servername”参数。
关于python - OpenSSL s_client 和 Python SSL 模块在主机名证书上存在分歧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19144949/
尝试在 openssl s_client 中设置密码时出现以下错误: # openssl s_client -connect 10.0.0.3:8443 -cipher TLS_AES_128_GCM
openssl s_client -connect some.https.server:443 -showcerts 当您想要检查服务器的证书及其证书链时,这是一个很好的命令。 当您位于 HTTP/H
我正在尝试使用 openssl s_client 测试我的证书和服务器证书是否正常工作。 openssl s_client -cert mycert -key mykey -CAfile CA.cer
我正在尝试使用以下命令连接到服务器: openssl s_client -connect xx.xx.xx.xx:443 错误: CONNECTED(00000005) depth=0 L = XXX
添加完整的必需信息,抱歉不能提供域,也因为它仅供内网使用。 关于openssl本身的一些信息 [mocker ~]$ openssl version OpenSSL 0.9.8e-fips-rhel5
(审阅者:我也知道这是误入 super 用户领域,但如果之前的问题偷偷通过......:)) 这与 this question 非常相似,但在 Windows (7/8/Server 2008/201
如何使用openssl的s_client向服务器发送一个短的string? 我已阅读s_client manual但没有找到任何可用的标志。 或者还有其他方法可以实现吗? 最佳答案 Does anyo
我正在尝试测试 SSL 服务器,并想检查 SSL 服务器是否支持特定密码。 为此,我使用以下命令 = openssl s_client -connect google.com:443 -cipher
我正在尝试使用以下命令测试服务器与Apple的沙盒APNS服务器之间的连接: $ openssl s_client -connect gateway.sandbox.apple.com:2195 -c
全部, 我正在尝试创建一个 bash shell 脚本,该脚本使用 openssl 为我执行 https 查询(/dev/tcp 和 wget 不可用): openssl s_client -conn
我正在使用“Networking Security with OpenSSL”一书中的示例应用程序,到目前为止,我已经能够让客户端/服务器示例 1、2、3 正常工作。但现在我正在尝试连接到内部工具,但
当针对我们的 svn 服务器运行 svn 时,我收到此错误(已编辑域名和指纹): Error validating server certificate for 'https://svn.exampl
当我访问我的子域之一时:说 https://foo.example.com在浏览器中检查证书,证书看起来很棒。当我从远程计算机使用 openssl 时,它显示证书已过期。怎么会这样? 我试图重现在这个
我在一家外部公司工作。我们称它们为 evilcorp.com。我想使用 openssl 来调试双向 SSL 握手。 https://evilcorp.com 设置为不需要客户端身份验证。 https:
我们正在尝试建立从一台服务器到另一台服务器的 SSL 连接,以通过安全连接执行一些 HTTP 请求。 监听连接的服务器配置为监听端口 5050 并提供根证书以检查客户端 证书以进行验证。 客户端 想要
我需要在 .NET/WCF 应用程序和第三方 Web 服务器之间设置双向 SSL 通信 channel 。现在我正在尝试与主机成功握手,以验证是否正确设置了所有元素(客户端证书、服务器证书颁发机构、网
过去两天我一直在试图找出为什么我的 android 应用程序在使用以下代码连接到我的网站时出现“无对等证书”异常错误: HttpClient httpclient = new DefaultHttpC
我需要将某些 bash 脚本转换为 java 并且其中一个脚本使用带有 的 openssl 连接到服务器vanity-url 作为参数来检查是否可以使用 vanity-url 进行连接。请参阅下面的命
使用 OpenSSL 1.0.1l 在 Ubuntu 14.04 上运行: openssl s_client -CApath /etc/ssl/certs -showcerts -connect w
openssl verify有一个 -untrusted指定中间证书链的选项 根 CA 证书,用 -CAfile 指定或 -CApath选项 和要验证的叶证书,作为最后一个参数给出 有谁知道我们如何为
我是一名优秀的程序员,十分优秀!