0

Je suis en train d'écrire un petit serveur proxy SSL et continue d'obtenir ssl.SSLError: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] sslv3 alert certificate unknown (_ssl.c:661) à partir d'un client d'application Android, mais pas un navigateur. J'ai défini ssl.CERT_NONE. Voici mon code de test:erreur de certificat pyssl inattendue

SSLcontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23) 
SSLcontext.load_cert_chain('server.crt', 'server.key') 
SSLcontext.verify_mode = ssl.CERT_NONE 
SSLcontext.check_hostname = False 

s = socket.socket() 
s.bind(('127.0.0.1', 443)) 
s.listen(5) 

c = s.accept()[0] 
c = SSLcontext.wrap_socket(c, server_side = True) 
print c.recv(1024) 

Est-ce à cause du certificat épingler sur l'application Android ou je fais quelque chose de mal?

Répondre

0

Je positionniez ssl.CERT_NONE

Cela n'affecte pas comment le client vérifie le certificat du serveur du tout. Le serveur ne peut pas ordonner au client de ne pas vérifier le certificat et cela constituerait un sérieux problème de sécurité si le serveur pouvait le faire.

SSLV3_ALERT_CERTIFICATE_UNKNOWN ... à partir d'un client Android app mais pas un navigateur.

On ne sait pas quel type de certificat vous utilisez ici. S'il s'agit d'un fichier auto-signé, vous l'avez probablement déjà ajouté au navigateur ou ajouté une exception explicite, mais vous ne l'avez pas fait pour l'application Android. S'il s'agit d'un certificat émis par une autorité de certification publique, il vous manque probablement les certificats de chaîne. Les navigateurs de bureau fonctionnent souvent autour de ce problème côté serveur alors que la plupart des autres clients ne le font pas.

+0

J'ai utilisé un certificat auto-signé. Je l'ai également ajouté à mon navigateur et mon téléphone Android. La raison pour laquelle je suis confus ici est que, comme je l'ai googled SSLV3_ALERT_CERTIFICATE_UNKNOWN' signifie que mon code python rejette le certificat du client pas l'inverse. – logicalway

+0

@logicalway: non, le client obtient le certificat du serveur, ne l'aime pas et renvoie cette alerte au serveur qui annule alors la prise de contact et affiche l'alerte qu'il a reçue. Ainsi, en quelque sorte votre client Android n'aime pas le certificat mais on ne sait pas pourquoi - trop peu d'informations sur le client et le certificat et comment vous l'avez ajouté. –