Extension VSCODE et Certificat autosigné

@Germain ça te dit quelque chose ?

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.

Je viens de reproduire de mon côté, je confirme que c’est un bug.

Concernant les problèmes d’artefacts, je ne pense pas que l’extension en soit la cause. Avez-vous pu regarder au niveau de vos paramètres proxy ?

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 !

Il s’agit d’un bug que j’ai pu reproduire sur certains modules et pas sur d’autres. Je continue d’investiguer.

En tout cas, comme l’a dit David, le mode git ne devrait lui pas avoir ce genre de problème, et cela nous permettra de déterminer si le problème d’artefact provient du mode API ou non.

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.

Oui l’URL provient bien du pom.xml. En revanche il faut bien penser à relancer vscode pour que l’extension rafraichisse l’URL.

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