it-swarm-tr.com

Güvenli bir web sayfasının genel anahtarı nasıl edinilir?

HTTPS protokolünü kullanarak verisign vb. Bir web sayfasının ortak anahtarını nasıl alabilirim?

28
shalki

Bu komut size sertifikayı gösterir (-showcerts zincirinin tamamını görmek istiyorsanız ekstra bir parametre olarak):

openssl s_client -connect the.Host.name:443

Bu sertifikayı alır ve ortak anahtarı yazdırır:

openssl s_client -connect the.Host.name:443 | openssl x509 -pubkey -noout

Daha fazla kazmak istiyorsanız, bu sor ilgi çekici olabilir.

60
Bruno

Google Chrome'da, https web sayfasına gidin (say https://mail.google.com ), URL'nin yanındaki kilidi tıklayın, ardından "sertifika bilgileri" ni tıklayın, ardından "Ayrıntılar" sekmesini bulun ve ardından mail.google.com İçin Konu Ortak Anahtar Algoritması yazan "Konu Ortak Anahtar Bilgisi" ni bulun: "PKCS # 1 RSA Şifrelemesi" ve Öznenin Ortak Anahtarı:

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

Bu ondalık sayılara karşılık gelir N=123045765072979014913511278179231402316770142733119510397469126703890433473616878571037576880489731114142173557070569117331013682110047985574967516701153320350820086344743718518661070276817382223900929884490765709232088941906671668904441902033030813416432622693650320785674286428555963210887699747381872357573

ve exponent=65537 RSA'da kullanıldı.

10
dr jimbob

Eş sertifika almak için Python 3, SSLSocket.getpeercert içinde kullanılabilir ve bu da herhangi bir DER sertifika ayrıştırıcısı tarafından ayrıştırılabilir:

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)

Bağlantı RSA kullanıyorsa pubkey değişkeni artık RSAPublicKey olur. Bu modülü alabilirsiniz:

print(pubkey["modulus"].native)

Veya aşağıdaki gibi bir PEM ortak anahtarına dönüştürün:

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