Certificat for a localhost WebService

Bonjour,
J'ai créé un WebService qui tourne en localhost pour mes besoins de gestion de fichiers.
J'y ai ajouter le https.
L'appel du WS répond bien à mon url à partir d'une commande CMD (curl "https ...") et le WS fait ce que je lui demande.
J'aimerais pouvoir lancer la même commande à partir d'un browser mais là, il bloque car ma clé localhost est une clé auto-signée et non trustée.
Est-il possible d'obtenir un certificat pour cette clé localhost afin de lancer les url à partir d'un browser ?

Merci d'avance pour vos réponses
Carmelo

2 Likes

Bienvenue dans la Communauté Let's Encrypt, Carmelo :slightly_smiling_face:

Cela dépend des certificats approuvés par votre navigateur. Lorsque vous obtenez un certificat d'une autorité de certification de confiance (comme Let's Encrypt), le certificat d'autorité utilisé pour signer votre certificat est déjà approuvé par votre navigateur, ce qui permet à votre certificat d'être approuvé. Une telle autorité de confiance ne signera pas de certificat d'hôte local car il n'existe aucun moyen de prouver la propriété unique de l'hôte local. Cependant, vous pouvez simplement installer votre certificat auto-signé dans votre navigateur pour qu'il soit approuvé ou créer et installer votre propre certificat d'autorité, puis l'utiliser pour signer votre certificat d'hôte local.

1 Like

Bonsoir Griffin,

Merci la réponse :slight_smile:
Je vais vite tester ça et je vous tiens au courant.

2 Likes

Ça sonne bien, mon ami. :slightly_smiling_face:

1 Like

Bonjour Griffin,

J'ai fait certaines opérations mais le browser refuse toujours.
Voici la liste des opérations:

  • avec keytool, je crée la clé localhost.jks auto-signée contenant le certificat alias localhost
  • avec keytool, je fais un export de cette clé vers un fichier localhost.cer
  • Je place la clé dans le répertoire de démarrage de mon WebService.jar (et dans le fichier de connexion du jar)
  • Sans ça je n'obtiens même pas le message sur le browser (il ne voit pas du tout le localhost)
  • J'installe le certificat localhost.cer dans Windows via mmc.exe (console.msc)
    ---/ A ce niveau, le WS répond bien en ligne de commande CMD
  • Puis je lance l'url du WS localhost sur le 4443 (pour laisser le 443 libre vu qu'il est utilisé par Apache)
  • et j'obtiens l'erreur "votre connexion n'est pas sécurisée ..."
  • je clique-droit sur le triangle rouge à gauche du lien, puis certificat, j'y lis que le certificat est valide
  • sur l'onglet détail, je clique sur le bouton "copier vers un fichier", et je sauvegarde vers un nom de fichier.cer
  • j'ouvre un onglet sur Chrome et tape l'url : Chrome://settings
  • je vais dans la gestion des certificats et j'ajoute le certificat via "importer" et ce, dans le magasin de "Autorité de certification racines de confiance" et je l'ajoute . Par la même occasion, je me rends qu'apparemment, il s'y trouve déjà !?! Peut-être à cause du fait que je l'ai installé avec "console.msc" ?!
  • je quitte le browser via "Quitter" et redémarre.
  • résultat : j'ai toujours le même message "Votre connexion n'est pas privée"

j'aurais aimé vous envoyer des images mais je ne vois pas comment.

Faut peut-être que je précise que je me trouve à l'intérieur d'un "Intranet" et que mon pc est un pc de travail (avec toutes les sécurités nécessaires)

Merci d'avance pour votre aide

Carmelo

2 Likes

Je serais très curieux de savoir pourquoi le navigateur indique que la connexion n'est pas sécurisée. Je soupçonne que c'est parce que l'hôte dans l'URL que vous visitez ne correspond à aucun des SAN (probablement le seul SAN) dans le certificat. Par exemple, un certificat pour localhost ne correspondra pas à l'adresse IP de l'hôte dans https://127.0.0.1:4443/. Le nom dans le SAN et le nom dans l'URL doivent correspondre. Le port n'a pas d'importance.

1 Like

Bonsoir Griffin,

Tu veux dire que localhost n'est pas traduit par le broswer comme l'adresse https://127.0.0.1:4443 ?
Faudra-t-il alors mettre le nom de l'alias dans le certificat "127.0.0.1" au lieu de localhost ?

Merci et bonne soirée

Carmelo Peinado-Fernandez
Rue Richebé 44
7390 Quaregnon
0474/26.23.68

1 Like

Le navigateur prendra tout hôte qui apparaît dans la barre d'adresse et le comparera directement aux hôtes (SANs) dans le certificat qui lui a été servi. Donc, si vous tapez "https://localhost:4443/" dans votre navigateur, l'un des hôtes du certificat (éventuellement le nom commun) doit être explicitement "localhost". Cela ne fonctionnera pas si l'hôte du certificat est 127.0.0.1 dans ce cas. La situation inverse s'applique également avec "https://127.0.0.1:4443/" dans le navigateur et "localhost" dans le certificat. Pour être sûr, vous pouvez inclure à la fois "localhost" et "127.0.0.1" en tant qu'hôtes (SANs) dans le certificat.

Merci pour la réponse
Dans un certificat, il n'y a t'il qu'un seul alias ?

Carmelo Peinado-Fernandez
Rue Richebé 44
7390 Quaregnon
0474/26.23.68

1 Like

Si par "alias" vous entendez des "noms de sujet alternatifs" (SANs), un certificat peut inclure jusqu'à 100 SANs. Cela signifie qu'en utilisant un seul certificat, les URL de jusqu'à 100 noms d'hôtes différents (noms de domaine, noms de sous-domaine, adresses IP, hôte local) peuvent être sécurisées.

Merci Griffin,

Je vais explore ça
J'avoue que je suis encore novice en la matière.
Je cherche d'ailleurs désespérément un tutoriel ou une formation pour bien comprendre les tenants et aboutissants :wink:

Bonne fin de weekend

Carmelo Peinado-Fernandez
Rue Richebé 44
7390 Quaregnon
0474/26.23.68

1 Like