第23章 セキュリティー
OpenSSL
のランタイムバージョンがマスクされているため、アプリケーションが OpenSSL
1.0.0 で実行する際、 SSL_OP_NO_TLSv1_1
を使用してはならない
一部のアプリケーションでは
OpenSSL
のバージョンチェックが適切に実行されないため、実際のランタイムバージョンの OpenSSL
がマスクされ、代わりにビルド時のバージョンが報告されます。このため SSLeay()
関数を使用して、現在実行中の OpenSSL
のバージョンを検出することができません。
さらに、
OpenSSL
1.0.0 で実行しているときに、OpenSSL
1.0.1 の SSL_OP_NO_TLSv1_1
オプションと同じ値を SSL_CTX_set_options()
関数に渡すと、SSL/TLS のサポートが完全になくなります。
この問題を回避するには、別の方法で、現在実行している
OpenSSL
バージョンを検出します。たとえば、SSL_get_ciphers()
関数で有効な暗号の一覧を取得し、SSL_CIPHER_description()
関数を使用してその一覧を解析して、TLS
1.2 の暗号を検索します。TLS
1.2 がサポートされるのはバージョン 1.0.1 以降であるため、これにより、OpenSSL
のバージョンが 1.0.0 以降のものを使用して実行しているアプリケーションが示されます。(BZ#1497859)