Answer

답변

Google Chrome에서 https 웹 페이지로 이동합니다 (예 : https://mail.google.com ), URL 옆에있는 자물쇠를 클릭 한 다음 “인증서 정보”를 클릭하고 “세부 정보”탭을 클릭 한 다음 “제목 공개 키 정보”를 찾습니다. , mail.google.com의 경우 주제 공개 키 알고리즘 : “PKCS # 1 RSA 암호화”및 주제의 공개 키 :

Modulus (1024 bits): AF 39 15 98 68 E4 92 FE 4F 4F F1 BB FF 0D 2E B0 FE 25 AA BD 68 04 67 27 EA 6C 43 4C A7 6D CB C8 8F 7E 81 EE 87 26 25 10 12 54 33 9E AA 3D 9B 8F 8E 92 B3 4B 01 E3 F9 4A 29 C3 0F FD AC B7 D3 4C 97 29 3F 69 55 CF 70 83 04 AF 2E 04 6E 74 D6 0F 17 09 FE 9E 20 24 24 E3 C7 68 9C AC 11 BD 92 E4 B2 1B 09 F2 02 32 BB 55 1B 2D 16 5F 30 12 23 E2 4C 4A 8D C2 DA 3F E1 B8 BF F7 3A B1 86 BE F0 C5 Public Exponent (24 bits): 01 00 01 

이것은 RSA에서 사용되는 십진수 N=123045765072979014913511278179231402316770142733119510397469126703890433473616878571037576880489731114142173557070569117331013682110047985574967516701153320350820086344743718518661070276817382223900929884490765709232088941906671668904441902033030813416432622693650320785674286428555963210887699747381872357573

exponent=65537에 해당합니다.

답변

Python 3에서 SSLSocket.getpeercert 피어 인증서를 가져 오는 데 사용할 수 있으며,이 인증서는 모든 DER 인증서 파서에서 구문 분석 할 수 있습니다.

import ssl, socket from asn1crypto import pem, x509 hostname = "www.sjoerdlangkemper.nl" ctx = ssl.create_default_context() s = ctx.wrap_socket(socket.socket(), server_hostname=hostname) s.connect((hostname, 443)) der = s.getpeercert(binary_form=True) cert = x509.Certificate.load(der) pubkey = cert.public_key.unwrap() print(pubkey) 

변수 pubkey는 이제 RSAPublicKey입니다. 다음과 같은 모듈러스를 얻을 수 있습니다.

print(pubkey["modulus"].native) 

또는 다음과 같은 PEM 공개 키로 변환합니다.

print(pem.armor("PUBLIC KEY", pubkey.contents).decode("ASCII")) 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다