J'ai mis en place une connexion https entre le serveur et le client, où le client est un programme java et le serveur est une servlet. J'ai utilisé le code suivant pour imprimer les détails du certificat à partir du serveur.
URL url = new URL("https://localhost:8443/cert");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setSSLSocketFactory(sslsocketfactory);
connection.setDoOutput(true);
if(connection!=null){
Certificate[] certs = connection.getServerCertificates();// #1
System.out.println("Cert Type : " + certs[0].getType());
System.out.println("Cert Hash Code : " + certs[0].hashCode());
System.out.println("Cert Public Key Algorithm : " + certs[0].getPublicKey().getAlgorithm());
System.out.println("Cert Public Key Format : " + certs[0].getPublicKey().getFormat());
System.out.println("\n");
}
Mais j'obtiens l'exception suivante.
java.lang.IllegalStateException: connection not yet open
Je pensais que la poignée de main devait avoir lieu dès l'appel de la méthode url.openconnection(). Quel est le problème ici ?
L'exception est lancée à la ligne numéro '#1' (voir les commentaires dans le code ci-dessus).