Wie kann ich kryptografisch überprüfen, ob jemand Eigentümer der Website ist, die er angeblich besitzt?

Wie kann ich kryptografisch überprüfen, ob jemand Eigentümer der Website ist, die er angeblich besitzt?

Genauer gesagt: Kann ich sie dazu bringen, eine Textzeichenfolge mit ihrem privaten x509-Zertifikat zu signieren und diese dann mit dem öffentlichen Zertifikat zu verifizieren, das von der betreffenden Website verwendet wird? Vielleicht könnte ich ihnen ein unsigniertes Zertifikat zum Signieren oder etwas in der Art zur Verfügung stellen.

Dank im Voraus :)

Antwort1

Ja, wie Sie vorgeschlagen haben, könnten Sie ihnen eine Bytefolge senden (in diesem Kontext würden wir es vielleicht als Challenge-Text bezeichnen) und sie diese mit dem privaten SSL/TLS-Schlüssel ihres Servers verschlüsseln und den Geheimtext zurücksenden lassen. Anschließend können Sie ihn verifizieren, indem Sie ihn mit dem öffentlichen Schlüssel von ihrem SSL/TLS-Server-Zertifikat entschlüsseln.

Oder Sie generieren eine Bytefolge, verschlüsseln diese mit dem öffentlichen Schlüssel des Serverzertifikats, senden sie an den Empfänger, lassen sie mit dem privaten Schlüssel des Servers entschlüsseln und erhalten den ursprünglichen Klartext zurück.

Beachten Sie jedoch, dass relativ wenige Leute wissen, wie sie derartige Dinge mit ihrem privaten SSL-Schlüssel tun können. Seien Sie also nicht überrascht, wenn Sie ihnen Schritt-für-Schritt-Anweisungen zum Auffinden ihres privaten Schlüssels und zum Verschlüsseln oder Entschlüsseln Ihrer Challenge geben müssen.

Antwort2

Sie können sich von dieser Domain eine E-Mail senden lassen oder ein Whois durchführen (CLI oder verwenden Siehttps://www.whois.net/) und prüfen Sie, ob deren Kontakt aufgeführt ist, oder lassen Sie sie eine Bestätigungsseite auf ihre Site hochladen. url/yeaIownthis.html mit einem Passwort oder so etwas.

Antwort3

Hier ist eine Methode mit M2Crypto und Python:

f = open(CERT_FILE)
cert_buffer = f.read()
f.close()

from M2Crypto import RSA, X509 
cert = X509.load_cert_string(cert_<wbr>buffer, X509.FORMAT_PEM) 
pub_key = cert.get_pubkey() 
rsa_key = pub_key.get_rsa() 
cipher = rsa_key.public_encrypt('<wbr>plaintext', RSA.pkcs1_padding)

print cipher

ReadRSA = RSA.load_key(KEY_FILE)
try:
    plaintext = ReadRSA.private_decrypt (cipher, RSA.pkcs1_padding)
except:
    print "Error: wrong key?"
    plaintext = ""

print plaintext

Auszug ausDasArtikel.

verwandte Informationen