Comment rediriger de HTTPS vers HTTP avant une erreur de serveur?

10

J'ai utilisé un site Web avec un certificat SSL, mais j'ai cessé d'utiliser le certificat SSL. Le problème est que la plupart des liens externes vers le site Web utilisent le préfixe https: //.

J'ai essayé la redirection https: // vers http: // dans le fichier .htaccess:

RewriteEngine On

RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI}

Mais il semble, comme cela a été souligné ailleurs, que le serveur tente de récupérer le certificat avant d'activer la redirection. Par conséquent, une erreur est affichée avant que la redirection ne soit effectuée. L'erreur est soit un avertissement indiquant que le certificat a expiré, soit si je supprime la demande de signature de certificat, puis une erreur indiquant que SSL a reçu un enregistrement dépassant la longueur maximale autorisée.

Existe-t-il un moyen de permettre aux liens entrants d'être redirigés correctement?

user981178
la source
1
SSL est négocié avant toute demande HTTP, comme je pense que vous l'avez découvert. Je pense que vous allez avoir un problème pour que cela fonctionne comme vous le souhaitez, mais je vote pour migrer vers ServerFault.com au cas où quelqu'un y trouverait une meilleure réponse.
Michael
Il semble que cela puisse être difficile à réaliser. C'est vraiment dommage de perdre les liens établis sur Internet, et pire encore, pour les visiteurs de penser que le site a été compromis ou disparu.

Réponses:

16

La différence entre http et https est que les requêtes https sont envoyées via une connexion cryptée SSL. La connexion chiffrée SSL doit être établie entre le navigateur et le serveur avant que le navigateur envoie la demande http.

Les requêtes Https sont en fait des requêtes http envoyées via une connexion cryptée SSL. Si le serveur refuse d'établir une connexion cryptée SSL, le navigateur n'aura aucune connexion pour envoyer la demande. Le navigateur et le serveur n'auront aucun moyen de se parler. Le navigateur ne pourra pas envoyer l'URL à laquelle il souhaite accéder et le serveur ne pourra pas répondre par une redirection vers une autre URL.

Ce n'est donc pas possible. Si vous souhaitez répondre aux liens https, vous avez besoin d'un certificat SSL.

sstendal
la source
4

Non, s'il était possible de rediriger de https vers http sans véritable certificat, ce serait une faille de sécurité majeure.

Considérons un criminel capable de rediriger le serveur sécurisé de la banque vers une connexion non sécurisée sans avoir besoin d'un véritable certificat https pour le site, cela permettrait au criminel de détourner la connexion sans que l'utilisateur ne le sache.

La seule solution que je peux voir est d'obtenir un certificat bon marché, puis de faire une redirection normale du site HTTPS (que l'utilisateur ne peut pas atteindre sans certificat valide) vers le site normal pour ces liens externes.

Joachim Isaksson
la source
Bon, c'est mieux comme ça. Dommage qu'il n'y ait aucun moyen de configurer un remplacement approuvé en tant que propriétaire du site.
-2

Vous devez créer dans votre .htaccess

ErrorDocument 500 http://anotherserer.com/errorPage.php

la source
Merci pour la suggestion. Même avec cela dans le .htaccess, il n'utilise pas la page que j'entre pour l'erreur 500 pour cette erreur particulière. Il semble que rien dans le fichier .htaccess ne soit activé à cause de l'erreur initiale.