2017-10-08 8 views
0

Je souhaite avoir une configuration personnalisée de "CA de confiance" pour mon API. Lorsque je n'utilise pas ELB, je peux y parvenir en configurant un fichier "ca.pem" sur mon serveur web. Cependant, lorsque j'utilise ELB, je pense que mon serveur web ne reçoit pas le certificat client d'origine (mais plutôt le certificat ELB).comment personnaliser les autorités de certification AWS ELB?

Est-il possible de faire en sorte que mon AC personnalisé prenne effet même si derrière l'ELB?

Répondre

0

Votre instance ne voit pas seulement le certificat du client d'origine ... elle ne participe pas réellement à la même session TLS que le client. ELB Classic et ALB créent deux sessions TLS indépendantes et relient leurs charges utiles ensemble.

Pour faire ce que vous voulez, l'ELB ne peut pas participer au TLS. Tout doit être fait par votre serveur, et l'équilibreur doit fonctionner au niveau 4 ou inférieur. Cela exclut Application Load Balancer, qui fonctionnait uniquement à la couche 7.

Il existe deux solutions pour cela.

L'ancienne solution devait utiliser un ELB (Classic) en mode TCP, avec TLS (SSL) désactivé. L'ELB transmet aveuglément la charge utile des connexions cryptées à l'instance, qui négocie TLS directement avec le navigateur, et peut donc utiliser son fichier CA pour authentifier le navigateur. Cela devient un peu difficile car, par défaut, votre instance ne verra pas l'adresse IP du client, et parce que l'ELB fonctionne en mode couche 4 (sans parler de la gestion du trafic chiffré qu'il ne comprend pas), il ne peut pas ajoutez les X-Forwarded-For en-têtes ... donc vous devez activer le support "Proxy protocol" sur l'ELB, et votre instance doit comprendre comment extraire l'adresse du client du préambule du protocole Proxy.

La nouvelle solution est un troisième type d'équilibreur, appelé Network Load Balancer. Ce service fonctionne à la couche 3 et vous permet - essentiellement - de mapper une seule adresse IP élastique sur plusieurs instances EC2, pour équilibrer les demandes entrantes sur des ports spécifiques, avec des contrôles d'intégrité pour supprimer les instances malsaines de la rotation. Vos instances sont toujours chargées de gérer tous les le TLS eux-mêmes, mais ils verront l'adresse du client sur la connexion entrante.