Je suis en train de réécrire certaines technologies existantes qui utilisaient jadis les bibliothèques de RSA Security dans OpenSSL, mais je commence à rencontrer quelques problèmes. Actuellement, tout le code de vérification de certificat semble fonctionner sans accroc, jusqu'à ce que j'appelle SSL_connect().SSL_connect() produit un échec de vérification de certificat
Avant, l'appel à SSL_connect() produisait SSL_ERROR_WANT_READ.
Une réponse à ce problème sur un autre forum m'a suggéré que SSL_connect() devrait être appelé jusqu'à ce qu'il cesse de produire des erreurs SSL_ERROR_WANT_READ. Unforunately, cela ne produit quelque chose de plus déroutant:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
même si SSL_CTX_load_verify_locations() réussit. Quelqu'un a-t-il une idée de la raison pour laquelle une erreur de vérification ne serait pas enregistrée avec les méthodes de certificat et attende que SSL_connect() soit déclenché?
Merci pour la réponse, mais je pense que je suis encore un peu confus. Comment puis-je "accepter un certificat"? J'ai essayé d'utiliser SSL_VERIFY_NONE dans mon appel de méthode SSL_CTX_set_verify(), mais je ne pense pas que ce soit la route que je veux prendre. De plus, comment attacher un rappel à l'appel SSL_CTX_load_verify_locations()? Je pensais qu'il n'acceptait pas une fonction de rappel. er, au moins en C++ ~ –
@ kelly.dunn: J'ai ajouté quelques exemples de code qui peuvent probablement aider. Je ne comprends pas votre remarque sur les fonctions de rappel et 'C++': Vous pouvez écrire et utiliser les callbacks 'C' dans' C++ 'sans aucun problème. Veillez juste à spécifier une fonction, ou une méthode ** static **, pas une méthode (leurs signatures diffèrent, en raison du paramètre caché 'this'). – ereOn
Oh j'étais juste confus quant à l'endroit où vous disiez d'attacher la fonction de rappel ~ J'ai oublié que SSL_set_verify() accepte un paramètre final. Merci beaucoup! Je l'implémenterai sous peu et je verrai si cela aide: D –