Bonjour,

Au experts mongodb, j'ai un serveur de test mongo 4.0 configurer en TLS SNI

j'essaye de me connecter en direct sur mon pc, ca marche, j'échange avec le serveur mongodb

Le certificat est auto signer, côté client je bypass le controle du certificat serveur, pour des tests

mais si j'installe sur un serveur linux, mon client, il ne voit pas mon proxy, il semble ne pas
utiliser le http.proxyHost, http.proxyPort, vu qu'il a son propre protocole mongodb://
idem avec http_proxy, https_proxy au niveau environnement

la cnx se termine en timeout


Comment faire pour que mon client mongo passe par le proxy pour atteindre serveur, j'ai regardé pas mal de doc, c'est très pauvre concernant ce sujet.

Merci à vous pour vos infos ou vos idées

Exemple

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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
  String connectionString="mongodb://mongoserver:443/madb?ssl=true";
 
    final SSLContext sslContext;
 
    try {
      sslContext = SSLContextBuilder.create()
        .loadTrustMaterial(null, (chain, authType) -> true)
        .build();
      CodecRegistry pojoCodecRegistry = fromRegistries(
        MongoClientSettings.getDefaultCodecRegistry(),
        fromProviders(PojoCodecProvider.builder().automatic(true).build())
      );
      MongoClientSettings settings = MongoClientSettings.builder().applyConnectionString(new ConnectionString(connectionString))
        .applyToSslSettings(builder -> builder.context(sslContext).invalidHostNameAllowed(true))
        .codecRegistry(pojoCodecRegistry)
        .build();
//
      try (MongoClient mongoClient = MongoClients.create(settings)) {
        List<Document> databases = mongoClient.listDatabases().into(new ArrayList<>());
        databases.forEach(db -> System.out.println(db.toJson()));
        assertNotNull( databases.toString());
      }
      catch ( Exception e ){
        e.printStackTrace();
        fail();
      }
 
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
      fail();
    } catch (KeyManagementException e) {
      e.printStackTrace();
      fail();
    } catch (KeyStoreException e) {
      e.printStackTrace();
      fail();
    }
même chose en ajoutant sur le serveur http_proxy=https://proxy:3128 ; https_proxy=https://proxy:3128 ; il s'en fou, j'ai cnx timeout

sur mon pc en dicret sur le serveur ca fonctionne bien, meme si j'indique un proxyHost,proxyPort totalement bidon, il s'en fou