मुझे x509 प्रमाण पत्र से सार्वजनिक कुंजी निकालने की आवश्यकता है। मैंने इस स्क्रिप्ट का इस्तेमाल किया:
import socket, ssl
import OpenSSL
hostname="www.google.com"
port=443
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = context.wrap_socket(s, server_hostname=hostname)
ssl_sock.connect((hostname, port))
ssl_sock.close()
print("ssl connection Done")
cert = ssl.get_server_certificate((hostname, port))
# OpenSSL
x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
print(x509.get_pubkey().to_cryptography_key())
मैं जो मूल्य प्राप्त करता हूं .get_pubkey().to_cryptography_key()
क्या यह:
<cryptography.hazmat.backends.openssl.rsa._RSAPublicKey object at 0x0000021B75346908>
लेकिन मुझे हेक्साडेसिमल प्रारूप में सार्वजनिक कुंजी की आवश्यकता है। यानी आरएसए मॉड्यूलस।
उत्तर:
जवाब के लिए 0 № 1यह उत्तर आपके लिए काफी देर हो सकता है, लेकिन दूसरों के लिए उपयोगी है।
print OpenSSL.crypto.dump_publickey(OpenSSL.crypto.FILETYPE_PEM,x509.get_pubkey())