24 Ekim 2017 Salı

SSLContext Sınıfı

Giriş
Şu satırı dahil ederiz.
import javax.net.ssl.SSLContext;
Bu sınıf https bağlantısı açmak için kullanılabilir. Şöyle yaparız.
HttpsURLConnection con = ...;
...
con.setSSLSocketFactory (sslContext.getSocketFactory()); 
constructor - apache
Şöyle yaparız.
TrustStrategy acceptingTrustStrategy = 
(X509Certificate[] chain, String authType) -> true;

SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
  .loadTrustMaterial(null, acceptingTrustStrategy)
  .build();
getInstance metodu - protocol
Şöyle yaparız.
SSLContext sc = SSLContext.getInstance("SSL");
Şöyle yaparız.
SSLContext sslContext = SSLContext.getInstance("SSLv3");
Şöyle yaparız.
SSLContext sslContext = SSLContext.getInstance("TLS");
Şöyle yaparız.
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
getSocketFactory metodu
Bu sınıftan SSLSocketFactory alınabilir.
sslContext.getSocketFactory()
Şöyle yapabiliriz.
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
init metodu - KeyManager dizisi
SSLContext socket yaratmadan önce ilklendirilir ve tekrar ilklendirmenin bir yolu yoktur. Bir KeyManager verebiliriz. Böylece belli bir sertifikayı kullanabiliriz.
KeyManagerFactory kmf = ...;
...
sc.init(kmf.getKeyManagers(), null, null );
init metodu - TrustManager dizisi
Bir TrustManager belirtebiliriz. Böylece hangi isim alanlarına güveneceğimiz belirtiriz.
Örnek
Şöyle yapabiliriz. Sadece TrustManager belirtiriz.
sslContext.init(null, new TrustManager[] { tm }, null);
Örnek
TrustManager ve ilaveten rastgele sayı üreteci de belirtebiliriz. Şöyle yaparız
sslContext.init(null, new TrustManager[] { tm },new SecureRandom());
Şöyle yaparız.
TrustManager[] trustAllCerts = new TrustManager[] { 
  new X509TrustManager() {
    public X509Certificate[] getAcceptedIssuers() {
      X509Certificate[] myTrustedAnchors = new X509Certificate[0];  
      return myTrustedAnchors;
    }

    @Override
    public void checkClientTrusted(X509Certificate[] certs, String authType) {}

    @Override
    public void checkServerTrusted(X509Certificate[] certs, String authType) {}
  }
};

SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new SecureRandom());
Örnek
Şöyle yaparız.
TrustManagerFactory tmf = ...;
sslContext.init(null, tmf.getTrustManagers(), null);

Hiç yorum yok:

Yorum Gönder