En plus de @ pascals-Thivent excellente de réponse:
Le mot de passe keystore a deux objectifs - si non fourni, keytool
refuse de vous laisser remplacer le contenu du magasin avec un nouveau contenu par exemple en supprimant des entrées de certificat existantes ou en ajoutant de nouvelles.
Bien sûr, si vous avez un accès en écriture pour mettre à jour le fichier keystore en utilisant keytool
(ce n'est pas setuid), vous pouvez remplacer le contenu en utilisant un autre outil qui n'a pas vérifié le mot de passe. Et nous savons que le magasin et son format est lisible sans mot de passe, donc nous pouvons probablement écrire ce que nous voulons là-bas.
C'est là qu'intervient le mot de passe de vérification. Lorsque les entrées de magasin sont écrites, le mot de passe de magasin fourni est utilisé pour calculer un condensé du contenu du magasin, tel que salé par le mot de passe. Il s'agit d'un hachage/condensé unidirectionnel, donc sans le mot de passe, vous ne pouvez pas vérifier si le contenu du magasin a été altéré ou non. De même, une personne malveillante qui ne connaît pas le mot de passe ne peut pas non plus modifier le contenu du magasin et produire le digest-hash qui serait produit par ce mot de passe.C'est pourquoi lorsque vous indiquez no-password, keytool
vous avertit qu'il ne peut pas vérifier que le magasin n'a pas été falsifié. Si vous fournissez un invalide mot de passe ou le magasin a été falsifié, vous obtiendrez un message différent:
Enter keystore password: keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
keytool
n'a pas pu recréer le hachage existant digest à partir du courant stocker le contenu et le mot de passe que vous avez fourni, de sorte que le mot de passe est incorrect, ou le fichier de clés est compromis - keytool
ne peut pas dire, mais il suppose que vous ou le logiciel de lecture du magasin sait.
Notez que si le terme keystore est généralement utilisé, il se réfère également à keystores et clés certifiées. Moins généralement, un keystore est le plus souvent un magasin d'identité et contient des identités et leurs clés privées secrètes, telles qu'utilisées par exemple. par un serveur exécutant HTTPS. Un truststore contient plus souvent uniquement des clés publiques et pas de clés privées, donc pas de secrets, mais il est important de déterminer quelles identités un client fait confiance.
@Pascal, oui. Le serveur que j'utilise ne possède pas de certificat CA, il a donc besoin d'un fichier de clés certifiées pour qu'il puisse effectuer une authentification SSL pour le serveur. – sixtyfootersdude
Je ne comprends pas non plus pourquoi un mot de passe est requis pour le TrustStore, qui est la partie client de SSL. Plus précisément, lorsqu'une AC n'est pas impliquée. Avez-vous réussi à résoudre cela? –