我如何通过加密方式验证某人是否拥有他们所声称的网站?

我如何通过加密方式验证某人是否拥有他们所声称的网站?

更具体地说,我可以让他们用他们的 x509 私有证书签署一串文本,然后我可以使用相关网站使用的公共证书来验证它吗?也许我可以为他们提供一份未签名的证书让他们签署或类似的东西。

提前致谢 :)

答案1

是的,正如您所建议的,您可以向他们发送一串字节(在这种情况下我们可以称之为挑战文本)并让他们使用其服务器的 SSL/TLS 私钥对其进行加密并发回密文,然后您可以通过使用来自其 SSL/TLS 服务器证书的公钥对其进行解密来验证它。

或者您可以生成一串字节,使用其服务器证书中的公钥对其进行加密,将其发送给他们,让他们使用其服务器的私钥对其进行解密,然后让他们将原始明文发回给您。

但请注意,很少有人知道如何使用他们的 SSL 私钥做这样的事情,所以如果您必须向他们提供查找他们的私钥以及加密或解密您的质询的分步说明,请不要感到惊讶。

答案2

您可以让他们从该域名向您发送电子邮件,或者执行 whois(CLI 或使用https://www.whois.net/) 并查看他们的联系方式是否列出,或者您可以让他们将验证页面上传到他们的网站。url/yeaIownthis.html 上面有一些密码或其他内容。

答案3

以下是使用 M2Crypto 和 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

摘录自文章。

相关内容