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

Spring Boot Java Discussion :

retour du lien de http en https des liens


Sujet :

Spring Boot Java

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut retour du lien de http en https des liens
    Bonjour, je test actuellement mon développement en production et je rencontre des problème de mixed-content.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SEC7111: [Mixed-Content] Le « https://front-end.fr » d'origine a été chargé dans un contexte sécurisé, mais a tenté de charger une ressource  non sécurisée à « http://mondomaine.fr/sommaires/1/matieres ».
    lorsqu'on demande une ressource voici ce que j'ai comme réponse json:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    {
      "_embedded" : {
        "matieres" : [ {
          "nameMatiere" : "Aquarelle",
          "route" : "aquarel",
          "urlMiniature" : "https://mondomaine.fr/depot/aquarel.jpg",
          "isParent" : true,
          "_links" : {
            "self" : {
              "href" : "http://mondomaine.fr/matieres/1"
            },
            "matiere" : {
              "href" : "http://mondomaine.fr/matieres/1"
            },
            "sommaire" : {
              "href" : "http://mondomaine.fr/matieres/1/sommaire"
            }
          }
        }, {
    je récupères les information de _links pour savoir ou chercher l'information, mais il sont en http, du coup je me retrouve avec des problèmes de cors.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    href" : "http://mondomaine.fr/matieres/1
    il a t'il une solution pratique de changer de http en https (au lieu de le faire avec du code ) avec spring boot ?
    merci de vos réponses

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Pour passe en https avec spring boot, tu dois déclarer créer une clé privé (avec keytool), tu déclares ensuite son path, type, alias et le mots de passe dans ton application.properties.

    A+.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    Merci de ta réponse ,

    voici a quoi ressemble ma config :

    Nom : reponse_https.png
Affichages : 399
Taille : 28,8 Ko

    je n'avais pas du tout pensé à cela car mon serveur se trouve derrière un proxy que je redirige vers un autre port(8181 et 8787 pour mes 2 webservices spring boot), mon serveur est déjà en https sous nginx.
    donc d'après ce tuto(si le tuto correspond bien à mon problème):

    https://dzone.com/articles/spring-bo...y-lets-encrypt

    il faut que je :
    1 - je récupère ma clef privé qui se trouve dans le dossier live de let'sencrypt
    2 - que je convertis cela en PKCS12
    3 - je rajoutes ces lignes dans application.proprieties

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    server.port: 8443
    security.require-ssl=true
    server.ssl.key-store:/etc/letsencrypt/live/mondomaine.com/keystore.p12
    server.ssl.key-store-password: <your-password>
    server.ssl.keyStoreType: PKCS12
    server.ssl.keyAlias: tomcat
    par contre à ce niveau je me demande si le port 8443 sera dispo ...en plus il me faut retrouver le mot de passe de la cléf privé .
    Cela ne vas pas générer un conflie entre le tunnel de sécurité ssl par nginx et le tunnel de sécurité que je dois déclarer par le tomcat interne de springboot que je lancer par la commande java -jar monapp.jar ?

    je test cela je vais voir ce que cela donne.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Re,
    Citation Envoyé par keokaz Voir le message
    il faut que je :
    1 - je récupère ma clef privé qui se trouve dans le dossier live de let'sencrypt
    2 - que je convertis cela en PKCS12
    3 - je rajoutes ces lignes dans application.proprieties
    Crée une clef avec keytool qui va déjà avec le jre.

    Citation Envoyé par keokaz Voir le message
    par contre à ce niveau je me demande si le port 8443 sera dispo ...
    Tu peux utiliser n'importe quel port, le 8443 est juste le port par défaut utilisé par tomcat pour le SSL.

    A+.

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    j'ai créer la cléf avec keytool(pour le moment on va dire qu'on va autosigner le certificat pour le test):
    Nom : keystor.png
Affichages : 356
Taille : 34,6 Ko

    keystore.p12, je l'ai mis dans le dossier ressources.

    Dans application.proprieties, j'ai copier ce code(le mots de passe que j' ai mis est tomcat):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    server.port=8181
    #config des identifiant MySQL ….
     
     
    # The format used for the keystore 
    server.ssl.key-store-type=PKCS12
    # The path to the keystore containing the certificate
    server.ssl.key-store=classpath:keystore.p12
    # The password used to generate the certificate
    server.ssl.key-store-password=tomcat
    # The alias mapped to the certificate
    server.ssl.key-alias=tomcat
    Puis j'ai fait un mvn package pour obtenir mon jar en local.

    Nom : package.png
Affichages : 359
Taille : 32,8 Ko

    par chance , je n'ai pas eu d'erreur ….

    j'ai uploader mon jar sur mon serveur, puis j'a lancer le jar, et je me retrouve avec l'erreur de port qui est déjà utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    ***************************
    APPLICATION FAILED TO START
    ***************************
     
    Description:
     
    The Tomcat connector configured to listen on port 8443 failed to start. The port may already be in use or the connector may be misconfigured.
     
    Action:
     
    Verify the connector's configuration, identify and stop any process that's listening on port 8443, or configure this application to listen on another port.
     
    2019-10-18 10:15:44.725  INFO 9906 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
    2019-10-18 10:15:44.730  INFO 9906 --- [           main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
    2019-10-18 10:15:44.733  INFO 9906 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
    2019-10-18 10:15:44.742  INFO 9906 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
    A ce niveau est t'il normal d'avoir l'erreur ?

    Dans le tuto que j'ai mis il indique le code pour configurer le connecteur:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    @Configuration
    public class ConnectorConfig {
     
      @Bean
      public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
          @Override
          protected void postProcessContext(Context context) {
            SecurityConstraint securityConstraint = new SecurityConstraint();
            securityConstraint.setUserConstraint("CONFIDENTIAL");
            SecurityCollection collection = new SecurityCollection();
            collection.addPattern("/*");
            securityConstraint.addCollection(collection);
            context.addConstraint(securityConstraint);
          }
        };
        tomcat.addAdditionalTomcatConnectors(getHttpConnector());
        return tomcat;
      }
     
      private Connector getHttpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8080);
        connector.setSecure(false);
        connector.setRedirectPort(8443);
        return connector;
      }
    }

    Ou je dois mettre ce fichier de configuration dans mon arbo maven ? n'importe où fera l'affaire ?

    je suppose que de devrais modifier cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        connector.setPort(8080); 
    en 
        connector.setRedirectPort(8181);
    J'ai tenter de créer le fichier connecteur config, mais je me retrouve avec des erreurs:

    Nom : Embedded.png
Affichages : 379
Taille : 34,9 Ko
    visual studio me propose 2 solutions(Lequel je dois choisir):

    Nom : err.png
Affichages : 352
Taille : 24,6 Ko
    Images attachées Images attachées   

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    Pour le moment, j'ai réussi obtenir la page https sans la class "ConnectorConfig",
    par contre si l'on se trompe de password ou une mauvaise configuration de application.proprieties on se retrouve avec "port déjà pris".
    Et j'ai fait le teste avec la commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    keytool -genkey -alias https-example -storetype JKS -keyalg RSA -keysize 2048 -validity 365 -keystore https-example.jks
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    server.ssl.key-alias=https-example
    server.ssl.key-store-type=JKS
    server.ssl.key-password=keytool
    server.ssl.key-store=classpath:https-example.jks
    Maintenant je vais essayer de voir si cela fonctionne en prenant la clé letencrypt de mon serveur.

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Citation Envoyé par keokaz Voir le message
    Maintenant je vais essayer de voir si cela fonctionne en prenant la clé letencrypt de mon serveur.
    Ne fait pas ça, la clé de letencrypt est une clé publique et celle de ton spring boot doit-être une clé privé.

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    merci de l'information
    j'ai rien changé et cela fonctionne maintenant en production et merci encore des réponses que tu m'a données.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. La CNIL autorise l'analyse du flux https des salariés par leur employeur
    Par Stéphane le calme dans le forum Actualités
    Réponses: 12
    Dernier message: 10/04/2015, 13h26
  2. Réponses: 13
    Dernier message: 09/02/2012, 14h10
  3. Retour de la croissance sur le marché des serveurs
    Par Gordon Fowler dans le forum Actualités
    Réponses: 3
    Dernier message: 02/12/2010, 17h37
  4. Capturer le retour vers mon site aprés avoir visité des liens externes
    Par ammouna24 dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 12/06/2009, 14h57
  5. Réponses: 6
    Dernier message: 14/04/2006, 16h35

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