我正在寻找关于“ecdh_tmp_cb”回调以及它如何使用的信息?我已经足够搜索,但没有得到任何信息。有人能解释一下“ecdh_tmp_cb”回调的用法吗?
回答
有人可以帮助提供有关“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
,因为它几乎无处不在。有安全意识的野心勃勃的人会使用secp521r1
。 secp384r1
是一个有点奇怪的曲线选择,有时会出现。另请参阅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_client
和s_server
。你可以在<openssl src>/apps/
目录中找到它们。源文件[不出意外]命名为s_client.c
和s_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
- 1. PHP引用,奇怪的现象,有人能解释一下吗?
- 2. 有人可以解释一下吗?
- 3. 有人能解释一下这些ApacheBench结果的含义吗?
- 4. 有人能解释一下这个程序的工作吗?
- 5. 有人能解释一下这个node.js代码的含义吗?
- 6. 有人能解释一下EmberJS Fastboot的特别之处吗?
- 7. 有人能解释一下去年的reddit漏洞吗?
- 8. CSS box-shadow:有人能解释一下Bootstrap中使用的简短语法吗?
- 9. 有人能解释一下这意味着什么吗?
- 10. 有人可以解释一下com.google.inject的用途吗?
- 11. 有人能解释矩阵(Mr.Anderson)吗?
- 12. 有人可以解释我的回调函数吗?
- 13. 有人能解释一下这个休眠方法呢,
- 14. 可能有人向我解释下面的os.fork()例子吗?
- 15. 有人能解释我下面的例子吗?
- 16. 有人可以解释Backbone调度程序的功能吗?
- 17. 有人能解释一下xml:lang属性在HTML5中的作用吗?
- 18. 有什么区别?你能解释一下这个语法吗?
- 19. 回调&params.require - 有人可以向我解释这些吗?
- 20. 有人可以解释吗?
- 21. 你能解释一下这个类的方法是如何被调用的吗?
- 22. 有人可以解释这一点吗?
- 23. 有人解释一些代码吗?
- 24. 你能解释一下这段代码吗? (联系人列表)
- 25. 有人可以解释一下Java中的Function对象吗?
- 26. 有人可以解释下面的一段代码吗?
- 27. 有人可以解释一下Google的主页JS吗?
- 28. 有人能解释一下使用Python-dotenv模块
- 29. 你能解释一下Azure订阅吗?
- 30. 你能解释一下这个System.Collections.Generic.KeyNotFoundException吗?
你在哪里看到'ecdhe_tmp_cb'?它不出现在OpenSSL源代码中的任何地方。 – vcsjones
@vcsjones:我误以为是“ecdh_tmp_cb”。 –