Initial Checkin
This commit is contained in:
+39
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env python3
|
||||
# /// script
|
||||
# requires-python = ">=3.10"
|
||||
# dependencies = ["pyopenssl"]
|
||||
# ///
|
||||
from OpenSSL import SSL, crypto
|
||||
import socket
|
||||
import select
|
||||
|
||||
ctx = SSL.Context(SSL.TLS_CLIENT_METHOD)
|
||||
ctx.set_verify(SSL.VERIFY_NONE, lambda *a: True)
|
||||
|
||||
sock = socket.create_connection(('gp.se', 443), timeout=10)
|
||||
conn = SSL.Connection(ctx, sock)
|
||||
conn.set_tlsext_host_name(b'gp.se')
|
||||
conn.set_connect_state()
|
||||
|
||||
# Retry handshake — needed when socket has timeout set
|
||||
while True:
|
||||
try:
|
||||
conn.do_handshake()
|
||||
break
|
||||
except SSL.WantReadError:
|
||||
select.select([sock], [], [], 5)
|
||||
except SSL.WantWriteError:
|
||||
select.select([], [sock], [], 5)
|
||||
|
||||
chain = conn.get_peer_cert_chain()
|
||||
print(f'Chain: {len(chain) if chain else 0} certs')
|
||||
|
||||
if chain:
|
||||
for i, c in enumerate(chain):
|
||||
print(f' [{i}] {c.get_subject().CN}')
|
||||
|
||||
peer = conn.get_peer_certificate()
|
||||
print(f'Peer: {peer.get_subject().CN if peer else None}')
|
||||
|
||||
conn.shutdown()
|
||||
sock.close()
|
||||
Reference in New Issue
Block a user