Les certificats sont un moyen d'aider les autres à vérifier que l'entité qui présente le certificat est bien celle qu'elle prétend être. Ainsi, lorsque vous vous connectez à un serveur et que celui-ci vous renvoie un certificat, vous pouvez être sûr que le serveur est bien le serveur et non un imposteur.
La puissance du certificat est due à l'émetteur (également appelé Autorité de Certification ou AC). Si vous faites confiance à l'émetteur, vous faites confiance aux certificats qu'il émet. Une liste des principales autorités de certification est généralement présente dans le système d'exploitation lui-même, de sorte que l'obtention d'un certificat et sa vérification sont transparentes pour le développeur de l'application, en particulier lorsque vous utilisez des bibliothèques.
Je reprends vos arguments un par un :
Je sais que nous avons besoin de certificats pour que la connexion TLS fonctionne. L'un est détenu par le serveur et l'autre par le client (moi).
Vous n'avez pas posé de question, voici quelques informations générales. En général, la vérification du serveur suffit. Dans les environnements de haute sécurité, la vérification du client est également effectuée et dans ce cas, vous (c'est-à-dire le client) avez besoin d'un certificat d'une autorité de certification pour vous vérifier auprès du serveur. Mais dans la plupart des applications, la vérification du serveur est suffisante.
Il est similaire aux formes normales dans la normalisation des SGBDR. Même si les formes normales sont aussi strictes que la 6NF, les SGBDR sont généralement normalisés jusqu'à la 3NF.
Comment puis-je vérifier que ma connexion est sécurisée ?
En général, si vous utilisez une bibliothèque bien connue (comme curl ou openLDAP), il suffit d'appeler ses méthodes de connexion sécurisée. Il est très peu probable que vous ayez appelé une fonction que la bibliothèque prétend être sécurisée mais qui s'avère être une farce.
Pour vous en assurer, vous pouvez examiner votre trafic avec le serveur. Wireshark est souvent utilisé pour l'analyse du trafic réseau.
Où puis-je voir les certificats ou ne pas les voir du tout ?
Dans la plupart des cas, vous ne voyez pas les certificats. Tout ce que vous avez à faire, c'est d'indiquer à votre bibliothèque le degré de rigueur de la vérification. Elle s'occupera du reste, souvent en levant une exception ou en enregistrant une erreur en cas de problème avec le certificat.
Si vous utilisez un certificat client, vous devez le conserver sur le système de fichiers et y faire pointer votre bibliothèque. Il s'agit généralement d'un fichier .pem.
Dois-je générer manuellement des certificats à partir du serveur et les utiliser ?
Non. Pour les certificats de serveur, il est de la responsabilité du serveur de vous fournir un certificat valide. Tout ce que vous avez à faire est de vérifier que le certificat envoyé par le serveur provient d'une autorité de certification établie - ce qui, comme indiqué précédemment, est généralement une étape transparente pour le développeur qui utilise la bibliothèque.
Dans les cas où vous ne vous en souciez guère ou lorsque vous voulez commencer à coder et que l'autorité de certification n'a pas encore délivré de certificat pour vous, vous pouvez programmer le serveur pour qu'il fournisse à ses clients un certificat auto-signé et programmer les clients pour que la vérification soit moins stricte.
Un certificat auto-signé n'a que peu de valeur en termes de sécurité. C'est comme si un serveur disait : "Hé, je vous dis que je suis l'homme à qui vous voulez parler". Ce n'est manifestement pas suffisant. Il faut qu'une tierce personne (c'est-à-dire l'autorité de certification), en qui vous avez pleinement confiance, confirme qu'il s'agit bien de la personne à laquelle vous vouliez vous adresser.