Soutien pour les deux sens de TLS/HTTPS avec ELB
Un sens (ou côté serveur) TLS/HTTPS avec Amazon Elastic Load Balancing est bien documenté
De soutien pour les deux sens (ou côté client) TLS/HTTPS n'est pas aussi clair de la documentation.
En supposant ELB est de la résiliation d'un TLS/connexion HTTPS:
- Ne ELB soutien client authentifié les connexions HTTPS?
- Si oui, un serveur servi par ELB recevoir un X-Forwarded-* - tête pour identifier le client authentifié par ELB?
D'ELBE prend en charge le protocole TCP forwarding donc un EC2 serveur hébergé peut établir dans les deux sens TLS/connexion HTTPS, mais dans ce cas, je suis intéressé par ELB de résiliation de l'TLS/connexion HTTPS et d'identifier le client.
Vous devez vous connecter pour publier un commentaire.
Je ne vois pas comment il pourrait, en double-clos mode HTTPS, parce que la ELB est l'établissement d'une deuxième connexion TCP vers le serveur de back-end, et à l'intérieur c'est le décryptage de chiffrer la charge utile du/de la client et le serveur... de sorte que le serveur ne pourrait pas voir le certificat du client directement, et il n'y a pas documenté X-Forwarded-* les en-têtes des autres que Pour, -Proto, et de -Port.
Avec un ELB cours d'exécution en mode TCP, d'autre part, la négociation SSL se fait directement entre le client et le serveur avec ELB aveuglément à attacher l'ensemble des flux. Si le serveur prend en charge la
PROXY
protocole, vous pourriez activer cette fonctionnalité dans la ELB de sorte que vous pouvez identifier le client d'origine de l'adresse IP et le port du serveur, ainsi que d'identifier le certificat du client directement, parce que le client serait de négocier directement avec vous... même si cela signifie que vous n'êtes plus le déchargement SSL pour la ELB, qui peut être en partie le point de ce que vous essayez de faire.Mise à jour:
Il ne ressemble pas il y a un moyen de faire tout ce que vous voulez-déchargement SSL et identifier le client certificatite -- avec ELB seul. Les informations ci-dessous sont présentées “pour ce que ça vaut.”
Apparemment HAProxy a soutien pour les certificats côté client dans la version 1.5, et transmet les informations de certificat dans
X-
en-têtes. Depuis HAProxy prend également en charge laPROXY
protocole via la configuration (quelque chose le long des lignes detcp-demande de connexion attendez-proxy
) ... donc il semble concevable que vous pouvez utiliser HAProxy derrière un TCP-mode ELB, avec HAProxy de terminaison de la connexion SSL et la transmission les deux le client IP/port d'informations à partir d'ELB (via lePROXY
protocole) et le client cert informations pour le serveur d'application... vous permettant ainsi de toujours maintenir SSL offload.Je parle de cela car il semble être une solution complémentaire, peut-être plus complet que soit la plate-forme, et, au moins dans la version 1.4, les deux produits fonctionnent parfaitement ensemble, je suis à l'aide de HAProxy 1.4 derrière ELB avec succès pour toutes les demandes de dans ma plus grande plate-forme web (dans mon cas, ELB est déchargement SSL -- il n'y a pas de client cert) et il semble être une combinaison solide en dépit de l'apparente redondance de la cascade des équilibreurs de charge. J'aime avoir ELB être la seule chose sur le grand méchant Internet, mais je n'ai aucune raison de penser que directement exposés HAProxy serait problématique sur son propre. Dans mon application, le ELBs sont là pour l'équilibre entre les HAProxies dans l'A/Z (que j'ai eu à l'origine destinées à l'auto-échelle, mais l'utilisation du PROCESSEUR est resté tellement faible, même au cours de notre saison, que je n'ai jamais eu plus d'un par Zone de Disponibilité, et j'ai jamais perdu, et pourtant...) qui peut alors faire un filtrage, d'expédition, de et et munging des en-têtes avant de les livrer au trafic de la réelle plate-forme en plus de me donner certains enregistrement, la réécriture, et le trafic de fractionnement du contrôle que je n'ai pas avec ELB sur son propre.
Dans le cas où votre retour de la fin de support client authentifié les connexions HTTPS lui-même, vous pouvez utiliser ELB comme TCP sur le port 443 en TCP sur le port de votre back-end écoute. Cela va faire ELB juste de renvoyer la demande non cryptée directement à votre back-end. Cette configuration ne nécessite pas d'installation de certificat SSL pour un équilibreur de charge.
Mise à jour: avec cette solution de x-forwarded-* les en-têtes ne sont pas définies.
Vous pouvez passer en instance unique sur Elastic Beanstalk, et l'utilisation ebextensions pour télécharger les certs et configurer nginx pour TLS mutuelle.
Exemple
.ebextensions/setup.config