SSL_connect et SSL_ERROR_SYSCALL
Ne SSL_connect()
en charge ssl v3?
La raison pour laquelle je suis demander ce, tout en accédant au site :
https://secure53.onlineaccess1.com
- Je obtenir une valeur de retour pour SSL_connect(ssl)
comme <0 et SSL_get_error()
5 et ERR_get_error() 0. De sorte que le résultat final est que je trouve que depuis SSL_get_error()
est de 5,
SSL_ERROR_SYSCALL
Quelques I/O erreur s'est produite. OpenSSL erreur de la file d'attente peut contenir plus d'informations sur l'erreur. Si l'erreur de la file d'attente est vide (c'est à dire
ERR_get_error() renvoie 0), ret peut être utilisé pour en savoir plus sur l'
erreur: Si ret == 0, une des expressions du FOLKLORE a été observé que viole le protocole. Si
ret == -1, le BIO a signalé une erreur d'e/S (pour socket d'e/S sur
Les systèmes Unix, consulter errno pour plus de détails).
Et depuis ERR_get_error()
retourne 0, it means an EOF was observed that violates the protocol.
Mais est-ce à dire qu'il n'est pas de soutenir sslv3?
J'ai essayé de l'url dans la ligne de commande à l'aide de curl et j'ai eu la force v3 pour qu'il fonctionne comme ceci :
curl -3 -v https://secure53.onlineaccess1.com
Et est-il un moyen de corriger cette erreur?
- À compter d'aujourd'hui (Mai 2015), le site ne supporte TLS 1.0 et supérieures.
Vous devez vous connecter pour publier un commentaire.
J'ai été en utilisant
SSLv23_method()
pour démarrer la connexion. Mais ma meilleure supposition est que le serveur ne comprend pas sslv2. Puisque cette méthodewill send out SSLv2 client hello messages and will indicate that it also understands SSLv3 and TLSv1
, le serveur n'a pas compris ce que je voulais et a fermé la connexion avec unEOF
.J'ai donc essayé d'utiliser
SSLv3_method()
pour se connecter à ce serveur et cela a fonctionné. Donc, ce que je suis en train de faire maintenant est d'essayer de se connecter avecSSLv23_method()
et si elle échoue avec unSSL_ERROR_SYSCALL
pourSSL_get_error()
et un0
pourERR_get_error()
, je viens de réinitialiser la connexion et de recommencer à nouveau avecSSLv3_method()
. Pas la meilleure façon, je sais. Mais il fonctionne.Comme trouvé dans la page de man:
Ainsi, en fonction de votre version d'openSSL en cours d'utilisation,
lors de l'utilisation de SSLv23_client_method(), le client va essayer de négocier la plus haute couche de protocole qu'il peut trouver en commun avec le serveur.
Il est plus probable que votre serveur ne supporte pas TLSv1.0 ou supérieur.
Je voudrais essayer le suivant:
effectivement essayer de négocier avec SSLv3 et avec d'éventuels secours de SSLv2
Pas. Il est dit, dans ce cas, vous devriez consulter
ret
(l'emphase est mienne):ret
a été transmis àSSL_get_error()
doncret
est le code de retour de l'original de votreSSL_connect()
appel. Vous avez déclaré que vous avez obtenu une valeur de retour <0 deSSL_connect()
. Si c'est de -1, et vous êtes sur un système unix, vous devez être consultingerrno
pour savoir ce qui s'est passé (l'emphase est mienne):