- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试通过调用 ssl.get_server_certificate() 来获取目标网站的证书。如果在我的服务器上配置了代理,则此请求超时(否则工作正常)。有没有办法将代理设置传递给 ssl 以获取目标服务器的证书?或者是否有任何其他替代方法来获取目标网站的证书以实现代理设置。
此外,目标网站不断变化,因此不能将它们添加到防火墙规则中以避免超时。
self.host = 'target-website.com'
self.port = 443
PROXY = (''proxy_ip_addr', 3128)
current_cert = ssl.get_server_certificate((self.host, self.port),
ssl_version=ssl.PROTOCOL_TLSv1)
最佳答案
get_server_certificate
不支持代理。但是使用一些代码,您可以使用 HTTP CONNECT 请求通过代理创建隧道,将隧道升级到 SSL,然后获取证书:
import socket
import ssl
host = ('target.example.com',443)
proxy = (proxy_ip,proxy_port)
# connect to proxy
s = socket.socket()
s.connect(proxy)
# create tunnel to target
s.send("CONNECT {}:{} HTTP/1.0\r\n\r\n".format(*host))
buf = s.recv(8192)
assert(buf[9:12] == '200') # HTTP/1.1 200 ...
# upgrade socket to ssl - ignore certifcate errors since we only want
# to get the certificate and don't transfer sensitive data
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
cert = ctx.wrap_socket(s, server_hostname = host[0]).getpeercert(True)
print(ssl.DER_cert_to_PEM_cert(cert))
关于ssl - 配置代理的 get_server_certificate() 的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55110849/
我在尝试向网站发送 POST 消息时收到证书错误。 我收到的错误: LWP::Protocol::https::Socket:SSL 连接尝试失败错误:14090086:SSL 例程:SSL3_GET
我正在尝试通过调用 ssl.get_server_certificate() 来获取目标网站的证书。如果在我的服务器上配置了代理,则此请求超时(否则工作正常)。有没有办法将代理设置传递给 ssl 以获
我正在尝试通过调用 ssl.get_server_certificate() 来获取目标网站的证书。如果在我的服务器上配置了代理,则此请求超时(否则工作正常)。有没有办法将代理设置传递给 ssl 以获
我正在尝试使用 Python 3 和 ssl.get_server_certificate 下载 SSL 证书,以便我的工具能够以通用方式处理自签名证书。但是,当我运行它时: $ python Pyt
更具体地说,如果我运行以下代码: import ssl cert = """-----BEGIN CERTIFICATE----- MIIF0zCCBTygAwIBAgIKQ8cwCQAAAABhvz
我正在尝试获取 badssl.com 子域的服务器证书(例如 https://expired.badssl.com)。 import ssl ssl.get_server_certificate(('
我是一名优秀的程序员,十分优秀!