如何在python中执行“openssl s_client -连接ip_addr:port -服务器名url”

ddrv8njm  于 2023-03-09  发布在  Python
关注(0)|答案(1)|浏览(147)

目前我正在使用此代码来获取SSL证书:

import socket
from OpenSSL import SSL
import requests
    
context = SSL.Context(method=SSL.SSLv23_METHOD)
for bundle in [requests.certs.where(), '/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem', '/etc/ssl/certs/ca-certificates.crt']:
    try:
        context.load_verify_locations(cafile=bundle)
    except Exception:
        pass

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_conn = SSL.Connection(context=context, socket=sock)
ssl_conn.set_tlsext_host_name(url.encode())
ssl_conn.settimeout(5)
ssl_conn.connect((url, port))
ssl_conn.setblocking(1)
ssl_conn.do_handshake()
peer_cert = ssl_conn.get_peer_certificate()

如何复制命令:

openssl s_client -connect ip_addr:port -servername url
zpf6vheq

zpf6vheq1#

import socket
from OpenSSL import SSL
import requests

context = SSL.Context(method=SSL.SSLv23_METHOD)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_conn = SSL.Connection(context=context, socket=sock)
ssl_conn.set_tlsext_host_name(hostname.encode())
ssl_conn.settimeout(5)
ssl_conn.connect((str(ip_addr), port))
ssl_conn.setblocking(1) 
ssl_conn.do_handshake()
peer_cert = ssl_conn.get_peer_certificate()

相关问题