2

Как я могу ограничить доступ для эластичного beanstalk только к API Gateway?AWS Elastic Beanstalk открыт только для шлюза API

Я нашел аналогичный вопрос here, где рекомендуется создать сертификат на API Gateway.

Мой бэкенд решение, как на картинке:

enter image description here

Я создал сертификат в API шлюза (AWS doc).

1. Какой элемент должен аутентифицировать API, используя сертификат, закодированный PEM, сгенерированный API Gateway?

2. Возможно ли это сделать на балансировщике эластичных нагрузок (ELB), или я должен делать это на экземпляре приложения, где работает nginx?

+0

Я не уверен, что это ошибка документации или реальная проблема, но в настоящее время они перечисляют nginx в «Известных проблемах» в качестве бэкэнд, который может не поддерживать аутентификацию SSL-клиента, совместимую со шлюзом API: http: // docs. aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html –

ответ

0

Поскольку ELB не поддерживает две аутентификации SSL, вы должны аутентифицировать сертификат на своем сервере nginx.

Вы можете настроить сервер nginx таким образом, чтобы принять сертификат клиента из Gateway API.

server { 
    listen  443; 
    ssl on; 
    server_name example.com; 

    ssl_certificate  /etc/nginx/certs/server.crt; 
    ssl_certificate_key /etc/nginx/certs/server.key; 
    ssl_client_certificate /etc/nginx/certs/ca.crt; 
    ssl_verify_client optional; 

    location/{ 
     root   /var/www/example.com/html; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_param SCRIPT_FILENAME /var/www/example.com/lib/Request.class.php; 
     fastcgi_param VERIFIED $ssl_client_verify; 
     fastcgi_param DN $ssl_client_s_dn; 
     include  fastcgi_params; 
    } 
} 

Затем используйте функцию «Тестирование вызова» на консоли API Gateway, чтобы проверить эту настройку, если она работает для вас.