web-dev-qa-db-fra.com

Boucle de redirection SSL à l'aide du plugin Wordpress HTTPS

J'utilise Wordpress sur un serveur NginX qui envoie un proxy à un serveur Apache qui sert les pages. Récemment, nous voulions forcer l'utilisation de SSL au moins dans la section Admin, nous avons donc installé le plugin Wordpress HTTPS . Les sections de serveur dans NginX sont correctement configurées, mais lorsque j'active l'option "Forcer SSL pour l'administrateur", je tombe dans une boucle de redirection.

Je ne pense pas que ce soit un problème de cookie. Si vous avez besoin de plus d’informations, je vous les transmettrai.

6
Injeniero Barsa

J'ai récemment eu du mal à résoudre un problème similaire. Je vais donc proposer quelques informations supplémentaires aux personnes qui recherchent cette question.

  1. La première étape que vous devez faire lorsque vous essayez de forcer SSL pour l’administration de votre site consiste à suivre les instructions du codex . Cela signifie définir l’option FORCE_SSL_ADMIN dans votre fichier wp-config.php.
  2. Assurez-vous de noter l'avertissement dans le codex que cette modification doit être supérieure à la ligne /* That's all, stop editing! Happy blogging. */.
  3. Il existe de nombreuses raisons pour lesquelles cela pourrait vous donner une boucle de redirection, mais elles résument toutes le fait que la fonction is_ssl() de Wordpress renvoie false. Par exemple, vous pouvez être exécuté derrière un proxy inverse effectuant un déchargement SSL. Si tel est le cas, vos utilisateurs saisissent https://yourwordpresssite, mais le déchargeur SSL gère le déchiffrement et, au moment où votre serveur reçoit la demande, la demande n'est plus SSL et votre serveur voit http://yourwordpresssite. Si vous êtes bloqué ici, le codex a de nouveau un bon conseil, en supposant que votre proxy inverse soit correctement configuré. Voir les instructions ici: (http://codex.wordpress.org/Administration_Over_SSL#Using_a_Reverse_Proxy).

Si cela ne fonctionne toujours pas, votre proxy inverse peut ne pas définir l'en-tête HTTP_X_FORWARDED_PROTO. Malheureusement, rien de tout cela n'est normalisé et il existe plus d'un moyen d'indiquer qu'un déchargement SSL a eu lieu. La manière utilisée par notre équilibreur de charge (Citrix Netscaler) est avec l’en-tête créé par Microsoft appelé Front-End-Https. Vous pouvez voir cet en-tête comme l'un des en-têtes de réponse non standard courants répertoriés sur wikipedia ici: (http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Common_non-standard_response_headers). Notez que lorsque votre serveur verra cet en-tête, il ressemblera à HTTP_FRONT_END_HTTPS. Notez également que Netscaler n'envoie pas cet en-tête par défaut. Vous devez le configurer pour ajouter cet en-tête. Ceci est documenté ici , et il y a une démo vidéo de Nice sur la façon de le faire ici .

Au final, comme notre site n’est alimenté que par HTTPS, j’ai choisi d’utiliser le plugin wordpress-https, qui gère très bien les cas Edge (comme d’autres plugins wordpress dotés de http: // URL codés en dur provoquera des avertissements sur vos pages sécurisées). J'ai corrigé le plug-in pour reconnaître l'en-tête HTTP_FRONT_END_HTTPS et soumettre un correctif à l'auteur. Ce plug-in devrait donc le supporter à un moment donné.

Bonne chance!

5
jptsetme

Le contrôle de is_ssl() n'est pas vraiment le meilleur de WP. Vous pouvez prendre ce plugin mu } pour obtenir un meilleur chèque. Ensuite, collez-vous simplement aux recommandations du codex }.

Ad le plugin Wordpress HTTPS) Je ne compterais pas trop sur ce plugin quand je regarde trunk ...

Mu-Plugins

MU-Plugins dans le Codex

1
kaiser