DRAC5 « Error when reading from SSL Socket connection »

Vous disposez encore d’un bon vieux serveur Dell avec son DRAC5.

Vous souhaitez utiliser votre bonne vieille console Java encore en service mais les sécurités évoluées de Java vous en empêche et ce F****ng Java vous en empêche… Pas d’inquiétude, en deux lignes, c’est réglé 🙂

Rien de plus simple (nous prendrons ici l’exemple de JRE 1.8.144)

Ouvrez le fichier C:\Program Files (x86)\Java\jre1.8.0_144\lib\security\java.security avec votre éditeur préféré. Recherchez ensuite la ligne jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
Une fois repérée, vous devrez la modifier comme suit : jdk.jar.disabledAlgorithms=MD2, RSA keySize < 1024. Pour différentes raison, vous pouvez également dupliquer la ligne afin de garder une trace de l’originale. Vous devriez donc vous retrouver avec quelque chose dans ce style :

Ensuite, toujours dans ce même fichier, chercher désormais la ligne commençant par jdk.certpath.disabledAlgorithms. Là encore, n’hésitez pas à dupliquer la ligne. Une fois repérée, il faudra à nouveau supprimer l’algorithme MD5 qui est l’origine du problème.

Tous ces algorithmes sont aujourd’hui obsolètes, c’est pourquoi ils sont tous désactivés par défaut, aussi je vous conseillerai de garder les autres désactivés et non pas de simplement commenter la ligne, cela permet de garder un minimum de sécurité sur votre poste 😉

Une fois ces modifications sauvegardées, vous pouvez désormais retourner sur votre navigateur et relancé votre bonne vieille console DRAC5.


Edit du 21/09/2024

Avec les versions plus récente de Java, quelques modifications supplémentaires peuvent-être à apporter, toujours dans le même fichier.
Tout d’abord, dans la rubrique « jdk.certpath.disabledAlgorithms », supprime MD5 ainsi que « SHA1 jdkCA & usage TLSServer, » puis commente la ligne « SHA1 usage SignedJAR & denyAfter 2019-01-01 ».
A la suite de ces modifications, tu dois obtenir ceci :

# jdk.certpath.disabledAlgorithms=MD2, MD5, SHA1 jdkCA & usage TLSServer, \
jdk.certpath.disabledAlgorithms=MD2, \
    RSA keySize < 1024, DSA keySize < 1024, EC keySize < 224, \
    include jdk.disabled.namedCurves
#    include jdk.disabled.namedCurves, \
#    SHA1 usage SignedJAR & denyAfter 2019-01-01

Cherche ensuite la section « jdk.tls.disabledAlgorithms ». Supprime TLSv1, SSLv3 et MD5withRSA. La section devrait ensuite ressembler à ceci :

# jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
jdk.tls.disabledAlgorithms=TLSv1.1, DES, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves

N’oublie pas de faire une sauvegarde de ce fichier avant toutes modifications, sinon, duplique la ligne à modifier et mets en commentaire celle d’origine, cela te permettra de revenir facilement en arrière.

Attention : Aujourd’hui, l’usage du TLSv1, TLSv1.1, MD5 et autres protocoles anciens est proscrit pour des faiblesses dans leur sécurité. Le fait d’autoriser ces protocoles dans Java peut nuire à la sécurité de ton PC : n’appliques ces modifications qu’en connaissance de cause. S’il s’agit de modification afin de te connecter à d’anciennes interfaces qui ne sont pas compatible aujourd’hui en TLSv1.2 voire TLSv1.3, je te conseil d’utiliser une VM dédiée à ces actions (et qui évitera ainsi d’exposer ton poste à des risques peut-être inutiles.)

Enjoy 😉