IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AngularJS Discussion :

Connection à un WebService https avec un certificat auto-signé


Sujet :

AngularJS

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 15
    Points : 10
    Points
    10
    Par défaut Connection à un WebService https avec un certificat auto-signé
    Bonjour,


    J'ai mis en place un Web Service avec une connexion en https. Le certificat est autogénéré et je pense que c'est là mon probleme. En effet quand je veux me connecter en angularJS avec le code ci dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      $http({
              method: 'GET',
              url: ' https://Mon-serveur/WFCContrat.svc/TestConnection',
              crossDomain: true
            }).success(function(result,status){
              prov=result.data;
              deferred.resolve(prov);
            }).error(function(data,status){
              console.log("erreur de statut"+status+"et"+data)
              deferred.reject('données non recupérée');
            });
            return deferred.promise;
          };
    j'ai une erreur syntax error JSON parse unexpected end of data at line 1 column 1 of json data

    or cette erreur n' a pas lieux dans un navigateur une fois que j'ai fait une exception de sécurité avec le même URL
    et je me connecte depuis mon application à un autre Web service non https sans probleme.

    Ma question est donc comment faire pour que AngularJS concidère mon certificat autogénéré comme fiaible?
    Merci à tous

  2. #2
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Ça se joue dans ton navigateur, pas dans Angular. Importe ton certificat dans le magasin de certificats de ton navigateur.

    Ceci dit, cette solution n'est pas viable en production. Ton certificat doit dépendre d'une chaîne existante dans les navigateurs.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Bonjour Marco46, tout d'abord merci de ta réponse.

    Effectivement vue comme celà ça n'est pas viable en production d'autant qu'à terme l'objectif est de déployer sur tablette dans ce cas il faudrait donc que j'importe le certificat dans le magasin de certificat du navigateur la tablette ?

    Ou bien j'ai pas eu la bonne intuition et ce n'est pas la que ce situe le problème. Mais comment avoir directement la valeur de retour de $http.
    Quelle pourrait être les autres causes ?
    J'avais notamment vu une solution suggérant que la valeurs de retour (ici result) contiendrait toute la réponse entête inclus et qu'il faudrait alors faire result.data pour accéder aux données.
    J'ai testé mais sans succès.

    Je vais tenté d'observer mon flux avec Wireshark pour voir ce qui passe réellement.

    Merci

  4. #4
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Commence déjà par fonctionner en http et non en https. Ensuite tu pourras essayer de chiffrer.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Ça fonctionnait en http. Mais sur un autre serveur (de test) sur le serveur sur lequel je l'héberge maintenant seul le https est autorisé. Donc je suis obligé de faire fonctionner en https maintenant.

    J'ai essayé de le passer à Wireshark je vois que le serveur répond mais je ne vois pas son contenu dans wireshark. J'ai par ailleurs récupéré le Json que mon service renvoi et je l'ai passé au validateur il est correcte. Enfin dans le navigateur dans la console dans Réseau j'ai les entêtes dans la rubrique En-têtes j'ai un champ Content-Length:"12" ce qui veut dire qu'il contient bien une réponse. Bref je suis perdu... As-tu un avis sur la question ?

    Ci-dessous une capture d'écran :
    Nom : capture1.png
Affichages : 753
Taille : 46,0 Ko

    Merci d'avance.

  6. #6
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Tu as essayé d'insérer le certificat racine utilisé pour créer le certificat du serveur dans ton navigateur ?
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Non je n'ai pas essayer, mais j'ai trouvé une solution il faut activer le cross plateform sous Chrome il existe un plugin pour cela Allow Cross Plateform Origin. Car les paramètre du navigateur sont prioritaire sur ce de l'application donc meme s'ils sont actif dans l'application chrome bloque. Mais j'ai maintenant un autre problème... Mon certificat étant auto signé ionic lève une exception et refuse la connexion (j'abouti à un 404 not found). Une idée éventuellement ?

    PS : pour activer le Cross Plateform origin dans l'application, placer dans app.config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      .config(function ($httpProvider) {
        delete $httpProvider.defaults.headers.common['X-Requested-With'];
      })

  8. #8
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    si ta page Angular est en http => http://Mon-serveur/monAppliAngular.
    et que dans le code tu utilise url: 'https://Mon-serveur/WFCContrat.svc/TestConnection',
    Alors les deux connexions sont considéré comme ne venant pas du même site. tu as donc un problème de Cross Origin (CORS)

    deplus tu as une erreur dans ton code il y a une espace dans ton url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    url: ' https://Mon-serveur/WFCContrat.svc/TestConnection'
    ----^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $http({
              method: 'GET',
              url: ' https://Mon-serveur/WFCContrat.svc/TestConnection',
              crossDomain: true
            }).success(function(result,status){
              prov=result.data;
              deferred.resolve(prov);
            }).error(function(data,status){
              console.log("erreur de statut"+status+"et"+data)
              deferred.reject('données non recupérée');
            });
    A+JYT

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/03/2016, 16h36
  2. Réponses: 1
    Dernier message: 05/11/2013, 17h35
  3. Connexion SSL avec certificat auto-signé
    Par hornetbzz dans le forum Apache
    Réponses: 5
    Dernier message: 23/06/2010, 00h49
  4. Réponses: 1
    Dernier message: 16/05/2010, 11h12
  5. Prism et https avec certificat auto signé
    Par wodel dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 23/03/2008, 10h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo