Это было близко, всего несколько маленьких шагов пропущено.Я получил это, работая с ALB ELB.
Сначала я использовал скрипт, аналогичный описанному здесь: https://myopswork.com/how-to-do-end-to-end-encryption-of-data-in-transit-b-w-aws-alb-and-ec2-3b7fd917cddd
#!/bin/bash
DIR=$(dirname $0)
domain=$(uname -n)
echo "Generating SSL for $domain"
commonname="$domain"
country="US"
state="California"
locality="LA"
organization="My Inc."
organizationalunit="Org"
email="my@email.com"
# Optional
password=dummypassword
echo "Generating key request for $domain"
mkdir -p /etc/ssl/private
chmod 700 /etc/ssl/private
mkdir -p /etc/ssl/certs
# Generate a key
openssl genrsa -des3 -passout pass:$password -out /etc/ssl/private/$domain.key 2048 -noout
# Remove passphrase from the key. Comment the line out to keep the passphrase
echo "Removing passphrase from key"
openssl rsa -in /etc/ssl/private/$domain.key -passin pass:$password -out /etc/ssl/private/$domain.key
# Create the request
echo "Creating CSR"
openssl req -new -key /etc/ssl/private/$domain.key -out /etc/ssl/private/$domain.csr -passin pass:$password \
-subj "/C=$country/ST=$state/L=$locality/O=$organization/OU=$organizationalunit/CN=$commonname/emailAddress=$email"
# Create the cert
openssl x509 -req -days 365 -in /etc/ssl/private/$domain.csr -signkey /etc/ssl/private/$domain.key -out /etc/ssl/certs/$domain.crt
# Setup nginx config
sed "s/{{hostname}}/${domain}/" < $DIR/template.conf > /etc/nginx/sites-available/site.conf
ln -sf /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/site.conf
Шаблон выглядел примерно так:
server {
# listen 80 #uncomment to also listen on port 80 - useful for debugging
listen 443 ssl;
listen [::]:443 ssl;
server_name {{hostname}};
ssl_certificate /etc/ssl/certs/{{hostname}}.crt;
ssl_certificate_key /etc/ssl/private/{{hostname}}.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options sameorigin;
add_header X-Content-Type-Options nosniff;
location / {
...
}
}
Домен выглядел примерно так: ip-172-10-11-12
.
Для отладки всего я запустил что-то вроде , следующее - это из памяти, поэтому он может отключить детали.Я начал с того, что убедился, что могу локально свернуть сервер, нажав nginx:
curl https://ip-172-10-11-12/healthcheck --cacert /etc/ssl/certs/ip-172-10-11-12.crt
Затем я получил адрес ELB и убедился, что могу свернуться против этого.Я должен был пойти на машине, которая могла получить доступ к машине ELB.Обратите внимание, что из-за правил безопасности, ELB не был привязан, но был свернут.Я считаю, что я проверил это 2 способами.Сначала я попробовал:
curl https://elb-address/healthcheck --insecure
Затем я добавил ip-172-10-11-12 в файл / etc / hosts и попытался:
curl https://ip-172-10-11-12/healthcheck --cacert /cert/file/copied/onto/machine
Как только я заработал это, ALB ELB начал работать.Мне пришлось проверить правила брандмауэра, группы безопасности AWS и т. Д., Прежде чем этот последний вызов сработал.Но когда это сработало, ELB начал видеть сервер.
У меня также было 1 заключительное понимание при отладке этого: если ELB доступен из общедоступного Интернета, ELB должен иметь только общедоступные подсети, аобщедоступные подсети должны находиться в той же зоне доступности, что и целевые машины