Это было близко, всего несколько маленьких шагов. Я получил это, работая с ALB ELB.
Сначала я использовал скрипт, аналогичный описанному здесь: https://myopswork.com/how-to-do-end-to-end-encryption-of-data-in-transit-bw -aws-alb-and-ec2-3b7fd917cddd
#!/bin/bash
DIR=$(dirname [110])
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 должны быть только общедоступные подсети, а общедоступные подсети должны находиться в той же зоне доступности, что и целевые машины
Вы хотите nHAPI Я использовал его в проекте ранее, и он отлично работал. Тот факт, что это открытый исходный код также спас мой бекон, так как один из источников входных данных не точно соответствовал спецификации HL7, поэтому мне пришлось немного взломать источник, чтобы парсер nHAPI разрешил эти сообщения (так как я не мог изменить их).
У Ориона Хелта есть набор инструментов под названием Симфония, который делает нечто подобное. Существует также набор инструментов Chameleon от Interfaceware, который делает то же самое.
Я тоже использовал nHAPI, и он отлично работает. Однако вам, возможно, придется остерегаться некоторого причудливого поведения при экранировании специальных символов. Мне также пришлось вручную взломать строку HL7, чтобы обновить некоторые поля, которые были недоступны с помощью объектной модели.