【发布时间】:2016-10-27 19:40:07
【问题描述】:
我正在使用 openssl 对客户端和服务器进行测试。在我的测试中,服务器使用一对(证书、密钥)或其他基于参数mode。
void configure_context(SSL_CTX *ctx, int mode)
{
if (mode == 0) {
/* Set the key and cert */
if (SSL_CTX_use_certificate_file(ctx, "./test/certs/testcert2.pem", SSL_FILETYPE_PEM) < 0) {
ERR_print_errors_fp(stderr);
exit(EXIT_FAILURE);
}
if (SSL_CTX_use_PrivateKey_file(ctx, "test2.key", SSL_FILETYPE_PEM) < 0 ) {
ERR_print_errors_fp(stderr);
exit(EXIT_FAILURE);
}
} else {
if (SSL_CTX_use_certificate_file(ctx, "cert.pem", SSL_FILETYPE_PEM) < 0) {
ERR_print_errors_fp(stderr);
exit(EXIT_FAILURE);
}
if (SSL_CTX_use_PrivateKey_file(ctx, "key.pem", SSL_FILETYPE_PEM) < 0 ) {
ERR_print_errors_fp(stderr);
exit(EXIT_FAILURE);
}
}
}
cert.pem 是自签名证书,而 testcert2 使用 CA(我的)密钥签名。
当我使用 cert.pem 时,一切正常,服务器选择密码 TLS_RSA_WITH_AES_128_GCM_SHA256
当我使用 testcert2 时,我在服务器中收到错误“ssl3_get_client_hello:no shared cipher”。
- 服务器中选择的密码是否依赖于证书和密钥?
- 此错误可能是由于与密钥无关的原因造成的吗?
- 如何检查特定密钥可以支持的密码?
提前感谢您的任何回复。
【问题讨论】:
标签: ssl openssl ssl-certificate