このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。
カーネル・コマンドラインでfips=1
エントリを指定すると、/proc/sys/crypto/fips_enabled
の値が1に設定され、OpenSSLライブラリ・モジュールによって自動的にFIPS承認操作モードが初期化されます。 自動初期化を処理するには、モジュールを使用するアプリケーションで次のいずれかのルーチンをコールする必要があります。
-
void OPENSSL_add_all_algorithms(void)
OPENSSL_init()
を暗黙的にコールして、すべての承認済アルゴリズムをFIPS承認モードでEVP APIに追加します。-
void OPENSSL_init_library(void)
ライブラリの基本初期化を実行して、サポートされているアルゴリズムをEVP APIに設定せずに、FIPS承認モードを初期化します。
-
void SSL_library_init(void)
OPENSSL_init()
を暗黙的にコールして、TLSプロトコルのサポートに必要なアルゴリズムを追加して、SSLライブラリを初期化します。
ライブラリを明示的にFIPS承認モードに設定するには、アプリケーションでint FIPS_mode_set(int
関数をコールできます。 on
)on
の値が1に設定されている場合、ライブラリは非承認モードから承認モードに切り替わります。 セルフ・テストや整合性の検証テストに失敗すると、ライブラリはエラー状態になり、関数から0が返されます。 テストに成功すると、関数は1を返します。 on
の値が0に設定されている場合、ライブラリは非承認モードに切り替わります。 または、次のように、アプリケーションでOPENSSL_conf(const char *
をコールし、標準構成ファイル(config_name
)openssl.conf
)でconfig_name
エントリに定義されているalg_section
を読み取ることにより、FIPSモードを有効にすることも可能です。
[ config_name
]
alg_section = algsec
...
[ algsec ]
fips_mode = yes
OPENSSL_config()
は値を返しません。 構成に問題がある場合、関数は標準エラーにメッセージを書き込んで、アプリケーションを強制終了します。 より適切にエラーを制御するには、かわりにCONF_modules_load_file()
関数をコールできます。
アプリケーションでは次の関数を使用して、OpenSSLライブラリ・モジュールに問い合せることができます。
-
int FIPS_mode(void)
モジュールがFIPS承認モードの場合は1を返し、それ以外は0を返します。
-
int FIPS_selftest_failed(void)
モジュールがエラー状態の場合は1を返し、それ以外は0を返します。
FIPS乱数ジェネレータのキーと内部状態をゼロ(0)に設定するには、アプリケーションでvoid RAND_cleanup(void)
関数をコールできます。
OPENSSL_FIPS
環境変数の値を1に設定すると、openssl-fips-1.0.1*
パッケージに含まれている、FIPS対応のOpenSSLライブラリを使用してビルドされたopensslバイナリでは、FIPS 140-2承認済アルゴリズムのみが使用されます。 OPENSSL_FIPS
の値は、システムのFIPSモードには影響しません。 OPENSSL_FIPS
の値がFIPS対応のOpenSSLライブラリを使用する他のアプリケーションに影響を与えることは想定しないでください。
FIPSでのOpenSSLライブラリの使用の詳細は、https://www.openssl.org/docs/fips/UserGuide-2.0.pdfを参照してください。