Impossible d'établir la connexion SSL, comment puis-je réparer mon certificat SSL?
Je suis en train de wget
à ma propre boîte, et il ne peut pas être une adresse interne dans le wget (c'est ce que dit un autre développeur).
Quand je wget, j'obtiens ceci:
wget http://example.com
--2013-03-01 15:03:30-- http://example.com/
Resolving example.com... 172.20.0.224
Connecting to example.com|172.20.0.224|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://www.example.com/[following]
--2013-03-01 15:03:30-- https://www.example.com/
Resolving www.example.com... 172.20.0.224
Connecting to www.example.com|172.20.0.224|:443... connected.
OpenSSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Unable to establish SSL connection.
Je crois que c'est parce que je n'ai pas le certificat de l'installation correctement. À l'aide d'openssl:
openssl s_client -connect example.com:443
CONNECTED(00000003)
15586:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:588:
Alors que si je fais la même commande sur un autre site, il montre l'ensemble du cert.
Peut-être que le certificat ssl n'a jamais été le programme d'installation dans le fichier conf Apache pour ce domaine?
Si oui, que dois-je être précisant dans le virtualhost? Est-il une solution autre que celle de la spécification --no-check-certificate
parce que je ne veux pas le faire?
- Activer le protocole SSL/TLS sur le port du serveur. L'erreur signifie généralement HTML (servi sur HTTP) est interprété comme un Enregistrement SSL (comme si il était servi par le protocole HTTPS). Voir aussi la suite sur la création d'un certificat dont tous les noms et les adresses IP (et pas seulement d'un nom): Comment puis-je générer un certificat auto-signé avec SubjectAltName utilisant OpenSSL.
Vous devez vous connecter pour publier un commentaire.
Cette erreur se produit lorsque OpenSSL reçoit autre chose qu'une
ServerHello
dans une version du protocole, il le comprend à partir du serveur. Il peut se produire si le serveur répond avec une en clair (non chiffré) HTTP. Il peut également se produire si le serveur prend en charge uniquement par ex. TLS 1.2 et le client ne comprend pas que la version du protocole. Normalement, les serveurs sont compatibles à au moins SSL 3.0 ET TLS 1.0, mais peut-être que ce serveur n'est pas (par la mise en œuvre ou de configuration).Il est difficile de savoir si vous avez tenté de passer
--no-check-certificate
ou pas. Je serais plutôt surpris si cela fonctionnerait.Un test simple consiste à utiliser
wget
(ou un navigateur) pour demanderhttp://example.com:443
(note de l'http://
, pashttps://
); si cela fonctionne, SSL n'est pas activé sur le port 443. Pour plus de débogage, utilisezopenssl s_client
avec le-debug
option, qui se trouve juste avant le message d'erreur vide les premiers octets de la réponse du serveur qui OpenSSL n'a pas pu analyser. Cela peut aider à identifier le problème, surtout si le serveur ne répond pas avec unServerHello
message. De voir exactement ce que OpenSSL attend, pour vérifier la source: recherchezSSL_R_UNKNOWN_PROTOCOL
dansssl/s23_clnt.c
.En tout cas, en regardant le journal des erreurs d'apache peuvent donner un aperçu aussi.
wget
conseil!Dans mon cas, je n'avais pas activé le site "default-ssl'. Seulement '000-default" a été inscrite dans le
/etc/apache2/sites-enabled
dossier.Activer SSL site sur Ubuntu 14 LTS, Apache 2.4.7:
apache2
(apparemment, j'avais oublié de le faire après l'ajout du vhost SSL config). Oh pinaise!Juste une note rapide (et la cause possible).
Vous pouvez parfaitement correct
VirtualHost
le programme d'installation avec_default_:443
etc. dans votre Apache .fichier conf.Mais... Si il en est même un .fichier conf activé avec des paramètres incorrects également à l'écoute sur le port 443, puis il va mettre l'ensemble du système SSL vers le bas.
Par conséquent, si vous êtes sûr que votre .fichier conf est correcte, essayez de désactiver l'autre site .fichiers de conf dans
sites-enabled
.Il y a quelques possibilités:
Votre poste de travail n'a pas l'autorité de certification racine cert utilisé pour la signature de du serveur cert. Comment exactement vous corriger cela dépend de l'OS que vous utilisez, et quelle libération, etc.(je soupçonne que ce n'est pas lié)Votre cert n'est pas installé correctement. Si votre certificat SSL nécessite un intermédiaire cert à être présentés et vous n'avez pas à configurer tout ça, vous pouvez obtenir ces mises en garde.Pour commencer, afin d'éliminer (3), ce qui se passe si vous utilisez telnet sur le port?
En supposant qu'il n'est pas (3), puis en fonction de vos besoins, vous pouvez être à l'aise en ignorant ces erreurs et juste en passant l'option --no-attestation-chèque. Vous voudrez probablement utiliser un navigateur habituel (qui est généralement le bundle de la racine certs directement) et de voir si les choses sont heureux.
Si vous voulez vérifier manuellement le cert, afficher plus de détails à partir de la
openssl s_client
de sortie. Ou utiliseropenssl x509 -text -in /path/to/cert
l'imprimer pour votre terminal.s23_clnt.c:588
. 2) éventuellement, si le serveur tombe en arrière à la plaine HTTP donnant un message d'erreur.J'ai eu ce problème lors de la configuration d'une nouvelle instance EC2. Je n'avais pas ajouté de HTTPS pour mon groupe de sécurité, et donc le port 443 n'a pas été ouvert.
Pour moi un nom DNS de mon serveur a été ajouté à /etc/hosts et il a été cartographié à l'adresse 127.0.0.1 qui a abouti à
Retrait de la cartographie de mon vrai nom DNS à l'adresse 127.0.0.1 résolu le problème.
Je répondre à cette même question. Le port 443 n'était pas ouverte dans Centos.
Vérifier le port 443 avec la commande suivante:
Dans la première ligne de /etc/httpd/conf.d/ssl.conf ajouter ces deux lignes:
Ce problème qui s'est passé pour moi, seulement dans des cas particuliers, quand j'ai appelé site web à partir de certains fournisseurs d'accès à internet,
J'ai configuré l'ip v4 dans un VirtualHost de configuration d'apache,
mais certains de routeur ip v6, et quand j'ai ajouté ip v6 de config d'apache le problème résolu.
Le problème que j'ai été confronté a été en environnement de serveur client. Le client a été d'essayer de se connecter sur le port http 80 mais je voulais le serveur proxy pour rediriger la demande vers port et de données a été https. Donc, fondamentalement, vous demandant des informations sécurisées sur http. Donc, le serveur doit avoir le port http 80 ainsi que le port client demande, disons
urla:1111\subB
.La question était de serveur d'hébergement de cela sur un autre port e,g
urla:2222\subB
; de sorte que le client a été d'essayer d'accéder à plus de 1111 a été la réception de l'erreur. Corriger le numéro de port doit résoudre ce problème. Dans ce cas, pour numéro de port 1111.