【发布时间】:2014-07-05 18:08:14
【问题描述】:
按照一个非常过时的教程,我设法使用带有 TLS1.2 的 OpenSSL 创建了一个 HTTPS 服务器,我为此感到非常自豪;)
但是 TLS 1.2 仅在最新的浏览器中受支持,我希望在客户端和服务器之间进行某种协议协商,我确信可以完成,但我无法找到如何!因此,如果客户端仅支持 TLS1.0,请使用它。如果它只支持 SSLv3,请使用它。不确定 SSLv2,也许最好不要再说了……
我现在使用的代码是:
SSL_library_init();
OpenSSL_add_all_algorithms();
SSL_load_error_strings();
ssl_method = TLSv1_2_server_method();
ssl_ctx = SSL_CTX_new(ssl_method);
然后加载服务器证书并在所有连接之间共享ssl_ctx。当客户端被服务器套接字accepted 时,它被封装在一个 SSL 对象中(无论它代表什么):
ssl = SSL_new(ssl_ctx);
SSL_set_fd(ssl, client_socket);
SSL_accept(ssl);
所以我猜想在创建 ssl_ctx 时必须进行一些更改以允许更多方法...有什么想法吗?
提前致谢。
【问题讨论】:
-
“没有像样的、广泛的 OpenSSL 文档......” - 是的,文档有时很糟糕。但是您应该查看来自 OpenSSL wiki 的 SSL/TLS Client。