0

Pour répondre à nos exigences de sécurité internes, j'ai écrit un client Java qui utilise des certificats pour s'authentifier mutuellement auprès du serveur. Cependant, pour obtenir le certificat dans un SSLContext, je dois fournir un mot de passe au keystore et à la confiance. Le mot de passe est en texte de plainte dans le code, ce qui est également contraire à nos exigences.Comment éviter d'avoir keystore/trustore mot de passe en texte brut dans la base de code?

Existe-t-il un moyen d'éviter que les mots de passe keystore/truststore apparaissent en texte brut dans le code? J'ai essayé des réponses sur Stack Overflow qui suggèrent de créer un magasin sans mot de passe et/ou de charger un certificat directement dans le SSLContext, mais l'authentification échoue lorsque j'essaie ces méthodes.

+1

Vous n'avez pas besoin de fournir un mot de passe au fichier de clés certifiées. À un moment donné, vous devez faire confiance à l'opérateur. La solution habituelle à cela est la sécurité physique via une carte d'accès. – EJP

Répondre

1

Généralement, les certificats et les fichiers de clés certifiées ne contiennent pas d'informations qui doivent être gardées secrètes. La seule chose qui doit être gardée secrète est la clé privée qui est contenue dans le keystore. Protéger le keystore avec un mot de passe, c'est comme mettre une clé dans un coffre-fort et verrouiller ce coffre-fort avec une seconde clé - cela n'aide donc pas vraiment. Quoi qu'il en soit, vous pouvez lire le mot de passe d'un fichier (ressource) que vous ne déposez pas dans votre VCS et laissez au déploiement le soin de fournir ce fichier (qui pourrait être protégé en limitant l'accès en lecture à l'utilisateur approprié au niveau du système d'exploitation). Mais, bien sûr, vous pouvez aussi le faire directement avec le keystore - sans utiliser de mot de passe. Si les exigences sont élevées, regardez Trusted Platform Module.

Les clés de clés et de clés de confiance peuvent être configurées par les propriétés du système, il est donc possible de ne pas traiter du tout avec le code source.