【发布时间】:2015-05-19 07:34:17
【问题描述】:
我是安全和 OpenSSL 方面的初学者。我的目标是以编程方式生成一个通过 Chrome 所做的“过时”羞辱的证书。即使我尝试将密码列表设置为kEECDH:kEDH:!ADH:AES256-SHA256 并且服务器上下文使用SSL_CTX_new(TLSv1_2_server_method());,我用来生成的证书也使用了AES_128_GCM 和RSA。
基于the documentation 的示例,我尝试了以下方法:
X509 *x = NULL;
EVP_PKEY *pk = NULL;
EVP_PKEY_CTX *ctx = NULL;
EVP_PKEY *params = NULL;
if(NULL == (params = EVP_PKEY_new()))
goto err;
if(1 != EVP_PKEY_set1_DH(params, DH_get_2048_256()))
goto err;
if(!(ctx = EVP_PKEY_CTX_new(params, NULL)))
goto err;
if(!EVP_PKEY_keygen_init(ctx))
goto err;
if(!EVP_PKEY_keygen(ctx, &pk))
goto err;
if ((x=X509_new()) == NULL)
goto err;
X509_set_version(x,2);
X509_set_pubkey(x,pk);
//... (setting the issuer, subject, etc)
//Here is where it fails
if (!X509_sign(x,pk,EVP_sha256()))
goto err;
RSA 而不是DH 的代码相同。 X509_sign 给出的错误是 EVP_PKEY_sign_init operation not supported for this keytype。
我能做什么?我希望连接使用ECDHE,但我不知道如何设置它。我需要在合理范围内确保安全,但我对安全性的了解确实有限。我正在努力。任何帮助将不胜感激,但请提供您的答案代码(不是命令行生成)。
【问题讨论】:
-
相关,Obsolete cryptography warning from Browser。其中一个答案解释了您可能会收到的警告。