2016-12-15 6 views
0

x509 인증서에서 공개 키를 추출해야합니다.x509.get_pubkey()를 파이썬에서 16 진수로 변환하는 방법

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> 

을하지만 16 진수 형식의 공개 키가 필요합니다. 즉 RSA 모듈러스이다.

답변

0

이 답변은 꽤 늦을 지 모르지만 다른 사람들에게 유용합니다.

print OpenSSL.crypto.dump_publickey(OpenSSL.crypto.FILETYPE_PEM,x509.get_pubkey())