2010-12-10 7 views
1

Ceci est mon premier article sur stackoverflow. J'espère que je ne dérange personne ... :)
J'ai travaillé avec gSOAP se connecter à un http-webservice pour mon iPhone App pendant un moment maintenant. Maintenant j'essaye de swith à un https-webservice. J'ai inclus openssl dans le projet et ajouté le compileflat -DWITH_OPENSSL. Build & Run fonctionne mais malheureusement openssl ne me laisse pas vérifier le certificat webservers.
Mise DEBUG-MODE, je trouve qu'il ya un problème avec le certificat de webservers:gSOAP et OpenSSL sur iPhone

SSL vérifier l'erreur ou d'avertissement avec certificat en profondeur 1: impossible d'obtenir certificat local certificat de l'émetteur émetteur/C = US/O = VeriSign, Inc./OU=Class 3 Certification primaire publique autorité de certification sous réserve /O = VeriSign Trust réseau/OU = VeriSign, Inc./OU=VeriSign international serveur CA - classe 3/OU = www.verisign.com/CPS Incorp.by Ref. . RESPONSABILITÉ LTD (c) 97 VeriSign

Vérification avec SSL Shoppers SSL Checker résultats dans:

Le certificat doit être approuvé par tous les principaux navigateurs web (tous les certificats intermédiaires corrects sont installés).

Des idées sur la façon de résoudre ce problème?

BR

Martin

Répondre

0

bien, parfois RTFM aide vraiment :)

Section 19.20 (clients sécurisés SOAP avec HTTPS/SSL) se lit comme suit: « Pour désactiver l'authentification du serveur à des fins de test, utilisez la suivant: "

if (soap_ssl_client_context(&soap, 
    SOAP_SSL_NO_AUTHENTICATION, 
    NULL, 
    NULL, 
    NULL, 
    NULL, 
    NULL 
    )) 
{ 
    soap_print_fault(&soap, stderr); 
    exit(1); 
} 

Unfortunatly option -DSOAP_DEBUG lit encore" SSL vérifier l'erreur ou d'avertissement avec certificat en profondeur 1: incapable de ge t certificat d'émetteur local ". Quoi qu'il en soit, cela fonctionne maintenant.

0

La désactivation de l'authentification n'est pas la bonne solution. Je suppose que vous ne définissez pas le chemin du fichier de certificats de CA qu'utilise openssl pour faire confiance aux autorités de certification.

soap_ssl_client_context (& soapObject, SOAP_SSL_DEFAULT, NULL, NULL, cacerts.pem, NULL, NULL))

vous pouvez obtenir cacerts.pem de mozilla. Si votre application ne permet que la connexion à un site Web, vous devez simplement laisser le hachage pour l'autorité de certification à laquelle le certificat de site Web est émis et supprimer tous les ca inutiles du fichier pem.