Wie kann ich kryptografisch nachweisen, dass jemand die Website besitzt, die er behauptet?

397
derrend

Kann ich sie insbesondere dazu bringen, eine Zeichenfolge mit ihrem privaten Zertifikat x509 zu signieren, und dann kann ich sie anhand des öffentlichen Zertifikats überprüfen, das von der betreffenden Website verwendet wird? Vielleicht könnte ich ihnen ein nicht unterzeichnetes Zertifikat zur Unterschrift oder etwas Ähnliches liefern.

Danke im Voraus :)

1
Dies würde den Besitz eines privaten Schlüssels, nicht einer Website, bestätigen. Der beste Weg, die Inhaberschaft der Website zu bestätigen, besteht darin, dass sie eine Datei mit dem vereinbarten Inhalt darauf hochladen. Paul vor 8 Jahren 1
Die Person, die Zugriff auf diesen privaten Schlüssel hat, wäre sicherlich der Inhaber der Website, obwohl ich es hoffe :) derrend vor 8 Jahren 0
Die Antwort hängt also von Ihrem Ziel ab. Sie können nicht "kryptografisch bestätigen, dass sie die Website besitzen", da möglicherweise eine andere Person auf den privaten Schlüssel als den Website-Eigentümer zugreifen kann. Der einzige Weg, um zu bestätigen, dass sie die Website selbst besitzen, besteht darin, dass sie eine vereinbarte Änderung vornehmen. Wenn sie eine Datei auf die Website hochladen und Sie über https darauf zugreifen, wird die Datei mit ihrem privaten Schlüssel verschlüsselt und Sie entschlüsseln sie mit ihrem öffentlichen Schlüssel. Es ist derselbe Prozess, als würden sie es von Hand tun. Paul vor 8 Jahren 0
(Ich sollte darauf hinweisen, dass ich die meisten Schritte mit openssl durchgegangen bin, bevor mir klar wurde, dass ich gerade tat, was ein Webserver macht.) Paul vor 8 Jahren 0
Ich verstehe, woher du kommst. Mir ist auch klar, dass ich die gleiche Aktion wie ein Server durchführe. derrend vor 8 Jahren 0

3 Antworten auf die Frage

2
Spiff

Ja, wie Sie vorgeschlagen haben, können Sie ihnen eine Zeichenfolge von Bytes senden (in diesem Zusammenhang nennen wir sie möglicherweise einen Aufforderungstext) und lassen Sie sie mit dem privaten SSL / TLS-Schlüssel ihres Servers verschlüsseln und den Chiffretext zurückschicken durch Entschlüsseln mit dem öffentlichen Schlüssel von ihrem SSL / TLS-Serverzertifikat.

Oder Sie können eine Bytefolge generieren, sie mit dem öffentlichen Schlüssel ihres Serverzertifikats verschlüsseln, an sie senden, sie mit dem privaten Schlüssel ihres Servers entschlüsseln lassen und Ihnen den ursprünglichen Klartext zurücksenden.

Beachten Sie jedoch, dass relativ wenige Benutzer wissen, wie sie mit ihrem privaten SSL-Schlüssel so etwas tun können. Seien Sie also nicht überrascht, wenn Sie Schritt-für-Schritt-Anweisungen erhalten müssen, um ihren privaten Schlüssel zu finden und Ihren Schlüssel zu verschlüsseln oder zu entschlüsseln Herausforderung.

Fantastisch! Wo könnte ich diesen Führer finden, von dem Sie sprechen? lol, ich muss das lernen :) derrend vor 8 Jahren 0
"man openssl" "man x509" "man rsa" "man enc" haha Spiff vor 8 Jahren 0
lol, verdammt noch mal. :) derrend vor 8 Jahren 0
0
Alex Atkinson

Sie können sich von Ihnen eine E-Mail von dieser Domain senden lassen oder ein Whois (CLI oder https://www.whois.net/ ) verwenden, um zu sehen, ob der Kontakt aufgeführt ist, oder Sie können eine Verifizierungsseite auf ihre Website hochladen Seite? ˅. URL / yeaIownthis.html mit einem Kennwort oder etwas.

Sehr geschätzt, das ist definitiv eine Option, aber wenn es kryptographisch möglich ist, würde ich es sehr bevorzugen. Vielleicht könnte ich ihnen ein nicht unterzeichnetes Zertifikat zur Verfügung stellen, damit sie unterschreiben können? derrend vor 8 Jahren 0
Gib mir ein Szenario. Verstehen Sie, dass die Zertifizierungsstellen (z. B. VeriSign), die Zertifikate ausstellen, eine Menge Beinarbeit leisten, um die Identität der Personen zu gewährleisten, denen Zertifikate ausgestellt werden (erweiterte Validierungszertifikate ohnehin. Domain-Zertifikate sind leicht zu bekommen.) So können Sie dieser Person vertrauen besitzt eine Website, sofern sie zu Ihrer eigenen Zufriedenheit einen Identitätsnachweis erbringt. Sie können ihr Zertifikat nicht validieren, da Sie nicht der Aussteller sind. Alex Atkinson vor 8 Jahren 0
Warum haben sie nicht einfach etwas auf ihre Webseite gestellt? Wenn Sie mit https abrufen, ist es kryptografisch. David Schwartz vor 8 Jahren 0
Hier ist eine gute Erklärung. http://security.stackexchange.com/questions/56389/ssl-certificate-framework-101-how-does-the-browser-actual-verify-the-validity Alex Atkinson vor 8 Jahren 0
Ich versuche, das Skript so zu schreiben, dass ich es nicht manuell tun muss, und eine signierte Zeichenfolge oder Datei schien für den Benutzer die vernünftige Sache zu sein. Ich hatte gehofft, ich könnte wissen, dass sie Zugriff auf die private x.509 hatten, indem sie mit der öffentlichen x.509 verifizieren, die über die Website zugänglich ist, indem Sie openssl oder etwas Ähnliches verwenden. derrend vor 8 Jahren 0
http://giantdorks.org/alain/shell-script-to-check-ssl-certificate-info-like-expiration-date-and-subject/? Alex Atkinson vor 8 Jahren 0
0
derrend

Hier ist eine Methode, die M2Crypto und Python verwendet:

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 aus diesem Artikel.