Bu sınıfı SSL istemci soketleri içindir.
SSL istemcisi SSLSocketFactory sınıfını kullanılır.
SSL sunucusu SSLServerSocketFactory sınıfını kullanır.
SSL soketinin çalışabilmesi için sunucu ve istemcinin "cipher suit" ve "session key" konusunda el sıkışması gerekir. Bu el sıkışma işlemi bir çok mesaj değiş tokuşu ile olur.
Sistem Ayarları - keystore
Açıklaması şöyle
Sistem Ayarları - truststore
Açıklaması şöyle
constructor - SSLContext ile yaratma
Bu sınıfı SSLContext tarafından yaratılır. Şöyle yaparız.
Şöyle yaparız.
İstemci socket için şöyle yaparız.Örnek ver
createSocket metodu
İstemci socket için şöyle yaparız.
İstemci socket için şöyle yaparız.
Örnek
İstemci socket için şöyle yaparız.
Şöyle yaparız.
keytool -genkey -alias mystore -keystore my.store şeklinde bir store yaratırım.
İstemci için şöyle yaparız.
System.setProperty ("javax.net.ssl.trustStore","my.store");
Sunucu için şöyle yaparız.
System.setProperty ("javax.net.ssl.keyStore","my.store");
System.setProperty ("javax.net.ssl.keyStorePassword","password");
Bu sınıf abstract olduğu için şöyle yapamayız.
SSL sunucusu SSLServerSocketFactory sınıfını kullanır.
SSL soketinin çalışabilmesi için sunucu ve istemcinin "cipher suit" ve "session key" konusunda el sıkışması gerekir. Bu el sıkışma işlemi bir çok mesaj değiş tokuşu ile olur.
Sistem Ayarları - keystore
Açıklaması şöyle
If the server does client authentication, the client will need a key pair and a client certificate which is installed in the server's trust store,
Sistem Ayarları - truststore
Açıklaması şöyle
If the client wants to authenticate the server, then the client's trust store must contain the server's certificate.Şöyle yaparız.
java -Djavax.net.ssl.trustStore=keystore_name
-Djavax.net.ssl.trustStorePassword=password
Ya da şöyle yaparız.Properties systemProps = System.getProperties();
systemProps.put( "javax.net.ssl.trustStore", "/path/to/yourTruststore.jks");
systemProps.put( "javax.net.ssl.trustStorePassword", "trustStorePassword");
System.setProperties(systemProps);
Ya da şöyle yaparız.System.setProperty("javax.net.ssl.trustStore", path);
System.setProperty("javax.net.ssl.trustStorePassword", pwd)
Sistem Ayarları - keystore + truststore
Hem istemci hem de sunucu authentication yapar.
Şöyle yaparız.
Eğer truststore jar dosyası içindeyse şöyle yaparız.
1. Include the keystore in your JAR file as a resource, as you did for your images.
2. Access it via getResourceAsStream().
3. Use that InputStream to load a KeyStore.
4. Use the KeyStore to initialize a TrustManager.
5. Use the TrustManager to initialize an SSLContext.
6. Use the SSLContext to create your SSLSocketFactory.
7. Use the SSLSocketFactory to create your SSLSocket.
Hem istemci hem de sunucu authentication yapar.
Şöyle yaparız.
System.setProperty("javax.net.debug", "all");
System.setProperty("javax.net.ssl.trustStore", "C:/clientcert.jk");
System.setProperty("javax.net.ssl.trustStorePassword", "allianzebcm");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
//my certificate and password
System.setProperty("javax.net.ssl.keyStore", "C:/EBCM_Client_TEST.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "allianzebcm");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
Ayrıca SSL hatalarını görmek için JVM'de -Djavax.net.debug=ssl anahtarını kullanmak faydalı oluyor.Eğer truststore jar dosyası içindeyse şöyle yaparız.
1. Include the keystore in your JAR file as a resource, as you did for your images.
2. Access it via getResourceAsStream().
3. Use that InputStream to load a KeyStore.
4. Use the KeyStore to initialize a TrustManager.
5. Use the TrustManager to initialize an SSLContext.
6. Use the SSLContext to create your SSLSocketFactory.
7. Use the SSLSocketFactory to create your SSLSocket.
Bu sınıfı SSLContext tarafından yaratılır. Şöyle yaparız.
sslContext.getSocketFactory()...
constructor - HttpsURLConnection ile yaratmaŞöyle yaparız.
SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory();
createServerSocket metoduİstemci socket için şöyle yaparız.Örnek ver
createSocket metodu
İstemci socket için şöyle yaparız.
Socket s = socketFactory.createSocket();
createSocket metodu - host + portİstemci socket için şöyle yaparız.
SSLSocket socket = (SSLSocket) sslfactory.createSocket("gmail.com", 443);
createSocket metodu - socket + host + port + autoCloseÖrnek
İstemci socket için şöyle yaparız.
Socket socket = ...;
String host=...;
int port=...;
boolean autoClose =...;
Socket s = socketFactory.createSocket(socket, host, port, autoClose);
ÖrnekŞöyle yaparız.
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
socket.setEnabledProtocols(new String[] {"TLSv1.2"});
getDefault metodukeytool -genkey -alias mystore -keystore my.store şeklinde bir store yaratırım.
İstemci için şöyle yaparız.
System.setProperty ("javax.net.ssl.trustStore","my.store");
Sunucu için şöyle yaparız.
System.setProperty ("javax.net.ssl.keyStore","my.store");
System.setProperty ("javax.net.ssl.keyStorePassword","password");
Bu sınıf abstract olduğu için şöyle yapamayız.
SSLSocketFactory socketFactory = new SSLSocketFactory(ks);
Şöyle yaparız.SSLSocketFactory sslfactory = (SSLSocketFactory)SSLSocketFactory.getDefault();
Hiç yorum yok:
Yorum Gönder