Problème

Lors de l'accès à AEM via un équilibreur de charge à terminaison SSL (ou un CDN terminé par SSL), AEM redirige les retours de https vers http.

La fermeture SSL à l’équilibreur de charge signifie que les certificats SSL sont installés dans l’équilibreur de charge. L’utilisateur final accède au site par https:// et le serveur Dispatcher/Web Server et AEM sont accessibles sur l’arrière-plan avec http://.

Cause

Les différents équilibreurs de charge envoient des en-têtes différents pour avertir les systèmes dorsaux que SSL est terminé en amont. Par exemple, Amazon ELB utilise l'en-tête "X-Forwarded-Proto: https".

Résolution

Pour résoudre le problème :

I. Installer le correctif 6922:

Si vous êtes sur AEM6.0 ou 6,1 :

  1. Contactez AEM Service clientèle et demandez le correctif 6922. Le correctif est pour AEM 6.0, mais il fonctionne également sur AEM 6.1.

  2. Accédez à http://aem-host:port/crx/packmgr/index.jsp et connectez-vous en tant qu'administrateur.

  3. Installez le fichier zip du correctif sur le package manager AEM.

    Remarque :

    Ce correctif permet d’éviter un problème lorsque l’ancre d’URL est perdue pendant la redirection mise à jour par le filtre Apache Felix SSL.  Par exemple, https://host/cf#/content/geometrixx/en.html redirected sera redirigé vers https://host/cf sans cette correction.

II. Mettre à jour de la configuration de Dispatcher / clientheaders

Reportez-vous à la documentation de votre équilibreur de charge pour savoir quel en-tête il définit pour avertir les systèmes en aval qu'il a mis fin à SSL. Pour simplifier, dans ces étapes, nous supposons que l'en-tête HTTP correct est "X-Forwarded-Proto: https"

  1. Connectez-vous au serveur de pointage.

  2. Ouvrez la batterie du distributeur .toute configuration.

  3. Ajoutez l'en-tête à la section / clientheaders.

Si vous utilisez le répartiteur sans équilibreur de charge ou si votre équilibreur de charge ou votre proxy ne parvient pas à définir l'en-tête X-Forwarded-Proto, vous pouvez le définir au niveau du serveur Web ou du répartiteur. Si vous utilisez Apache HTTP Server, mettez à jour votre VirtualHost HTTPS avec cette directive :

RequestHeader set X-Forwarded-Proto "https"

III. Mettre à jour les configurations d’en-tête :

  1. Atteindre http://host:port/system/console/configMgr/org.apache.felix.http.sslfilter.SslFilter et connectez-vous en tant qu'administrateur.

  2. Définir l'en-tête avant du SSL sur X-Forward-Proto.

  3. Définir la valeur en avant de SSL sur https.

  4. Cliquez sur Enregistrer.

Remarque :

Il n’existe aucune norme pour les en-têtes proxy inverses qui indiquent le protocole final utilisé. Voici quelques exemples :

  • Amazon ELB (Équilibreur de charge électrique) utilise l’en-tête « X-Forwarded-Proto: https ».
  • Amazon Cloudfront CDN utilise l’en-tête « X-Cloudfront-Proto: https ».

IV. Mettez à jour la configuration de la renvoyée OSGi (AEM 6.3 et les versions ultérieures)

Sur AEM 6.3 et les versions ultérieures, une configuration supplémentaire requise :

  1. Ouvrez une session http://aem-host:port/system/console/configMgr/org.apache.felix.http.

  2. Activez le paramètre Activer connexion de l'équilibreur proxy/charge, et sauvegardez-le.

  3. Rechercher le Service d'authentification Sling et ouvrir la configuration.

  4. Désélectionner Autoriser l'accès anonyme.

  5. Cliquez sur Enregistrer.

Pour plus de détails sur ce problème, consultez l'article sur la solution.