Extension VSCODE et Certificat autosigné

J’ai pu faire le clean install sur Maven mais j’ai toujours la 401.
Dans les access logs de tomcat côté serveur je vois ceci

10.40.0.22 - - [07/Aug/2023:09:46:48 +0000] "GET /maven/org/mongodb/mongodb-driver/3.12.13/mongodb-driver-3.12.13.jar HTTP/1.1" 404 541
10.44.0.48 - - [07/Aug/2023:09:46:48 +0000] "GET /maven/com/github/luben/zstd-jni/1.5.5-1/zstd-jni-1.5.5-1.jar HTTP/1.1" 404 541

...

10.44.0.30 - - [07/Aug/2023:09:49:07 +0000] "GET /api/login?format=json HTTP/1.1" 401 58
10.44.0.30 - - [07/Aug/2023:09:52:02 +0000] "GET /api/login?format=json HTTP/1.1" 401 58

Je n’ai pas compris En “pur” Maven il n’y a pas de login sur /api donc là je pense qu’on parle à nouveau de l’extension ? Tant que ça ne compile pas correctement via un simple mvn clan compile ça ne sert à rien d’essayer de passer par un IDE

Mais sinon quand il y a un 401 sur /api/login c’est qu’il y a forcément un pb d’authentification = username et/ou password erroné. Sur l’extension il y a la possibilité de forcer la déconnexion et la reconnexion si on parle de ça c’est peut être la manière de régler ce pb.

Mais bon, pour tout ce qui concerne l’extension je vais laisser @germain t’accompagner car il y a plusieurs manière de s’en servir et je ne maitrise pas toutes ses subtilités internes.

Cf. plus haut, test fait avec CLI mvn = même pbs de de download de plugins Maven donc ce n’est à priori ni au niveau Simplicité, ni au niveau de l’extension VSCode

J’ai réglé le problème de proxy côté maven et pu faire un clean intall.
Mais quand je retourne sur VSCOde et que j’appelle “Initialise API file system” j’ai toujours une erreur 401.

[{
	"resource": "/c:/Users/pf05429/EAR/ear/pom.xml",
	"owner": "_generated_diagnostic_collection_name_#2",
	"code": "0",
	"severity": 8,
	"message": "Failed to read artifact descriptor for com.simplicite:simplicite-api:jar:sources:5.3-SNAPSHOT\n\norg.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for com.simplicite:simplicite-api:jar:sources:5.3-SNAPSHOT\r\n\tat org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:255)\r\n\tat org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:171)\r\n\tat org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.resolveCachedArtifactDescriptor(DefaultDependencyCollector.java:538)\r\n\tat org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.getArtifactDescriptorResult(DefaultDependencyCollector.java:523)\r\n\tat org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:410)\r\n\tat org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:362)\r\n\tat org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process(DefaultDependencyCollector.java:349)\r\n\tat org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:254)\r\n\tat org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:284)\r\n\tat org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:170)\r\n\tat org.apache.maven.project.DefaultProjectBuilder.resolveDependencies(DefaultProjectBuilder.java:227)\r\n\tat org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:200)\r\n\tat org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:124)\r\n\tat org.eclipse.m2e.core.internal.IMavenToolbox.readMavenProject(IMavenToolbox.java:88)\r\n\tat org.eclipse.m2e.core.internal.project.registry.DefaultMavenDependencyResolver.lambda$0(DefaultMavenDependencyResolver.java:70)\r\n\tat org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:394)\r\n\tat org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:275)\r\n\tat org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:214)\r\n\tat org.eclipse.m2e.core.internal.project.registry.DefaultMavenDependencyResolver.resolveProjectDependencies(DefaultMavenDependencyResolver.java:66)\r\n\tat org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refreshPhase2(ProjectRegistryManager.java:573)\r\n\tat org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.lambda$5(ProjectRegistryManager.java:481)\r\n\tat org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:394)\r\n\tat org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:275)\r\n\tat org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:479)\r\n\tat org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:362)\r\n\tat org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:314)\r\n\tat org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.configureNewMavenProjects(ProjectConfigurationManager.java:256)\r\n\tat org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.lambda$1(ProjectConfigurationManager.java:166)\r\n\tat org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:394)\r\n\tat org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:275)\r\n\tat org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:214)\r\n\tat org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.importProjects(ProjectConfigurationManager.java:139)\r\n\tat org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.importProjects(ProjectConfigurationManager.java:130)\r\n\tat org.eclipse.jdt.ls.core.internal.managers.MavenProjectImporter.importToWorkspace(MavenProjectImporter.java:233)\r\n\tat org.eclipse.jdt.ls.core.internal.managers.ProjectsManager.importProjects(ProjectsManager.java:148)\r\n\tat org.eclipse.jdt.ls.core.internal.managers.ProjectsManager.initializeProjects(ProjectsManager.java:111)\r\n\tat org.eclipse.jdt.ls.core.internal.handlers.InitHandler$1.runInWorkspace(InitHandler.java:246)\r\n\tat org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43)\r\n\tat org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)\r\nCaused by: org.eclipse.aether.resolution.ArtifactResolutionException: com.simplicite:simplicite-api:pom:5.3-SNAPSHOT failed to transfer from https://ear-dev.k8s-stage.grouperci.com/maven during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of simplicite has elapsed or updates are forced. Original error: Could not transfer artifact com.simplicite:simplicite-api:pom:5.3-SNAPSHOT from/to simplicite (https://ear-dev.k8s-stage.grouperci.com/maven): PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\r\n\tat org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:425)\r\n\tat org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:229)\r\n\tat org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:207)\r\n\tat org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:240)\r\n\t... 38 more\r\nCaused by: org.eclipse.aether.transfer.ArtifactTransferException: com.simplicite:simplicite-api:pom:5.3-SNAPSHOT failed to transfer from https://ear-dev.k8s-stage.grouperci.com/maven during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of simplicite has elapsed or updates are forced. Original error: Could not transfer artifact com.simplicite:simplicite-api:pom:5.3-SNAPSHOT from/to simplicite (https://ear-dev.k8s-stage.grouperci.com/maven): PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\r\n\tat org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.newException(DefaultUpdateCheckManager.java:225)\r\n\tat org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.checkArtifact(DefaultUpdateCheckManager.java:169)\r\n\tat org.eclipse.aether.internal.impl.DefaultArtifactResolver.gatherDownloads(DefaultArtifactResolver.java:574)\r\n\tat org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:484)\r\n\tat org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:402)\r\n\t... 41 more\r\n",
	"source": "Java",
	"startLineNumber": 1,
	"startColumn": 1,
	"endLineNumber": 1,
	"endColumn": 1
}]

Au temps pour moi, je n’avais pas le bon mot de passe :woman_facepalming:

Donc après avoir fait le “Initialize API file system” j’ai ceci dans mon explorer

image

Je ne trouve pas mes sources.
Est-ce que ça peut être dû à cette erreur dans le pom.xml ?

[{
	"resource": "/C:/Users/pf05429/AppData/Roaming/Code/User/globalStorage/simplicitesoftware.simplicite-vscode-tools/Api_RCIB/pom.xml",
	"owner": "_generated_diagnostic_collection_name_#2",
	"code": "0",
	"severity": 8,
	"message": "CoreException: Could not calculate build plan: Plugin org.apache.maven.plugins:maven-compiler-plugin:3.10.1 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-compiler-plugin:jar:3.10.1: ArtifactResolutionException: The following artifacts could not be resolved: org.apache.maven.plugins:maven-compiler-plugin:pom:3.10.1 (absent): Could not transfer artifact org.apache.maven.plugins:maven-compiler-plugin:pom:3.10.1 from/to central (https://repo.maven.apache.org/maven2): repo.maven.apache.org",
	"source": "Java",
	"startLineNumber": 27,
	"startColumn": 4,
	"endLineNumber": 27,
	"endColumn": 14
}]

A priori non. A nouveau ça semble un pb de téléchargement de plugin Maven (“Could not transfer artifact org.apache.maven.plugins:maven-compiler-plugin:pom:3.10.1”).

@germain peut être y-a-t-il une subtilité dans le cas du mode “API” (i.e sans clone Git) ?

@Emmanuelle, il serait intéressant de tester avec le mode avec clone Git du module (perso je ne me sert que de ce mode et je n’ai pas de pb Maven dans VSCode)

PS: par acquis de conscience j’ai testé avec mon VSCode local avec un module en mode “API” et je ne constate pas de pb:

Bon, je vais déjà essayer de me dépêtrer des problèmes d’artifacts et voir ce qui se passe ensuite !

Nan j’ai les mêmes soucis en mode GIT … proxy ou certificat ou les deux mais n’étant pas admin de mon poste c’est un peu compliqué à contourner.

Mais j’ai l’impression que c’est côté serveur le problème de certificat

Le /maven de l’instance sert des .pom et des .jar, tapes l’URL dans un navigateur tu verras. Ca n’agit pas en client d’autre chose. Donc s’il a un pb de certificat c’est du coté de VSCode.

Est-ce que ton instance est bien exposée en https:// ? Car si le SSL n’est pas configuré sur cette instance un appel en https:// depuis VSCode ne fonctionnera pas.

@germain tu confirmes que l’URL utilisée dans tous les cas c’est celle dans le pom.xml ? Si oui il faut peut être la forcer en http:// s’il n’y a pas de SSL configuré sur l’instance

Oui elle est bien en HTTPS.

A mon avis le pb est au niveau du plugin Maven de VSCode qui ne trouve pas tout seul votre certificat CA.

A la manière du workaround qu’on a trouvé pour notre extension Simplicité (qui est une solution en JS - car c’est ce qui exécute notre extension - et qui ne marche donc pas pour Maven qui s’exécute en Java), là il va falloir trouver une solution pour ce plugin, je pense que d’autres ont ce genre de pb.

EDIT: je pense que la solution c’est d’ajouter le certificat de votre CA dans les trusted certificates Java de la JVM qui exécute le plugin Maven au sein de VSCode

1 Like

Malheureusement sans les droits d’admin sur mon poste je ne peux pas :upside_down_face:
Je vais demander une autorisation

Peut être en utilisant une autre JVM que celle installée sur l’OS ?

Sur https://adoptium.net/ il est possible de downloader une JVM OpenJDK sous forme de simple ZIP à dezipper où on veut. Et ensuite il faut faire en sorte que cette JVM soit la seule connue de VSCode

1 Like

Je m’en suis sortie en pointant sur une copie de cacert dans un répertoire qui m’appartient.
Le clean install passe mais je n’ai toujours pas src ni resources, et toujours l’erreur dans le pom.xml :frowning:

[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------< com.simplicite.modules:RCIB >---------------------
[INFO] Building RCIB 1.3-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- clean:3.2.0:clean (default-clean) @ RCIB ---
[INFO] Deleting C:\Users\pf05429\AppData\Roaming\Code\User\globalStorage\simplicitesoftware.simplicite-vscode-tools\Api_RCIB\target
[INFO] 
[INFO] --- resources:3.3.1:resources (default-resources) @ RCIB ---
[INFO] skip non existing resourceDirectory C:\Users\pf05429\AppData\Roaming\Code\User\globalStorage\simplicitesoftware.simplicite-vscode-tools\Api_RCIB\resources
[INFO]
[INFO] --- compiler:3.11.0:compile (default-compile) @ RCIB ---
[INFO] No sources to compile
[INFO]
[INFO] --- resources:3.3.1:testResources (default-testResources) @ RCIB ---
[INFO] skip non existing resourceDirectory C:\Users\pf05429\AppData\Roaming\Code\User\globalStorage\simplicitesoftware.simplicite-vscode-tools\Api_RCIB\test\resources
[INFO]
[INFO] --- compiler:3.11.0:testCompile (default-testCompile) @ RCIB ---
[INFO] No sources to compile
[INFO]
[INFO] --- surefire:3.1.2:test (default-test) @ RCIB ---
[INFO] No tests to run.
[INFO]
[INFO] --- jar:3.3.0:jar (default-jar) @ RCIB ---
[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO] Building jar: C:\Users\pf05429\AppData\Roaming\Code\User\globalStorage\simplicitesoftware.simplicite-vscode-tools\Api_RCIB\target\RCIB-1.3-SNAPSHOT.jar
[INFO]
[INFO] --- install:3.1.1:install (default-install) @ RCIB ---
[INFO] Installing C:\Users\pf05429\AppData\Roaming\Code\User\globalStorage\simplicitesoftware.simplicite-vscode-tools\Api_RCIB\pom.xml to C:\Users\pf05429\.m2\repository\com\simplicite\modules\RCIB\1.3-SNAPSHOT\RCIB-1.3-SNAPSHOT.pom
[INFO] Installing C:\Users\pf05429\AppData\Roaming\Code\User\globalStorage\simplicitesoftware.simplicite-vscode-tools\Api_RCIB\target\RCIB-1.3-SNAPSHOT.jar to C:\Users\pf05429\.m2\repository\com\simplicite\modules\RCIB\1.3-SNAPSHOT\RCIB-1.3-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  11.006 s
[INFO] Finished at: 2023-08-08T14:40:04+02:00
[INFO] ------------------------------------------------------------------------

OK pour le certificat CA.

Le test de base à faire reste :

  1. cloner le repo Git du module : git clone https://<user>:<password>@<url>/git/<module>
  2. vérifier que le clone est complet (le répertoire src avec les *.java en particulier)
  3. mvn clean compile

Je ne vois pas de raison que ça ne marche pas => download des dépendances indiquées par le /maven de l’instance + compilation des sources Java (si ça dit “No sources to compile” c’est qu’il n’y a pas de sources Java dans ton module, en tout cas dans le commit de ce module qui correspond au clone)

  • Si ça ne marche pas, pas la peine d’essayer quoi que se soit sur VSCode
  • Si ça marche, faire la même chose via VSCode et ses extensions ne devrait pas poser de pb outre des histoires de “tuyauterie” => je laisse @germain t’assister si besoin

Alors sur le clone GIT j’ai bien tous les répertoires et le clean install est OK.

[INFO] Scanning for projects...
[INFO]
[INFO] --------------------< com.simplicite.modules:RCIB >---------------------
[INFO] Building RCIB 1.3-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- clean:3.2.0:clean (default-clean) @ RCIB ---
[INFO] Deleting C:\Users\pf05429\EAR\ear\target
[INFO]
[INFO] --- resources:3.3.1:resources (default-resources) @ RCIB ---
[INFO] Copying 23 resources from resources to target\classes
[INFO]
[INFO] --- compiler:3.11.0:compile (default-compile) @ RCIB ---
[INFO] Changes detected - recompiling the module! :source
[INFO] Compiling 82 source files with javac [debug target 11] to target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  24.841 s
[INFO] Finished at: 2023-08-08T15:38:32+02:00
[INFO] ------------------------------------------------------------------------

Donc c’est sûrement à l’appel du Api initialize que je n’arrive pas à ramener les sources. Ou y a-t-il une autre commande à passer ensuite ?

D’accord :slight_smile:
Merci à tous deux pour votre support !