マニュアルページのNOTESセクションはそれをかなり要約しています:
一般的なアプリケーションは、最初にOpenSSL_add_all_algorithms()を呼び出し、終了する前にEVP_cleanup()を呼び出します。
と
暗号およびダイジェストルックアップ関数は、ライブラリの多くの部分で使用されています。テーブルが初期化されていない場合、いくつかの関数は誤動作し、アルゴリズムが見つからないと文句を言います。これには、PEM、PKCS#12、SSL、およびS/MIMEライブラリが含まれます。これは、OpenSSLメーリングリストで一般的なクエリです。
したがって、一般的なアプリケーションを作成していると仮定して、これをOpenSSL初期化コードに追加します。
OpenSSL_add_all_algorithms();
これをOpenSSLクリーンアップコードに追加します。
EVP_cleanup();
これで完了です。OpenSSLを使用するアプリケーションでは、これらを自分で呼び出す責任が常にあります。OpenSSLがテーブルを内部的に保存する方法を知りたい場合は、ソースのLukeを使用してください。
特定のSSLコンテキストで使用できる暗号を制御するには、SSL_CTX_set_cipher_listを使用します。
マニュアルページよりも優れたドキュメントについては、John Viega、Matt Messier、PravirChandraによる「NetworkSecuritywithOpenSSL」をお勧めします。この本は古く、OpenSSLの新しいバージョンをカバーしていませんが、そのほとんどは依然として非常に適用可能です。