← Cloudflare SSL/TLS / ssl / origin-configuration / authenticated-origin-pull
Integrace AWS
Tato příručka vás krok za krokem provede nastavením pro jednotlivé hostitele authenticated origin pulls pro zabezpečené připojení k AWS Application Load Balancer pomocí ověření vzájemného TLS ↗.
Než začnete
- Měli byste už mít účet AWS a EC2 ↗ nakonfigurováno.
- Tento návod používá k vygenerování vlastního certifikátu rozhraní příkazového řádku (CLI) a Volání API ke konfiguraci Cloudflare Authenticated Origin Pulls.
- Nejaktuálnější dokumentaci k nastavení AWS najdete v Dokumentace AWS ↗.
1. Vygenerování vlastního certifikátu
- Následujícím příkazem vygenerujte 4096bitový privátní klíč RSA se šifrováním AES-256. Po vyzvání zadejte přístupovou frázi.
openssl genrsa -aes256 -out rootca.key 4096- Vytvořte kořenový certifikát CA. Až budete vyzváni, vyplňte informace, které se mají do certifikátu zahrnout. U pole
Common Namepole použijte jako hodnotu název domény, nikoli hostname.
openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1826 -out rootca.crt- Vytvořte žádost o podpis certifikátu (CSR). Až budete vyzváni, vyplňte informace, které se mají do žádosti zahrnout. U pole
Common Namepole použijte jako hodnotu hostname.
openssl req -new -nodes -out cert.csr -newkey rsa:4096 -keyout cert.key- Podepište certifikát pomocí
rootca.keyarootca.crtvytvořený v předchozích krocích.
openssl x509 -req -in cert.csr -CA rootca.crt -CAkey rootca.key -CAcreateserial -out cert.crt -days 730 -sha256 -extfile ./cert.v3.ext- Ujistěte se, že soubor rozšíření certifikátu
cert.v3.exturčuje následující:
basicConstraints=CA:FALSE2. Konfigurace AWS Application Load Balancer
- Nahrajte
rootca.certna Bucket S3 ↗. - Vytvořte úložiště důvěryhodnosti ↗ v konzoli EC2 s uvedením S3 URI kam jste certifikát nahráli.
- Vytvořte instanci EC2 a nainstalujte HTTPD daemon. Vyberte typ instance ↗ podle svých potřeb, může jít o minimální instanci, která má nárok na AWS Free Tier ↗. Tento tutoriál vychází z příkladu, který používá t2.micro a Amazon Linux 2023 ↗.
sudo yum install -y httpd
sudo systemctl start httpd- Vytvořte cílová skupina ↗ pro váš Application Load Balancer.
- Vyberte Instance jako cílový typ.
- Zadejte port
HTTP/80.
- Po dokončení konfigurace cílové skupiny ověřte, že cílová skupina je v pořádku ↗.
- Nakonfigurujte load balancer a listener ↗.
- Vyberte Přístupné z internetu schéma.
- Přepněte listener na port
443aby mTLS možnost je k dispozici, a vyberte cílovou skupinu vytvořenou v předchozích krocích. - Pro Výchozí certifikát serveru SSL/TLS, vyberte Importovat certifikát > Import do ACM, a přidejte soukromý klíč a tělo certifikátu.
- V části Zpracování klientského certifikátu, vyberte Ověření pomocí úložiště důvěryhodných certifikátů.
- Uložte svá nastavení.
- (Volitelné) Spusťte následující příkazy a ověřte, že Application Load Balancing vyžaduje klientský certifikát.
openssl s_client -verify 5 -connect <your-application-load-balancer>:443 -quiet -stateJelikož jste certifikát ještě nenahráli do Cloudflare, připojení by mělo selhat (read:errno=54, například).
Můžete také spustit curl --verbose a potvrďte Request CERT (13) je přítomen v rámci handshake SSL/TLS:
curl --verbose https://<your-application-load-balancer>
...
* TLSv1.2 (IN), TLS handshake, Request CERT (13):
...3. Nakonfigurujte Cloudflare
- Nahrání certifikátu který jste vytvořili v Krok 1 na Cloudflare. Měli byste použít listový certifikát, nikoli kořenovou CA.
MYCERT="$(cat cert.crt|perl -pe 's/\r?\n/\\n/'|sed -e 's/..$//')"
MYKEY="$(cat cert.key|perl -pe 's/\r?\n/\\n/'|sed -e's/..$//')"
request_body=$(< <(cat <<EOF
{
"certificate": "$MYCERT",
"private_key": "$MYKEY",
"bundle_method":"ubiquitous"
}
EOF
))
# Push the certificate
curl --silent \
"https://api.cloudflare.com/client/v4/zones/$ZONEID/origin_tls_client_auth/hostnames/certificates" \
--header "Content-Type: application/json" \
--header "X-Auth-Email: $MYAUTHEMAIL" \
--header "X-Auth-Key: $MYAUTHKEY" \
--data "$request_body"- Přiřaďte certifikát k hostitelskému názvu které by ho měly používat.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:SSL and Certificates Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/origin_tls_client_auth/hostnames" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"config": [
{
"enabled": true,
"cert_id": "<CERT_ID>",
"hostname": "<YOUR_HOSTNAME>"
}
]
}'Vrácení konfigurace Cloudflare
-
Použijte
PUTpožadavek a vypněte Authenticated Origin Pulls pro daný hostname.
Alespoň jeden z následujících oprávnění tokenu je povinné:Požadovaná oprávnění API tokenu
SSL and Certificates Write
Enable or Disable a Hostname for Client Authenticationcurl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/origin_tls_client_auth/hostnames" \ --request PUT \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "config": [ { "enabled": false, "cert_id": "<CERT_ID>", "hostname": "<YOUR_HOSTNAME>" } ] }' -
(Volitelné) Použijte
GETpožadavek a získejte seznam ID klientských certifikátů. V dalším kroku budete potřebovat ID certifikátu, který chcete odebrat.
Alespoň jeden z následujících oprávnění tokenu je povinné:Požadovaná oprávnění API tokenu
SSL and Certificates WriteSSL and Certificates Read
Zobrazit certifikátycurl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/origin_tls_client_auth/hostnames/certificates" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" -
Použijte Odstranění klientského certifikátu hostname endpoint pro odstranění certifikátu, který jste nahráli.
Alespoň jeden z následujících oprávnění tokenu je povinné:Požadovaná oprávnění API tokenu
SSL and Certificates Write
Odstranění klientského certifikátu hostnamecurl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/origin_tls_client_auth/hostnames/certificates/$CERTIFICATE_ID" \ --request DELETE \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"