Настройка локальной сети https для макета amazonaws.com в докере - PullRequest
0 голосов
/ 11 октября 2018

У меня есть требование, когда мне нужно настроить подделку / макет сервера AWS в моей локальной сети создания докеров ... Требуется иметь возможность протестировать набор микросервисов, не сообщая микросервисам, что конечная точка нефактически AWS.

enter image description here

Например, если микросервис, использующий AWS-SDK, пытается выполнить сервисный вызов для создания очереди, он делаетвызов https://eu -west-1.queue.amazonaws.com .У меня установлен локальный DNS-сервер, который разрешает то же самое на обратный прокси-сервер ( Traefik ), который, в свою очередь, разрешает его на фиктивный сервер.

Когда выполняется сервисный вызов, сервисный вызов завершается неудачно на уровне обратного прокси-сервера, заявляя об ошибке ниже

traefik_1     | time="2018-10-11T15:11:28Z" level=debug msg="http: TLS handshake error from 10.5.0.7:59058: remote error: tls: unknown certificate authority"

Может ли кто-нибудь помочь мне в настройке системы таким образом, чтобы вызовсделано успешно ....

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

Вы будете бороться / идти на компромисс, чтобы перехватить вызовы API AWS без обхода проверки цепочки сертификатов.

Я предлагаю вам предоставить Настраиваемую конечную точку для клиента AWS SDKв вашем коде NodeJS указывать на конечную точку LocalStack.Это значение может быть передано с использованием переменных среды в ваших тестовых средах.

var sqsClient = new AWS.SQS(
           {endpoint: process.env.SQSCLIENT}
);

Затем передайте URL LocalStack в контейнер для тестовых сред:

docker run mymicroservice -e SQSCLIENT='http://localstack:4576'
0 голосов
/ 19 октября 2018

tls: unknown certificate authority

На основании этого сообщения об ошибке вам необходимо обновить список доверенных ЦС в вашей среде.Это должно быть сделано внутри каждого изображения (или результирующего контейнера), которое будет подключаться к вашей фиктивной службе.Процесс варьируется в зависимости от выбранного вами базового образа, и этот вопрос на unix.se охватывает многие методы.

Процесс Debian:

apt-get install ca-certificates
cp cacert.pem /usr/share/ca-certificates
dpkg-reconfigure ca-certificates

Процесс CentOS:

cp cacert.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

Процесс Alpine:

apk add --no-cache ca-certificates
mkdir /usr/local/share/ca-certificates
cp cacert.pem /usr/local/share/ca-certificates/
update-ca-certificates
0 голосов
/ 11 октября 2018

Вы не сможете MITM запросить https api и вернуть другой ответ.Вы можете присвоить SDK другой URL для обращения (без https или с самозаверяющим сертификатом), а затем настроить прокси для запросов прокси к amazon, когда вы хотите, чтобы они отправлялись в amazon, и к другим вашим службам, когдаВы хотите издеваться над ними.

Некоторая случайная информация о том, как изменить URL-адрес запроса API в SDK javascript: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/specifying-endpoints.html (как пример)

...