Quelles suites de chiffrement activer pour les sockets SSL ?
Le SSLSocket de Java sécurise les communications client-serveur. Cependant, vous devez définir quelles suites de chiffrement sont autorisées pour garantir un cryptage robuste. La méthode getDefaultCipherSuites génère une longue liste de choix, de fort à obsolète.
Choisir des suites de chiffrement sensées
Pour sélectionner des suites de chiffrement appropriées, tenez compte de ces recommandations :
- Préférez les chiffrements modernes comme ECDHE et DHE.
- Excluez les chiffrements faibles et plus anciens comme RC4 et MD5.
-
Limitez la liste des suites de chiffrement pour minimiser la taille du message ClientHello pour éviter les problèmes de compatibilité avec certains appareils.
Exemple d'implémentation
La classe Java suivante , SSLSocketFactoryEx, aide à appliquer ces directives :
public class SSLSocketFactoryEx extends SSLSocketFactory {
private final SSLContext m_ctx;
private final String[] m_ciphers;
private final String[] m_protocols;
// ...
}
La classe SSLSocketFactoryEx :
- Préfère les suites de chiffrement plus fortes comme ECDHE et DHE.
- Omet les chiffrements faibles et blessés. suites comme RC4 et MD5.
- Nécessite des protocoles TLS 1.0 ou supérieurs, garantissant la compatibilité TLS 1.3 lorsqu'ils sont disponibles.
Exemple d'utilisation
URL url = new URL("https://www.google.com:443");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
SSLSocketFactoryEx factory = new SSLSocketFactoryEx();
connection.setSSLSocketFactory(factory);
// ...
Remarques supplémentaires
- L'utilisation de la politique JCE par défaut peut réduire la liste des suites de chiffrement en raison des restrictions sur AES-256.
- La liste complète des suites de chiffrement et la prise en charge du protocole dépend du fournisseur Java utilisé.
- La classe SSLSocketFactoryEx permet la compatibilité TLS 1.3 et prend en charge les suites de chiffrement CHACHA20_POLY1305 plus rapides et plus sécurisées.
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!
Déclaration: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