기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS SDK for C++에서 사용자 지정 libcrypto 라이브러리 사용
기본적으로는 AWS SDK for C++는 전송 계층 보안을 위해 기본 시스템 암호화 라이브러리를 사용합니다. 그러나 소스에서 SDK를 빌드할 때 다른 libcrypto 라이브러리를 사용하도록 선택적으로 SDK for C++를 구성할 수 있습니다. 즉, 모든 암호화 작업이 OpenSSL의 사용자 지정 구현으로 전환됩니다. 예를 들어 애플리케이션에서 FIPS 표준을 달성하기 위해 AWS-LC
SDK for C++에 사용자 지정 libcrypto를 빌드하는 방법
1단계: libcrypto 라이브러리 빌드 또는 가져오기
AWS-LC
SDK for C++와 그 종속성인 CRT는 모두 암호화 기능에 libcrypto를 사용하며, 둘 다 동일한 방식으로 종속성을 처리해야 합니다. SDK for C++는 요청이 SDK의 CRT
S3 기능을 사용하는지 여부에 따라 두 가지 다른 HTTP 클라이언트에 의존합니다. 특히 CRT는 시작 시점에 초기화되는 TLS 구현인 s2nS2N_USE_CRYPTO_SHARED_LIBS
예를 들어 AWS-LC를 libcrypto 라이브러리로 사용하려면 다음과 같이 빌드합니다.
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 .