ここでは単純なJava HTTPSクライアントを使って、 `HttpsURLConnection`クラスを使ってHTTP GETリクエストを送信し、https URLのコンテンツと証明書の詳細を取得します。


P.Sこの例では興味があります:

HttpsURLConnectionを使ってWebサイトへのログインを自動化

HttpsClient.java

package com.mkyong.client;

import java.net.MalformedURLException;
import java.net.URL;
import java.security.cert.Certificate;
import java.io.** ;

import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLPeerUnverifiedException;

public class HttpsClient{

   public static void main(String[]args)
   {
        new HttpsClient().testIt();
   }

   private void testIt(){

      String https__url = "https://www.google.com/";
      URL url;
      try {

         url = new URL(https__url);
         HttpsURLConnection con = (HttpsURLConnection)url.openConnection();

        //dumpl all cert info
         print__https__cert(con);

        //dump all the content
         print__content(con);

      } catch (MalformedURLException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }

   }

   private void print__https__cert(HttpsURLConnection con){

    if(con!=null){

      try {

    System.out.println("Response Code : " + con.getResponseCode());
    System.out.println("Cipher Suite : " + con.getCipherSuite());
    System.out.println("\n");

    Certificate[]certs = con.getServerCertificates();
    for(Certificate cert : certs){
       System.out.println("Cert Type : " + cert.getType());
       System.out.println("Cert Hash Code : " + cert.hashCode());
       System.out.println("Cert Public Key Algorithm : "
                                    + cert.getPublicKey().getAlgorithm());
       System.out.println("Cert Public Key Format : "
                                    + cert.getPublicKey().getFormat());
       System.out.println("\n");
    }

    } catch (SSLPeerUnverifiedException e) {
        e.printStackTrace();
    } catch (IOException e){
        e.printStackTrace();
    }

     }

   }

   private void print__content(HttpsURLConnection con){
    if(con!=null){

    try {

       System.out.println("** ** ** ** ** **  Content of the URL ** ** ** ** ** ** ** ** ");
       BufferedReader br =
        new BufferedReader(
            new InputStreamReader(con.getInputStream()));

       String input;

       while ((input = br.readLine()) != null){
          System.out.println(input);
       }
       br.close();

    } catch (IOException e) {
       e.printStackTrace();
    }

       }

   }

}

出力…​

Response Code : 200
Cipher Suite : SSL__RSA__WITH__RC4__128__SHA

Cert Type : X.509
Cert Hash Code : 7810131
Cert Public Key Algorithm : RSA
Cert Public Key Format : X.509

Cert Type : X.509
Cert Hash Code : 6042770
Cert Public Key Algorithm : RSA
Cert Public Key Format : X.509

** ** ** ** ** **  Content of the URL ** ** ** ** ** ** ** **

<!doctype html> <html> <head> <meta http-equiv = "content-type" ......