J'aimerais que mon site Web soit uniquement SSL mais je suis confronté à un problème de non-prise en charge de la certification SSL sur les navigateurs plus anciens tels que IE8. Hôte, ou peut-être même php.
Ma redirection actuelle ressemble à ceci (veuillez noter que le serveur utilise le port 8080 et l'une des raisons pour lesquelles il utilise un request_scheme:
RewriteEngine on
RewriteCond %{REQUEST_SCHEME} =http
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
Y at-il là seulement pour rediriger les navigateurs SNI utilisant htaccess ou similaire?
Tout d’abord, SNI est un paramètre de serveur et non de certificat.
Un peu de contexte ici pourrait aider:
Lorsqu'un navigateur se connecte à un site Web https, il convertit le nom du site Web en une adresse IP, puis initie une connexion SSL avec cette adresse IP ( sans l'adresse nom) et vérifie le certificat renvoyé par le serveur. Il envoie ensuite des requêtes Web chiffrées (y compris le nom de l'adresse cette fois-ci) à l'aide de ce certificat.
Le problème est que lorsque de nombreux sites sont hébergés sur la même adresse IP (comme cela arrive de plus en plus parce que nous manquons d'adresses IP IPv4), la connexion SSL initiale ne sait pas à quel site vous souhaitez vous connecter, comme cette connexion initiale a uniquement l'adresse IP et non le nom du site Web, elle renvoie donc le certificat par défaut qui, s'il ne correspond pas au nom du site Web que vous demandez, provoque le renvoi d'une erreur de certificat à l'utilisateur.
SNI (Server Name Indication) est une extension de la demande SSL qui inclut également le nom du serveur dans la connexion initiale. Le certificat approprié peut donc être renvoyé et la connexion SSL établie correctement.
Cependant, les navigateurs plus anciens (et notamment IE8 sur XP en tant que navigateur principal non-SNI toujours utilisé malgré le statut de fin de vie de XP) ne prennent pas en charge SNI.
Quoi qu'il en soit, revenons à votre question. Il semblerait que votre site soit hébergé par le nom de domaine ainsi que par ceux qui fournissent votre certificat. Apparemment, ils ne vous fournissent pas une adresse IP unique et vous devez donc utiliser SNI si vous souhaitez avoir un site https.
Il existe quelques solutions de contournement:
Pour examiner la dernière option plus en détail, la seule façon de procéder consiste à utiliser http par défaut et à rediriger certains utilisateurs vers https en fonction du sniffing du navigateur, comme d'autres l'ont suggéré. Cependant, il y a plusieurs problèmes avec ceci:
Bien que ne répondant pas directement à votre question, j'espère que cela vous donnera plus de détails pour vous aider à décider si vous devriez vraiment faire ce que vous demandez de faire.
C'est en fait une exigence plus courante que vous ne le pensez. Comme IE8 est le dernier navigateur disponible pour les utilisateurs de Windows XP, actuellement, 14,79% des utilisateurs dans le monde utilisent encore IE8, selon NetMarketShare.com .
Vous pouvez configurer une règle .htaccess pour que, si le navigateur Web (conformément à l’en-tête User-Agent, voir Liste des chaînes de l’agent utilisateur IE8 ) soit IE8, même s’ils cliquent sur un lien HTTPS dans moteur de recherche, l'utilisateur est redirigé côté serveur vers une version non SSL de votre site Web avant de charger une page avec un certificat SSL associé.
RewriteEngine on
# If web browser is IE8 then redirect to non-SSL version of website
RewriteCond %{HTTP_USER_AGENT} "MSIE 8.0" [OR]
RewriteCond %{HTTP_USER_AGENT} "OptimizedIE8"
RewriteRule ^(.*)$ http://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
# Otherwise, if user trying to access non-SSL version, redirect them to SSL version
RewriteCond %{REQUEST_SCHEME} =http
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]