¿Cómo puedo verificar criptográficamente que alguien es propietario del sitio web que afirma tener?

¿Cómo puedo verificar criptográficamente que alguien es propietario del sitio web que afirma tener?

Más específicamente, ¿puedo hacer que firmen una cadena de texto con su certificado privado x509 y luego puedo verificarlo utilizando el certificado público utilizado por el sitio web en cuestión? Quizás podría proporcionarles un certificado sin firmar para que lo firmen o algo por el estilo.

Gracias de antemano :)

Respuesta1

Sí, como sugirió, podría enviarles una cadena de bytes (en este contexto podríamos llamarlo texto de desafío) y hacer que lo cifren con la clave privada SSL/TLS de su servidor y devolver el texto cifrado, luego podrá verificarlo. descifrándolo con la clave pública de su certificado de servidor SSL/TLS.

O puede generar una cadena de bytes, cifrarla con la clave pública del certificado de su servidor, enviársela, hacer que la descifren con la clave privada de su servidor y pedirle que le envíe el texto sin formato original.

Sin embargo, tenga en cuenta que relativamente pocas personas saben cómo hacer este tipo de cosas con su clave privada SSL, así que no se sorprenda si tiene que proporcionarles instrucciones paso a paso para encontrar su clave privada y cifrar o descifrar su clave privada. desafío.

Respuesta2

Puedes hacer que te envíen un correo electrónico desde ese dominio o hacer un whois (CLI o usarhttps://www.whois.net/) y vea si su contacto aparece en la lista, o puede pedirle que cargue una página de verificación en su sitio. url/yeaIownthis.html con alguna contraseña o algo así.

Respuesta3

Aquí hay un método que usa M2Crypto y 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

Extracto tomado deesteartículo.

información relacionada