不了解OpenSSL_add_all_algorithms方法

Jac*_*ieg 9 ssl openssl

文件说

OpenSSL保留了摘要算法和密码的内部表.它使用此表通过EVP_get_cipher_byname()等函数查找密码.

OpenSSL_add_all_digests()将所有摘要算法添加到表中.

我的问题是,这个表存放在哪里?我的代码如何知道这个方法已经执行了?...它是如何在内部工作的,如果我想要更多的SSL连接,一个是添加所有摘要而另一个不是?有谁知道这方面的任何好文件?

谢谢

Dan*_*ger 9

手册页的NOTES部分总结了很多:

典型应用程序最初将调用OpenSSL_add_all_algorithms(),并在退出之前调用EVP_cleanup().

密码和摘要查找函数用于库的许多部分.如果表没有初始化,则几个函数会出错,并抱怨他们找不到算法.这包括PEM,PKCS#12,SSL和S/MIME库.这是OpenSSL邮件列表中的常见查询.

因此,假设您正在编写典型应用程序,则将其添加到OpenSSL初始化代码中:

OpenSSL_add_all_algorithms();
Run Code Online (Sandbox Code Playgroud)

这对OpenSSL清理代码:

EVP_cleanup();
Run Code Online (Sandbox Code Playgroud)

你完成了 您始终有责任在使用OpenSSL的应用程序中自行调用它们.如果您想知道OpenSSL如何在内部存储表,请使用源代码Luke.

要控制哪些密码可用于特定SSL上下文,您可以使用SSL_CTX_set_cipher_list.

至于比手册页更好的文档,我可以推荐John Viega,Matt Messier和Pravir Chandra的"OpenSSL网络安全".这本书很旧,并没有涵盖较新版本的OpenSSL,但大部分版本仍然非常适用.