As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usar uma biblioteca libcrypto personalizada no AWS SDK para C++
Normalmente, o AWS SDK para C++ usa a biblioteca criptográfica padrão do sistema para TLS. No entanto, o SDK para C++ pode ser configurado para usar uma biblioteca libcrypto diferente na criação do SDK por meio da fonte. Essa funcionalmente significa que todas as operações criptográficas serão desviadas para uma implementação personalizada do OpenSSL. Por exemplo, talvez você queira usar a biblioteca AWS-LC
Como compilar uma libcrypto personalizada no SDK para C++
Etapa 1: compilar ou acessar sua biblioteca libcrypto
O AWS-LC
O SDK para C++ e sua dependência, o CRT, usam libcrypto para as respectivas funções criptográficas e precisam lidar com dependências da mesma forma. O SDK para C++ depende de dois clientes HTTP diferentes, dependendo se a solicitação usa a funcionalidade CRT
S3 do SDK. O CRT depende especificamente do s2nS2N_USE_CRYPTO_SHARED_LIBS
Por exemplo, para usar o AWS-LC como biblioteca libcrypto, você a compilaria da seguinte forma:
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 .
Etapa 2: criar o curl por meio da fonte ou usar uma distribuição do curl com sua biblioteca libcrypto
O SDK para C++ exige que um cliente HTTP esteja instalado no sistema que será usado para fazer solicitações HTTP. O cliente HTTP deve ser compilado com a libcrypto que você pretende usar. O cliente HTTP é responsável pelas operações de TLS e, portanto, usa sua biblioteca libcrypto.
No exemplo a seguir, a biblioteca curl é recompilada usando uma versão instalada do AWS-LC.
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
Etapa 3: compilar o SDK usando as bibliotecas libcrypto e curl
O SDK para C++ agora pode ser compilado usando os artefatos libcrypto e curl criados anteriormente. Essa compilação do SDK usará a biblioteca libcrypto personalizada para todas as funcionalidades criptográficas.
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 .
Reunir tudo em uma imagem do docker
O exemplo de arquivo Docker a seguir mostra como implementar essas etapas no ambiente 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 .