翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS SDK for C++ でのカスタム libcrypto ライブラリの使用
デフォルトでは、AWS SDK for C++ は Transport Layer Security (TLS) にシステムの既定暗号化ライブラリを使用します。ただし SDK for C++ では、ソースから SDK をビルドする際に、オプションで別の libcrypto ライブラリを使用するように設定できます。これは、すべての暗号化オペレーションが OpenSSL のカスタム実装に置き換えられることを意味します。例えば、AWS-LC
SDK for C++ にカスタム libcrypto を組み込む方法
ステップ 1: libcrypto ライブラリをビルドまたは入手する
AWS-LC
SDK for C++ とそれに依存する CRT はどちらも libcrypto を暗号化処理に使用するため、依存関係も同様に扱う必要があります。SDK for C++ では、リクエストが SDK の CRT
S3 機能を使用するかどうかに応じて、2 種類の HTTP クライアントのいずれかに依存します。CRT は特に s2nS2N_USE_CRYPTO_SHARED_LIBS
例えば、libcrypto ライブラリとして AWS-LC を使用するには、次のようにビルドします。
git clone --depth 1 -b fips-2022-11-02 https://github.com/aws/aws-lc && \ cd aws-lc && \ mkdir build && \ cd build && \ cmake -G Ninja \ -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_INSTALL_PREFIX=/lc-install .. && \ cmake --build . && \ cmake --install . && \ rm -rf ./* && \ cmake -G Ninja \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_INSTALL_PREFIX=/lc-install .. && \ cmake --build . && \ cmake --install .
ステップ 2: curl をソースからビルドするか、libcrypto ライブラリを組み込んだ curl ディストリビューションを使用する
SDK for C++ を使用するには、HTTP リクエストを行うための HTTP クライアントがシステムにインストールされている必要があります。HTTP クライアントは、使用予定の libcrypto を組み込んでビルドする必要があります。HTTP クライアントは TLS オペレーションを担当するため、libcrypto ライブラリを使用します。
次の例では、インストール済みの AWS-LC を使用して curl ライブラリを再ビルドします。
git clone --depth 1 -b curl-8_5_0 https://github.com/curl/curl && \ cd curl && \ autoreconf -fi && \ mkdir build && \ cd build && \ ../configure \ --enable-warnings \ --enable-werror \ --with-openssl=/lc-install \ --prefix=/curl-install && \ make && \ make install
ステップ 3: libcrypto ライブラリと curl ライブラリを使用して SDK をビルドする
これで、先ほど作成した libcrypto アーティファクトと curl アーティファクトを使用して SDK for C++ をビルドできるようになりました。SDK のこのビルドでは、すべての暗号化機能にカスタム libcrypto ライブラリを使用します。
git clone --depth 1 --recurse-submodules https://github.com/aws/aws-sdk-cpp \ cd aws-sdk-cpp && \ mkdir build && \ cd build && \ cmake -G Ninja \ -DCMAKE_PREFIX_PATH="/curl-install;/lc-install;" \ -DBUILD_ONLY="s3" \ -DCMAKE_INSTALL_PREFIX=/sdk-install \ -DAUTORUN_UNIT_TESTS=OFF .. && \ cmake --build . && \ cmake --install .
すべてのステップを Docker イメージにまとめる
次のサンプル Docker ファイルは、Amazon Linux 2023 環境でこれらのステップを実装する方法を示しています。
# User AL2023 Base image FROM public.ecr.aws/amazonlinux/amazonlinux:2023 # Install Dev Tools RUN yum groupinstall -y "Development Tools" RUN yum install -y cmake3 ninja-build # Build and install AWS-LC on the fips branch both statically and dynamically. RUN git clone --depth 1 -b fips-2022-11-02 https://github.com/aws/aws-lc && \\ cd aws-lc && \\ mkdir build && \\ cd build && \\ cmake -G Ninja \\ -DCMAKE_INSTALL_LIBDIR=lib \\ -DCMAKE_INSTALL_PREFIX=/lc-install .. && \\ cmake --build . && \\ cmake --install . && \\ rm -rf ./* && \\ cmake -G Ninja \\ -DBUILD_SHARED_LIBS=ON \\ -DCMAKE_INSTALL_LIBDIR=lib \\ -DCMAKE_INSTALL_PREFIX=/lc-install .. && \\ cmake --build . && \\ cmake --install . # Build and install curl targeting AWS-LC as openssl RUN git clone --depth 1 -b curl-8_5_0 https://github.com/curl/curl && \\ cd curl && \\ autoreconf -fi && \\ mkdir build && \\ cd build && \\ ../configure \\ --enable-warnings \\ --enable-werror \\ --with-openssl=/lc-install \\ --prefix=/curl-install && \\ make && \\ make install # Build and install SDK using the Curl and AWS-LC targets previously built RUN git clone --depth 1 --recurse-submodules https://github.com/aws/aws-sdk-cpp \\ cd aws-sdk-cpp && \\ mkdir build && \\ cd build && \\ cmake -G Ninja \\ -DCMAKE_PREFIX_PATH="/curl-install;/lc-install;" \\ -DBUILD_ONLY="s3" \\ -DCMAKE_INSTALL_PREFIX=/sdk-install \\ -DAUTORUN_UNIT_TESTS=OFF .. && \\ cmake --build . && \\ cmake --install .