Maison > Java > javaDidacticiel > le corps du texte

Pourquoi est-ce que j'obtiens les erreurs « Ignorer la suite de chiffrement indisponible » et « Aucune suite de chiffrement en commun » lorsque j'utilise « SSLContext.init » avec un tableau KeyManager nul ?

Barbara Streisand
Libérer: 2024-11-01 08:52:02
original
951 Les gens l'ont consulté

Why am I getting

Vous initialisez votre SSLContext avec un tableau KeyManager nul.

Le gestionnaire de clés est ce qui gère le certificat du serveur (côté serveur), et c'est ce que vous souhaitez probablement définir lorsque vous utilisez javax.net.ssl.keyStore.

Cependant, comme décrit dans le guide de référence JSSE, l'utilisation de null pour le premier paramètre ne fait pas ce que vous semblez penser :

Si le paramètre KeyManager[] est nul, alors un KeyManager vide sera
défini pour ce contexte. Si le paramètre TrustManager[] est nul,
les fournisseurs de sécurité installés seront recherchés pour
l'implémentation la plus prioritaire de TrustManagerFactory, à partir de laquelle
un TrustManager approprié sera obtenu. De même, le paramètre
SecureRandom peut être nul, auquel cas une
implémentation par défaut sera utilisée.

Un KeyManager vide ne contient aucun certificat RSA ou DSA. Par conséquent, toutes les suites de chiffrement par défaut qui s’appuieraient sur un tel certificat sont désactivées. C'est pourquoi vous recevez tous ces messages « Ignorer la suite de chiffrement indisponible », qui aboutissent finalement à un message « Aucune suite de chiffrement en commun ».

Si vous souhaitez que votre magasin de clés soit utilisé comme magasin de clés, vous devrez besoin de le charger et d'initialiser un KeyManagerFactory avec :

KeyStore ks = KeyStore.getInstance("JKS");
InputStream ksIs = new FileInputStream("...");
essayez {

ks.load(ksIs, "password".toCharArray());
Copier après la connexion

} enfin {

if (ksIs != null) {
    ksIs.close();
}
Copier après la connexion

>

KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory

    .getDefaultAlgorithm());
Copier après la connexion

kmf.init(ks, "keypassword".toCharArray());

Utilisez kmf.getKeyManagers() comme premier paramètre de SSLContext.init( ).

Pour les deux autres paramètres, puisque vous ne demandez visiblement pas d'authentification par certificat client, vous devrait laisser le gestionnaire de confiance à sa valeur par défaut (null) au lieu de copier/coller un gestionnaire de confiance qui est une cause potentielle de vulnérabilité, et vous pouvez également utiliser la valeur par défaut null SecureRandom.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!