Des certificats numériques valides sont-ils nécessaires sur les clients (Java, C ++, etc.) pour établir des connexions https avec succès?

StackOverflow https://stackoverflow.com/questions/1001078

  •  05-07-2019
  •  | 
  •  

Question

Je prévois de mettre en place un petit programme autonome qui enverra une requête https à un serveur. Est-ce que cela nécessite un certificat SSL valide dans le client? Comment fonctionne la négociation SSL dans ce cas? Existe-t-il des problèmes de sécurité dans le client sans certificat SSL?

Était-ce utile?

La solution

Hormis le cryptage du trafic réseau, HTTPS est normalement utilisé pour authentifier le serveur. Autrement dit, pour donner aux clients des informations rassurantes sur le propriétaire du serveur, etc. Pour que cela fonctionne, le client doit inspecter la chaîne de confiance dans le certificat publié par le serveur. Pour que cela se produise automatiquement, un certificat doit être installé sur la machine cliente, qui décrit une autorité de certification ayant émis le certificat du serveur. Normalement, ces certificats se trouvent sur votre ordinateur dans un magasin appelé "Autorités de certification racines de confiance". et la plupart des systèmes d’exploitation sont livrés avec un ensemble d’autorités de certification communes déjà installées.

En outre, de nombreux serveurs Web offrent une fonctionnalité permettant au client de s’authentifier auprès du serveur en fournissant un certificat client. Le serveur Web peut inspecter le certificat provenant du client et le mapper sur un ensemble d'autorisations sur le serveur. Cette " authentification client " n'est pas nécessaire pour une session HTTPS active, mais il ne s'agit que d'une option.

En bref, vous n'avez pas besoin de certificat sur le client, mais vous voudrez probablement vouloir disposer d'un certificat d'autorité de certification racine afin de valider l'identité du serveur. . Si vous ne possédez pas ce certificat, il vous sera impossible de faire confiance au serveur (à moins que vous n’ayez une autre bonne raison de le faire), mais vous pouvez quand même choisir d’échanger des données avec lui.

Autres conseils

Si vous souhaitez en savoir plus sur la négociation HTTPS et ce qui est négocié, je vous recommande vivement de regarder cet excellent article sur moserware

http://www.moserware.com /2009/06/first-few-milliseconds-of-https.html

Un certificat client n'est requis que si le serveur en requiert un. Un certificat client permet au serveur d'authentifier le client, mais cela n'est utile que si le serveur dispose d'une liste de tous les clients autorisés. Ce n’est généralement pas le cas avec un serveur Web. Il est donc très rare qu’ils aient besoin de certificats clients.

Lorsqu'il est présent, le certificat côté client n'affecte pas l'établissement du canal sécurisé. (Seul le certificat du serveur est requis pour cela et l'ajout d'un certificat client au mixage ne change pas le processus.) Une fois qu'un canal sécurisé est établi, le serveur utilisera le certificat du client pour authentifier le client (généralement en comparant les données publiques du client). clé ou nom avec une liste de clients autorisés).

Vous n'avez pas besoin d'un certificat pour établir une connexion HTTPS, mais vous devez le faire si vous voulez savoir avec qui vous communiquez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top