J'essaie de créer une connexion socket en utilisant python.Vérifiez Peer en python
Voici mon code python ...
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.settimeout(config['timeout'])
self.socket.connect((config['host'], config['port']))
self.ssl = ssl.wrap_socket(
self.socket,
certfile=config['certificate'],
keyfile=config['key']
)
Il ne fonctionne pas comme le certificat de serveur distant semble être auto-signé ou manquant du magasin de confiance. Je suis nouveau sur python et je n'arrive pas à comprendre comment désactiver verify_peer en python pour que la connexion fonctionne.
Je code de travail en php ...
$context = stream_context_create([
'ssl' => [
'verify_peer' => false,
'local_cert' => $config['certificate'],
'local_pk' => $config['key']
]
]);
$socket = stream_socket_client(
'ssl://secure.test.com:700',
$errno, $errstr, $config['timeout'],
STREAM_CLIENT_CONNECT, $context
);
Réglage 'verify_peer' => false
aide à établir la connexion. Comment puis-je faire quelque chose comme ça en python?
OpenSSL debug
openssl s_client -connect secure.test.com:700
verify error:num=20:unable to get local issuer certificate
verify return:1
verify error:num=21:unable to verify the first certificate
verify return:1
S'il vous plaît aider et suggérer. Merci
* "Réglage' verify_peer => false' aide à établir la Comment puis-je faire quelque chose comme ça en python? "* - Très mauvaise idée; voir [Le code le plus dangereux au monde: la validation des certificats SSL dans les logiciels sans navigateur] (http://crypto.stanford.edu/~dabo/pubs/abstracts/ssl-client-bugs.html). – jww
* "Cela n'a pas fonctionné car le certificat du serveur distant semble être auto-signé ou manquant dans le Trust Store ..." * - Lequel est-ce? Le cas d'utilisation affecte la réponse. Veuillez publier l'URL que vous utilisez pour vous connecter au serveur et publier la sortie de 'openssl s_client -connect: -tls1 -servername | openssl x509 -text -noout'. Faites-le en l'ajoutant à votre question en cliquant sur * Modifier * (et ne le postez pas en commentaire). Sinon, nous ne pouvons pas le reproduire et il n'y a pas assez d'informations pour vous aider à le résoudre. –
jww
@jww Merci pour votre aide. J'ai modifié la question avec plus de détails. J'obtiens cette erreur: 'verify error: num = 20: impossible d'obtenir le certificat de l'émetteur local' a déjà essayé de ré-acquérir le certificat actuel via une commande Linux' openssl s_client -connect secure.test.com: 700: ' – seoppc