web-dev-qa-db-fra.com

Erreur de configuration SSL Apache (erreur de connexion SSL)

J'essaie de configurer Apache sur mon serveur pour qu'il fonctionne avec SSL, mais chaque fois que je visite mon site, le message suivant s'affiche dans mon navigateur:

Erreur de connexion SSL. Impossible d'établir une connexion sécurisée au serveur. Cela peut être un problème avec le serveur ou peut nécessiter un certificat d'authentification client que vous n'avez pas. Erreur 107 (net :: ERR_SSL_PROTOCOL_ERROR): erreur de protocole SSL.

Le message d'erreur ci-dessus semble être natif de Google Chrome. Cependant, même si les messages sont différents, SSL pour le site ne fonctionne sur aucun navigateur.

Quelques informations sur la situation: j’utilise Ubuntu 10.04 desktop edition.

J'ai installé Apache en installant zend server ( Apache a été installé automatiquement). J'ai ensuite installé openssl. Les pages non-https fonctionnent correctement sur le site.
J'ai essayé d'obtenir des certificats d'essai de plusieurs sites de certificats, mais rien ne fonctionne (même erreur).
J'hébergeais auparavant mon site sur un autre serveur sur lequel ssl fonctionnait parfaitement. J'ai également essayé d'utiliser la clé et le fichier de certification de ce serveur, mais j'ai la même erreur.

Le nom de domaine et l'adresse IP sont toujours les mêmes. Mon SSLCertificateFile et SSLCertificateKeyFile pointent vers le répertoire et les fichiers corrects.

De plus, SSLVerifyClient n'est pas activé.

Si quelqu'un a des suggestions, ce serait très apprécié.

37
user396404

J'ai eu le même problème que @ User39604 et je devais suivre VARIOUS conseils. Puisqu'il ne se souvient pas du chemin précis qu'il a suivi, laissez-moi énumérer mon chemin:

  1. vérifiez si vous avez SSL OUI en utilisant <?php echo phpinfo();?>

  2. si nécessaire

    A. active ssl sur Apache Sudo a2enmod ssl

    B. installez openssl Sudo apt-get install openssl

    C. vérifie si le port 443 est ouvert Sudo netstat -lp

    D. Si nécessaire, changez /etc/Apache2/ports.conf, cela marche

    NameVirtualHost *:80
    Listen 80
    
    <IfModule mod_ssl.c>
        # If you add NameVirtualHost *:443 here, you will also have to change
        # the VirtualHost statement in /etc/Apache2/sites-available/default-ssl
        # to <VirtualHost *:443>
        # Server Name Indication for SSL named virtual hosts is currently not
        # supported by MSIE on Windows XP.
        NameVirtualHost *:443
        Listen 443
    </IfModule>
    
    <IfModule mod_gnutls.c>
        Listen 443
    </IfModule>
    
  3. acquérir une clé et un certificat par

    A. payant une autorité de certification (Comodo, GoDaddy, Verisign) pour une paire

    B. générer votre propre * - voir ci-dessous (à des fins de test UNIQUEMENT)

  4. changez votre configuration (dans ubuntu12 /etc/Apache2/httpd.conf - default est un fichier vide) pour inclure un <VirtualHost> _ (remplace MYSITE.COM ainsi que la clé et le chemin/nom de certification pour pointer vers votre certificat et votre clé):

    <VirtualHost _default_:443> 
    ServerName MYSITE.COM:443
    SSLEngine on
    SSLCertificateKeyFile /etc/Apache2/ssl/MYSITE.COM.key
    SSLCertificateFile /etc/Apache2/ssl/MYSITE.COM.cert
    ServerAdmin MYWEBGUY@localhost
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    
    
    ErrorLog ${Apache_LOG_DIR}/errorSSL.log
    
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    
    CustomLog ${Apache_LOG_DIR}/accessSSL.log combined
    
    </VirtualHost>
    

alors que de nombreuses autres configurations virtualhost seront disponibles dans /etc/Apache2/sites-enabled/ et en /etc/Apache2/sites-available/ c'était /etc/Apache2/httpd.conf c'était CRUCIAL de résoudre tous les problèmes.

pour plus d'informations:

http://wiki.vpslink.com/Enable_SSL_on_Apache2

http://httpd.Apache.org/docs/2.0/ssl/ssl_faq.html#selfcert

* générer votre propre certificat (auto-signé) donnera un certificat dont le navigateur ne reconnaîtra pas l'autorité. Par conséquent, le navigateur criera au meurtre et l'utilisateur devra "comprendre les risques" une douzaine de fois avant que le navigateur n'ouvre réellement la page. alors, cela ne fonctionne qu'à des fins de test. cela dit, voici le HOW-TO:

  1. allez dans le dossier Apache (sous ubuntu12 /etc/Apache2/)
  2. créer un dossier comme ssl (ou tout ce qui fonctionne pour vous, le nom n'est pas une exigence du système)
  3. aller au répertoire choisi /etc/Apache2/ssl
  4. courir Sudo openssl req -new -x509 -nodes -out MYSITE.COM.crt -keyout MYSITE.COM.key
  5. utilisation MYSITE.COM.crt et MYSITE.COM.key dans votre <VirtualHost> tag

le format du nom N'EST PAS soumis à une exigence système stricte, il doit être identique au fichier :) - des noms tels que 212-MYSITE.COM.crt, june2014-Godaddy-MYSITE.COM.crt devrait marcher.

39
tony gil

Je recevais la même erreur dans chrome (et une différente dans Firefox, IE). Aussi dans error.log, je obtenais [error] [client cli.ent.ip.add] Invalid method in request \x16\x03 En suivant le formulaire d'instructions ce site j'ai changé ma configuration FROM:

<VirtualHost subdomain.domain.com:443>

   ServerAdmin [email protected]
   ServerName subdomain.domain.com

   SSLEngine On
   SSLCertificateFile conf/ssl/ssl.crt
   SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>

À:

<VirtualHost _default_:443>

   ServerAdmin [email protected]
   ServerName subdomain.domain.com

   SSLEngine On
   SSLCertificateFile conf/ssl/ssl.crt
   SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>

Maintenant ça fonctionne bien :)

22
Alex Okrushko

Une cause commune que je voulais suggérer pour cette situation:

Parfois, un client exécute Skype, qui utilise le port 443 sans s’en rendre compte. Quand ils commencent à démarrer Tomcat ou Apache, il semble que le démarrage commence, mais ne peut pas se connecter au port 443. Il s’agit du message exact que l’utilisateur recevrait dans le navigateur. Le correctif consiste à arrêter ce qui était en cours d'exécution sur le port 443 et à redémarrer le serveur Web afin qu'il puisse se lier au port 443.

Le client peut redémarrer Skype après avoir démarré le serveur Web. Skype détecte alors que le port 443 est utilisé et choisit un autre port à utiliser.

6
Michael Berman
#Make sure that you specify the port for both http and https ie.
NameVirtualHost:80
NameVirtualHost:443
#and 
<VirtualHost *:80>
<VirtualHost *:443>

#mixing * and *:443 does not work it has to be *:80 and *:443
6
Jeremy

Étape pour activer SSL correctement.

Sudo a2enmod ssl  
Sudo apt-get install openssl

Configurez le chemin des certificats SSL dans votre fichier de configuration SSL (default-ssl.conf) qui peut se trouver dans/etc/Apache2/sites-available. J'ai stocké des certificats sous/etc/Apache2/ssl /

SSLEngine On
SSLCertificateFile /etc/Apache2/ssl/certificate.crt
SSLCertificateChainFile /etc/Apache2/ssl/ca_bundle.crt
SSLCertificateKeyFile /etc/Apache2/ssl/private.key

Activer le fichier de configuration SSL

Sudo a2ensite default-ssl.conf
2
Syed Shibli

J'ai eu ce problème et la solution était un peu ridicule.

J'utilise Cloudflare, qui agit en tant que proxy sur mon site Web. Pour pouvoir vous connecter via SSH, j'ai ajouté une entrée à mon /etc/hosts fichier donc je n'ai pas besoin de me souvenir de l'adresse IP de mon serveur.

xxx.xx.xx.xxx  example.com

Donc, dans mon navigateur quand je suis allé à https://www.example.com , j'utilisais le proxy Cloudflare, et quand je suis allé à https://example.com J'allais directement sur le serveur. Étant donné que la configuration de Cloudflare ne nécessite pas l'ajout de certificats intermédiaires, je voyais cette exception de sécurité dans mon navigateur lorsque je suis allé sur https://example.com , mais https: //www.example.com fonctionnait.

La solution : supprimer l'entrée de mon ordinateur portable /etc/hosts fichier.

Si ce n'est pas votre problème, je vous recommande d'utiliser l'un des nombreux outils de vérification en ligne SSL pour essayer de diagnostiquer votre problème.

Je recommande également d'utiliser ping pour vérifier l'adresse IP rapportée et la comparer à l'adresse IP attendue.

ping https://www.example.com/

Le Générateur de configuration SSL de Mozilla est une autre ressource SSL très utile. Il peut générer une configuration SSL pour vous.

2
Dagmar

C’est ce qui a réglé le problème pour moi sur Ubuntu.

  1. Activé le module: a2enmod ssl
  2. Déplacement de tous les fichiers liés au cert dans un dossier /usr/local/ssl et l'a rendu lisible par tout le monde: chmod -R +r /usr/local/ssl
  3. Modifié <VirtualHost *:80> à <VirtualHost *:*> dans mon hôte virtuel.
  4. Ajoutée SSLEngine On avant toutes les autres directives SSL de mon hôte virtuel.

Si vous définissez une phrase de passe sur le certificat, Apache devrait vous y inviter au redémarrage.

1
Znarkus

Je ne savais pas ce que je faisais quand j'ai commencé à modifier la configuration d'Apache. J'ai ramassé des morceaux et pensé que cela fonctionnait jusqu'à ce que je rencontre le même problème que vous, plus précisément Chrome ayant cette erreur.

Ce que j'ai fait est de commenter toutes les directives spécifiques au site utilisées pour configurer la vérification SSL, de confirmer que Chrome me laisse entrer, d'examiner la documentation avant la directive avant de la réactiver, puis de redémarrer Apache. En les parcourant avec soin, vous devriez être en mesure de déterminer le ou les facteurs qui causent votre problème.

Dans mon cas, je suis passé de ceci:

SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +StdEnvVars +StrictRequire
SSLRequireSSL On

pour ça

<Location /sessions>
  SSLRequireSSL
  SSLVerifyClient require
</Location>

Comme vous pouvez le constater, j'ai eu pas mal de changements pour y arriver.

1
Fitter Man

Je rencontre ce problème, car j'ai <VirtualHost> défini à la fois dans httpd.conf et httpd-ssl.conf.

dans httpd.conf, il est défini comme

<VirtualHost localhost>

dans httpd-ssl.conf, il est défini comme

<VirtualHost _default_:443>

La modification suivante a résolu ce problème, ajoutez 80 dans le fichier httpd.conf.

<VirtualHost localhost:80>
1
Daniel

Semblable à d'autres réponses, cette erreur peut survenir quand aucun site n'est configuré pour utiliser SSL.

J'ai eu l'erreur lors de la mise à niveau de Debian Wheezy vers Debian Jessie. La nouvelle version d'Apache nécessite un fichier de configuration de site se terminant par .conf. Comme mon fichier de configuration ne l’était pas, il était ignoré et aucun autre n’était configuré pour desservir les connexions SSL.

1
Andy Beverley

J'ai eu cette erreur quand j'ai suivi pour la première fois les instructions pour configurer la configuration ssl d'Apache2 par défaut, en mettant un lien symbolique pour /etc/Apache2/sites-available/default-ssl dans /etc/Apache2/sites-enabled. J'ai ensuite essayé par la suite d'ajouter un autre nom NameVirtualHost sur le port 443 dans un autre fichier de configuration et j'ai commencé à obtenir cette erreur.

Je l'ai corrigé en supprimant le /etc/Apache2/sites-enabled/default-ssl symlink, puis ces lignes dans un autre fichier de configuration (httpd.conf, qui n’est probablement pas de bonne forme, mais a fonctionné):

NameVirtualHost *:443

<VirtualHost *:443>
  SSLEngine on
  SSLCertificateChainFile    /etc/Apache2/ssl/chain_file.crt
  SSLCertificateFile    /etc/Apache2/ssl/site_certificate.crt
  SSLCertificateKeyFile /etc/Apache2/ssl/site_key.key
  ServerName www.mywebsite.com
  ServerAlias www.mywebsite.com
  DocumentRoot /var/www/mywebsite_root/


</VirtualHost>
0
joseph_morris

J'ai rencontré ce problème, également en raison d'une mauvaise configuration. J'utilisais Tomcat et dans le fichier server.xml, j'avais spécifié mon connecteur en tant que tel:

<Connector port="17443" SSLEnabled="true"
           protocol="org.Apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keyAlias="wrong" keystorePass="secret"
           keystoreFile="/ssl/right.jks" />

Quand je l'ai corrigé ainsi:

<Connector port="17443" SSLEnabled="true"
           protocol="org.Apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keyAlias="right" keystorePass="secret"
           keystoreFile="/ssl/right.jks" />

Cela a fonctionné comme prévu. En d'autres termes, vérifiez que vous avez non seulement le bon magasin de clés, mais également que vous avez spécifié le bon alias sous celui-ci. Merci pour le précieux conseil ser396404 .

0
Lucas

Je l'ai résolu en commentant:

AcceptFilter https aucun

dans httpd.conf

selon: http://www.apachelounge.com/viewtopic.php?t=4461

0
Jan Bolmeson