是否可以仅从需要客户端身份验证的服务器上使用python3获取证书而不进行身份验证?
我的环境中有一台服务器需要客户端ssl证书进行身份验证。如果您没有证书,则在与openssl连接时,您将能够获取证书,但会收到错误消息:Post with details。该错误发生在握手后期。
如果我尝试使用ssl模块使用python:
hostname = 'serverwithclientauth'
# PROTOCOL_TLS_CLIENT requires valid cert chain and hostname
context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
context.load_verify_locations('path/to/cabundle.pem')
with socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) as sock:
with context.wrap_socket(sock, server_hostname=hostname) as ssock:
print(ssock.version())
(基本上是从Python.org复制/粘贴)),wrap_socket失败。我想知道ssl序列是否可以分解为较小的块,以便我可以在服务器将证书发送给客户端后终止。
我已经尝试过:
ssl.get_server_certificate((host,port))
但是对于该主机而言,即使只有一点点失败(其他没有客户端身份验证要求的主机也能正常工作!)。