Maison > Java > javaDidacticiel > le corps du texte

Comment utiliser avec succès les certificats clients Java avec HTTPS/SSL ?

Susan Sarandon
Libérer: 2024-11-22 12:58:11
original
819 Les gens l'ont consulté

How to Successfully Use Java Client Certificates with HTTPS/SSL?

Certificats clients Java sur HTTPS/SSL : présentation pas à pas

Scénario

Envisagez un scénario Java 6 qui tente d'établir une connexion HTTPS à un serveur distant à l'aide d'un certificat client. Le serveur utilise un certificat racine auto-signé et exige la présentation d'un certificat client protégé par mot de passe.

Défi

Malgré l'ajout du certificat racine du serveur et du certificat client à le magasin de clés par défaut, la connexion échoue avec un échec de négociation. L'application demande des conseils sur l'utilisation efficace du certificat client.

Solution

La résolution comporte trois étapes :

  1. Importation du certificat du serveur dans le Truststore : Le certificat auto-signé du serveur doit être importé dans un truststore à l'aide du keytool utilitaire :

    keytool -import -alias <server_alias> -file <server_cert>.crt -storepass <password> -keystore <truststore_name>.keystore
    Copier après la connexion
  2. Configuration des propriétés JVM : Définissez des propriétés JVM spécifiques pour spécifier les chemins, les mots de passe et les types du truststore et du keystore :

    -Djavax.net.ssl.keyStoreType=pkcs12
    -Djavax.net.ssl.trustStoreType=jks
    -Djavax.net.ssl.keyStore=<client_cert>.p12
    -Djavax.net.ssl.trustStore=<truststore_name>.keystore
    -Djavax.net.debug=ssl
    -Djavax.net.ssl.keyStorePassword=<password>
    -Djavax.net.ssl.trustStorePassword=<password>
    Copier après la connexion
  3. Code de connexion mis à jour : Utilisez le SSLSocketFactory pour établir la connexion HTTPS et définir la fabrique de sockets SSL pour la connexion :

    SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
    URL url = new URL("https://<server_host>:<port>/cgi-bin/ls.py");
    HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
    conn.setSSLSocketFactory(sslsocketfactory);
    Copier après la connexion

    Cette approche résout le problème en authentifiant le client auprès du serveur à l'aide du certificat client désigné.

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