2016-08-26 22 views

回答

1

有人可以帮助提供有关“ecdhe_tmp_cb”回调的使用情况以及它如何使用的信息?

我相信一些功能被添加到1.0.2并在1.1.0删除。由于对模量大小的预测(IIRC),常规回调是不合适的,因此它们以1.0.2作为带帮助添加。它们在1.1.0版本中被删除,因为图书馆的界面可能会变化得足以提供所需的内容。

我似乎记得这两个功能(从ssl.h)将在假值发送的keylength

#ifndef OPENSSL_NO_ECDH 
void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, 
         EC_KEY *(*ecdh)(SSL *ssl,int is_export, 
           int keylength)); 
void SSL_set_tmp_ecdh_callback(SSL *ssl, 
         EC_KEY *(*ecdh)(SSL *ssl,int is_export, 
           int keylength)); 
#endif 

keylength是一种将需要什么来确定字段(种)。但是没有办法区分,比如说素数或二元曲线。

你真正需要的回调是商定的曲线。或者您需要在服务器选择曲线之前挂钩该过程,以便可以影响选择。据我所知,流程流程和信息从来都不可用。

人们以前在1.0.1中所做的只是使用secp256r1,因为它几乎无处不在。有安全意识的野心勃勃的人会使用secp521r1secp384r1是一个有点奇怪的曲线选择,有时会出现。另请参阅InfoSec.SE上的Which elliptic curve should I use?

一旦您选择了曲线,如secp256r1,您生成的临时值就是该字段中的临时密钥对。您可以在每个连接上生成一个新值;你可以每小时产生一次这个值;你可以每天产生一次价值;等等。如果您始终使用相同的值,则它实际上是一个静态键。

Change Log在第515行的状态类似。如果向上滚动,则会看到它适用于1.1.0及更高版本。 (声明“1.0.2h和1.1.0之间的变化”表示它适用于1.1.0,而不是1.0.2i和更高)。

  • SSL_ {} CTX_ set_ecdh_auto()已被删除,ECDH是支持 现在总是启用。如果您想禁用支持,您应该使用支持的密码列表 将其排除。这也意味着 “-no_ecdhe”选项已从s_server中删除。
    [库尔特Roeckx]

  • SSL_ {CTX} _set_tmp_ecdh(),其可以设置1条EC曲线现在在内部 呼叫
    SSL_ {CTX_} set1_curves(),其可以设置一个列表。
    [Kurt Roeckx]

  • 删除对SSL_ {CTX_} set_tmp_ecdh_callback()的支持。您应该使用SSL_ {CTX_} set1_curves()设置您想支持的 曲线 。
    [库尔特Roeckx]

更改日志还规定1.1.0用途:

  • 更改默认ECC曲线列表是这个,依次是:x25519,secp256r1, secp521r1,secp384r1。
    [里奇·萨尔茨]

我已搜查不够好,但没有得到任何信息

通常,当您发现某些记录不完整的东西时,您希望查看OpenSSL源。要查看的来源是s_clients_server。你可以在<openssl src>/apps/目录中找到它们。源文件[不出意外]命名为s_client.cs_server.c

从下面的搜索,ssl/ssl_conf.c也看起来像一个有趣的命中。下面的*.pod文件是手册页的来源。如果在文件上有一个命中,那么你知道你可以输入,比如man SSL_CTX_set_tmp_dh_callback,并获得该函数的手册页。

$ grep -IR _set_tmp_ * 
CHANGES: *) SSL_{CTX}_set_tmp_ecdh() which can set 1 EC curve now internally calls 
CHANGES:  'default key' from SSL_CTX_set_tmp_dh would always be lost, meaning 
CHANGES:  are in detail: SSL_need_tmp_RSA, SSL_set_tmp_rsa, SSL_set_tmp_dh, 
CHANGES:  SSL_set_tmp_rsa_callback and SSL_set_tmp_dh_callback. Additionally a new 
CHANGES:  SSL_CTX_set_tmp_{rsa,dh}_callback(). 
apps/s_server.c:  else if (!SSL_CTX_set_tmp_dh(ctx, dh)) { 
apps/s_server.c:   else if (!SSL_CTX_set_tmp_dh(ctx2, dh)) { 
doc/ssl/ssl.pod:=item long B<SSL_CTX_set_tmp_dh>(SSL_CTX* ctx, DH *dh); 
doc/ssl/ssl.pod:=item long B<SSL_CTX_set_tmp_dh_callback>(SSL_CTX *ctx, DH *(*cb)(void)); 
doc/ssl/ssl.pod:L<SSL_CTX_set_tmp_dh_callback(3)>, 
doc/ssl/SSL_CTX_set_cipher_list.pod:(see L<SSL_CTX_set_tmp_dh_callback(3)>). 
doc/ssl/SSL_CTX_set_cipher_list.pod:(see L<SSL_CTX_set_tmp_dh_callback(3)>). 
doc/ssl/SSL_CTX_set_cipher_list.pod:L<SSL_CTX_set_tmp_dh_callback(3)>, 
doc/ssl/SSL_CTX_set_options.pod:(see L<SSL_CTX_set_tmp_dh_callback(3)>). 
doc/ssl/SSL_CTX_set_options.pod:L<SSL_CTX_set_tmp_dh_callback(3)>, 
doc/ssl/SSL_CTX_set_tmp_dh_callback.pod:SSL_CTX_set_tmp_dh_callback, SSL_CTX_set_tmp_dh, SSL_set_tmp_dh_callback, SSL_set_tmp_dh - handle DH keys for ephemeral key exchange 
doc/ssl/SSL_CTX_set_tmp_dh_callback.pod: void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, 
doc/ssl/SSL_CTX_set_tmp_dh_callback.pod: long SSL_CTX_set_tmp_dh(SSL_CTX *ctx, DH *dh); 
doc/ssl/SSL_CTX_set_tmp_dh_callback.pod: void SSL_set_tmp_dh_callback(SSL *ctx, 
doc/ssl/SSL_CTX_set_tmp_dh_callback.pod: long SSL_set_tmp_dh(SSL *ssl, DH *dh) 
doc/ssl/SSL_CTX_set_tmp_dh_callback.pod:SSL_CTX_set_tmp_dh_callback() sets the callback function for B<ctx> to be 
doc/ssl/SSL_CTX_set_tmp_dh_callback.pod:SSL_CTX_set_tmp_dh() sets DH parameters to be used to be B<dh>. 
doc/ssl/SSL_CTX_set_tmp_dh_callback.pod:SSL_set_tmp_dh_callback() sets the callback only for B<ssl>. 
doc/ssl/SSL_CTX_set_tmp_dh_callback.pod:SSL_set_tmp_dh() sets the parameters only for B<ssl>. 
doc/ssl/SSL_CTX_set_tmp_dh_callback.pod:are advised to either use SSL_CTX_set_tmp_dh() or alternatively, use 
doc/ssl/SSL_CTX_set_tmp_dh_callback.pod: if (SSL_CTX_set_tmp_dh(ctx, dh_2048) != 1) { 
doc/ssl/SSL_CTX_set_tmp_dh_callback.pod:SSL_CTX_set_tmp_dh_callback() and SSL_set_tmp_dh_callback() do not return 
doc/ssl/SSL_CTX_set_tmp_dh_callback.pod:SSL_CTX_set_tmp_dh() and SSL_set_tmp_dh() do return 1 on success and 0 
include/openssl/ssl.h:# define SSL_CTX_set_tmp_dh(ctx,dh) \ 
include/openssl/ssl.h:# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ 
include/openssl/ssl.h:# define SSL_set_tmp_dh(ssl,dh) \ 
include/openssl/ssl.h:# define SSL_set_tmp_ecdh(ssl,ecdh) \ 
include/openssl/ssl.h:# define SSL_CTX_set_tmp_rsa(ctx,rsa)    1 
include/openssl/ssl.h:# define SSL_set_tmp_rsa(ssl,rsa)     1 
include/openssl/ssl.h:# define SSL_CTX_set_tmp_rsa_callback(ctx, cb) while(0) (cb)(NULL, 0, 0) 
include/openssl/ssl.h:# define SSL_set_tmp_rsa_callback(ssl, cb)  while(0) (cb)(NULL, 0, 0) 
include/openssl/ssl.h:void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, 
include/openssl/ssl.h:void SSL_set_tmp_dh_callback(SSL *ssl, 
ssl/ssl_conf.c:  rv = SSL_CTX_set_tmp_ecdh(cctx->ctx, ecdh); 
ssl/ssl_conf.c:  rv = SSL_set_tmp_ecdh(cctx->ssl, ecdh); 
ssl/ssl_conf.c:  rv = SSL_CTX_set_tmp_dh(cctx->ctx, dh); 
ssl/ssl_conf.c:  rv = SSL_set_tmp_dh(cctx->ssl, dh); 
ssl/ssl_lib.c:void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, 
ssl/ssl_lib.c:void SSL_set_tmp_dh_callback(SSL *ssl, DH *(*dh) (SSL *ssl, int is_export, 
test/ssltest_old.c:  SSL_CTX_set_tmp_dh(s_ctx, dh); 
test/ssltest_old.c:  SSL_CTX_set_tmp_dh(s_ctx2, dh); 
util/libssl.num:SSL_set_tmp_dh_callback     20 1_1_0 EXIST::FUNCTION:DH 
util/libssl.num:SSL_CTX_set_tmp_dh_callback    156 1_1_0 EXIST::FUNCTION:DH 
相关问题