Erreur de synchronisation de mot de passe AD / OpenIDM 2.1

Problème

Suite à une mise à jour sur un serveur Windows, le plug-in de synchronisation de mot de passe entre le serveur Active Directory et OpenIDM 2.1 ne fonctionnait plus.

La console d'événements Windows était remplie d'erreur, et dans le fichier de logs OPENIDM_HOME/logs/openidm0.log.0, on avait de nombreuses erreurs :

WARNING: javax.net.ssl.SSLException: Unsupported record version Unknown-79.83
WARNING: javax.net.ssl.SSLException: Unsupported record version Unknown-79.83
WARNING: javax.net.ssl.SSLException: Unsupported record version Unknown-79.83
WARNING: javax.net.ssl.SSLException: Unsupported record version Unknown-79.83

Après plusieurs tests, il s'avère que cela est du au patch KB3161639,  qui est inclus dans les KB3161608 & KB3161606  (Roll-Out de Juin 2016) et KB3172605 & KB3172614 (Juillet 2016).

Cause

Le patch KB3161639  est utilisé pour ajouter de nouvelles suites de chiffrement pour Internet Explorer et Microsoft Edge dans Windows.

Le souci est que ceci renforce le niveau de chiffrement, notamment en demandant une longueur de clé Diffie-Hellman supérieure à 1024 bits.

Hors, le plug-in de synchronisation de mot de passe AD vers OpenIDM utilise https, et si on tente une connexion SSL on a les éléments suivants :

# openssl s_client -connect localhost:8443
CONNECTED(00000003)
depth=0 O = OpenIDM Self-Signed Certificate, CN = 1.domain.com
verify error:num=18:self signed certificate
verify return:1

.../...

No client certificate CA names sent
Server Temp Key: DH, 768 bits
---
SSL handshake has read 1529 bytes and written 415 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES128-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE



On constate que la clé Diffie-Hellman ne fait que 768 bits, et n'est donc pas acceptée.

Ceci n'est valable que pour un OpenIDM 2.1, tournant sous Jetty 7. Dès qu'on utilise une version supérieure (OpenIDM 3.0, 3.1, 4, etc), le problème n'apparaît pas.

Résolution

Lorsqu'on recherche des méthodes de résolution, celle qui revient le plus souvent est de faire un rollback des patchs. Ce qui n'est pas forcément la meilleure solution.

Nous avons trouvé une solution de contournement (voir référence [1]), en modifiant la base de registre. Sur un serveur Windows 2012, il a fallu ajouter une clé de registre "Diffie-Hellman", avec la valeur 0000200 :

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman]"ClientMinKeyBitLength"=dword:00000200

Cette clé de registre permet de baisser la longueur de la clé à 512 bits, au lieu des 1024 par défaut.

La modification n'impose pas de redémarrer le serveur.
 

Références

Catégorie