CMake: 変数「CMAKE_TLS_VERIFY」でHTTPS通信のセキュリティを強化! ダウンロードとアップロードを安全に
CMAKE_TLS_VERIFY
は、CMake の環境変数であり、file(DOWNLOAD)
と file(UPLOAD)
コマンドの TLS_VERIFY
オプションのデフォルト値を指定します。この変数が設定されていない場合は、CMAKE_TLS_VERIFY
環境変数がチェックされます。どちらも設定されていない場合は、デフォルトは OFF
となります。
TLS 検証とは
TLS 検証は、HTTPS などの暗号化された接続で、クライアントがサーバーとの接続を確立する際に、サーバーの証明書の有効性を検証するプロセスです。これは、サーバーが本物であり、なりすましではないことを確認するために重要です。
CMAKE_TLS_VERIFY
の設定
CMAKE_TLS_VERIFY
は、次のいずれかの方法で設定できます。
- 環境変数として設定:
CMAKE_TLS_VERIFY=ON
またはCMAKE_TLS_VERIFY=OFF
- CMakeLists.txt ファイルで設定:
set(CMAKE_TLS_VERIFY ON)
またはset(CMAKE_TLS_VERIFY OFF)
- CMake コマンドラインで設定:
-DCMAKE_TLS_VERIFY=ON
または-DCMAKE_TLS_VERIFY=OFF
例
次の例では、CMAKE_TLS_VERIFY
を ON
に設定し、すべての file(DOWNLOAD)
コマンドで TLS 検証を有効にします。
set(CMAKE_TLS_VERIFY ON)
注意事項
- TLS 検証を無効にする必要がある場合は、慎重に検討する必要があります。
- TLS 検証を無効にすることは、セキュリティ上のリスクを伴います。
CMAKE_TLS_VERIFY
は、CMake バージョン 3.30 以降でのみ使用できます。
CMAKE_TLS_VERIFY
は、TLS 検証をグローバルに設定する方法を提供します。特定の file(DOWNLOAD)
または file(UPLOAD)
コマンドに対して TLS 検証を制御したい場合は、TLS_VERIFY
オプションを直接使用できます。
例 1: CMake コマンドラインで設定
cmake -DCMAKE_TLS_VERIFY=ON .
このコマンドは、現在のディレクトリ (.
) をビルドディレクトリとして設定し、CMAKE_TLS_VERIFY
を ON
に設定します。これにより、すべての file(DOWNLOAD)
コマンドで TLS 検証が有効になります。
例 2: CMakeLists.txt ファイルで設定
cmake_minimum_required(VERSION 3.30)
set(CMAKE_TLS_VERIFY ON)
project(MyProject)
file(DOWNLOAD "https://example.com/file.zip" DESTINATION "downloads")
この CMakeLists.txt ファイルは、MyProject
という名前のプロジェクトを作成し、https://example.com/file.zip
から downloads
ディレクトリにファイルをダウンロードします。CMAKE_TLS_VERIFY
が ON
に設定されているため、このダウンロード操作では TLS 検証が有効になります。
例 3: 環境変数として設定
CMAKE_TLS_VERIFY=ON cmake .
このコマンドは、CMAKE_TLS_VERIFY
環境変数を ON
に設定してから、現在のディレクトリ (.
) をビルドディレクトリとして設定します。これにより、すべての file(DOWNLOAD)
コマンドで TLS 検証が有効になります。
例 4: 特定の file(DOWNLOAD)
コマンドに対して TLS 検証を制御
cmake_minimum_required(VERSION 3.30)
set(CMAKE_TLS_VERIFY OFF)
project(MyProject)
file(DOWNLOAD "https://example.com/file.zip" DESTINATION "downloads" TLS_VERIFY ON)
この CMakeLists.txt ファイルは、MyProject
という名前のプロジェクトを作成し、https://example.com/file.zip
から downloads
ディレクトリにファイルをダウンロードします。CMAKE_TLS_VERIFY
は OFF
に設定されていますが、file(DOWNLOAD)
コマンドには TLS_VERIFY
オプションが ON
に設定されているため、このダウンロード操作では TLS 検証が有効になります。
これらの例は、CMAKE_TLS_VERIFY
を使用して TLS 検証を制御する方法をいくつか示しています。
- カスタムの TLS 検証ロジックを実装する
- 特定の CA (認証局) を使用する
- 特定のホスト名に対して TLS 検証を無効にする
これらの詳細については、CMake ドキュメントを参照してください。
- TLS 検証を無効にする必要がある場合は、慎重に検討する必要があります。
- TLS 検証を無効にすることは、セキュリティ上のリスクを伴います。
- 上記の例は、説明のみを目的としています。実際のプロジェクトで使用するには、ニーズに合わせて調整する必要があります。
代替方法
CMAKE_TLS_VERIFY
の代替方法はいくつかあります。
TLS_VERIFY
オプションを直接使用する
各 file(DOWNLOAD)
または file(UPLOAD)
コマンドで TLS_VERIFY
オプションを直接使用して、そのコマンドに対する TLS 検証を制御できます。
file(DOWNLOAD "https://example.com/file.zip" DESTINATION "downloads" TLS_VERIFY ON)
この例では、https://example.com/file.zip
から downloads
ディレクトリにファイルをダウンロードし、このダウンロード操作で TLS 検証を有効にします。
CMAKE_ARGS
を使用する
CMAKE_ARGS
変数を使用して、file(DOWNLOAD)
または file(UPLOAD)
コマンドに渡されるコマンドライン引数に追加の引数を指定できます。この方法を使用して、TLS_VERIFY
オプションを指定できます。
set(CMAKE_ARGS "${CMAKE_ARGS} -DCMAKE_TLS_VERIFY=ON")
file(DOWNLOAD "https://example.com/file.zip" DESTINATION "downloads")
この例では、-DCMAKE_TLS_VERIFY=ON
引数を CMAKE_ARGS
に追加し、すべての file(DOWNLOAD)
コマンドで TLS 検証を有効にします。
ExternalProject_Add
を使用する
ExternalProject_Add
モジュールを使用して、外部プロジェクトをビルドする場合、TLS_VERIFY
オプションを指定するオプションがあります。
ExternalProject_Add(MyProject
SOURCE_DIR https://example.com/MyProject
DOWNLOAD_COMMAND ${CMAKE_BINARY_DIR}/cmake --download
BUILD_COMMAND ${CMAKE_BINARY_DIR}/cmake --build
INSTALL_COMMAND ${CMAKE_BINARY_DIR}/cmake --install
TLS_VERIFY ON
)
この例では、https://example.com/MyProject
から MyProject
という名前の外部プロジェクトをビルドし、このプロジェクトのダウンロードとビルド中に TLS 検証を有効にします。
- TLS 検証を無効にする必要がある場合は、慎重に検討する必要があります。
- TLS 検証を無効にすることは、セキュリティ上のリスクを伴います。
- 使用する代替方法は、ニーズと要件によって異なります。
- 上記の代替方法は、互いに排他的ではありません。