users@glassfish.java.net

Re: SSLServer - creating SSLsocket

From: Oleksiy Stashok <oleksiy.stashok_at_oracle.com>
Date: Thu, 08 Dec 2011 10:47:45 +0100

Hi,

not sure how it's related to Glassfish :)

try to find and replace
"com.sun.net.ssl" with "javax.net.ssl"

WBR,
Alexey.

On 12/08/2011 02:39 AM, forums_at_java.net wrote:
> Hi! I am a rusian student, and i have a task to create a SSLServer and
> SSLClient code example, and set an SSL connection between two
> computers. This
> must be simple destop application.
>
> I have a Server code, but there is an error. I get a code example from
> Javorsky book. but did some thing wrong. If some one can help me,
> please do
> it. I would be greatfull!!! I realy want to learn it and remove the
> error.
>
> there is Server code(sorry, that comments are russian):
>
> [SRC JS]
>
> package SSLserverPackage;
> import java.security.KeyStoreException;
> import java.security.NoSuchAlgorithmException;
> import java.security.cert.CertificateException;
> import java.util.logging.Level;
> import java.util.logging.Logger;
> import javax.net.ssl.*;
> import javax.net.*;
> import java.io.*;
> import java.net.*;
> import java.security.*;
> import java.util.Scanner;
> public class SSLServer
> {
> private static final int port_num = 7777;
> private SSLServerSocket s;//инициализируем объект
> s класса ServerSocket
> private String rsa;
> private int rport;
> private SSLSocket sckserver ;
> private String keystoreType = "JKS";
> private String keystoreFilename =
> "/home/abc/glassfish-3.1.1/mq/etc/samplestore";
> private static Scanner scan2 = null;
> private static OutputStream os;
> private String keyStorePassword;
> private FileInputStream fileinputstream;
>
> public SSLServer(String kfsn)
> {
>
>
> };
>
>
> public void initServer (String ksfn,String kst,String pswd,String str)
> {
> keystoreFilename =ksfn;
> keystoreType =kst;
> keyStorePassword =pswd;
> //получить и загрузить стандартный
> объект keystore
> java.security.KeyStore keyStore = null;
>
> try {//начало блока try
> try {//начало блока try
> //получить экземпляр
> хранилища ключей
> keyStore =KeyStore.getInstance("JKS");
> } //конец блока try
> catch (KeyStoreException ex) {//начало блока catch
>
> Logger.getLogger(SSLServer.class.getName()).log(Level.SEVERE, null, ex);
> }//конец блока catch
> //загрузить из потока файла хранилизе
> по заданному паролю
> fileinputstream = new FileInputStream(ksfn);
> pswd = "samplestorepass";
> char[] keyStorePasswordInChars =
> keyStorePassword.toCharArray();
> try {//начало блока try
> keyStore.load(fileinputstream,
> keyStorePasswordInChars);
> } //конец блока try
> catch (IOException ex) {//начало блока catch
>
> Logger.getLogger(SSLServer.class.getName()).log(Level.SEVERE, null, ex);
> } catch (NoSuchAlgorithmException ex) {
>
> Logger.getLogger(SSLServer.class.getName()).log(Level.SEVERE, null, ex);
> } catch (CertificateException ex) {
>
> Logger.getLogger(SSLServer.class.getName()).log(Level.SEVERE, null, ex);
> }//конец блока catch
> } //конец блока try
>
> catch(NoSuchAlgorithmException noAlgorithmEx)
> {//начало блока catch
> noAlgorithmEx.printStackTrace();
> }
> catch(UnrecoverableKeyException unrecoverableKeyException)
> {
> unrecoverableKeyException.printStackTrace();
> }
> catch(KeyStoreException keyStoreException)
> {
> keyStoreException.printStackTrace();
> } //конец блока catch
>
> com.sun.net.ssl.KeyManager[] keymanagers= null;
> try
> {//
> String keyManagerAlgorithm = "SunX509";
> [color=#FF0000] com.sun.net.ssl.KeyManagerFactory
> keyManagerFactory =
> KeyManagerFactory.getInstance(keyManagerAlgorithm); [/color]
> String keyManagerPassword = "samplestorepass";
> keyManagerFactory.init(keyStore,
> keyStorePassword.toCharArray());
> keymanagers = keyManagerFactory.getKeyManagers();
> }
> catch(NoSuchAlgorithmException noAlgorithmEx)
> {
> noAlgorithmEx.printStackTrace();
> }
> catch(UnrecoverableKeyException unrecoverableKeyException)
> {
> unrecoverableKeyException.printStackTrace();
> }
> catch(KeyStoreException keyStoreException)
> {
> keyStoreException.printStackTrace();
> }
> com.sun.net.ssl.TrustManager[] trustedManagers=null;
> try{//начало блока try
> //создать производителя доверенных
> диспетчеров
> String trustManagerAlgorithm = "SunX509";
> [color=#FF0000] com.sun.net.ssl.TrustManagerFactory
> trustManagerFactory =
> TrustManagerFactory.getInstance(trustManagerAlgorithm);[/color]
> //инициализировать производителя
> доверенных диспетчеров
> trustManagerFactory.init(keyStore);
> //получить доверенные диспетчеры
> trustedManagers = trustManagerFactory.getTrustManagers();
> }//окончание блока try
> catch(NoSuchAlgorithmException noAlgorithmEx)
> {//начало блока catch
> noAlgorithmEx.printStackTrace();
> }
> catch(KeyStoreException keyStoreException)
> {
> keyStoreException.printStackTrace();
> } //конец блока catch
> //получить защищенное случайное число
> java.security.SecureRandom secureRandom =null;
> try
> {//начало блока try
> //создать экземпляр защищенного
> случайного числа при заданных алгоритме и
> провайдере
> String secureRandomAlgorithm = "SHA1PRNG";
> String secureRandomProvider = "SUN";
> [color=#FF0000] secureRandom =
> SecureRandom.getInstance(secureRandomAlgorithm, secureRandomProvider);
> [/color]
> }//конец блока try
> catch(NoSuchAlgorithmException noAlgorithmEx)
> {//начало блока catch
> noAlgorithmEx.printStackTrace();
> }
> catch(NoSuchProviderException NoProviderEx)
> {
> NoProviderEx.printStackTrace();
> } //конец блока catch
>
> com.sun.net.ssl.SSLContext sslContext =null;
> try
> { //Создать SSL-контекст при заданном
> провайдере контекста
> String sslContextProvider = "SUN";
> [color=#FF0000] sslContext =
> SSLContext.getInstance(sslContextProvider); [/color]
> sslContext.init(keymanagers, trustedManagers, secureRandom);
> }
> catch(NoSuchAlgorithmException noAlgorithmEx)
> {//начало блока catch
> noAlgorithmEx.printStackTrace();
> }
> catch(KeyManagementException KeyManagementEx)
> {
> KeyManagementEx.printStackTrace();
> } //конец блока catch
> javax.net.ssl.SSLServerSocketFactory sslServerSocketFactory
> =sslContext.getServerSocketFactory();
> try {//начало блока try
> sslServerSocketFactory =
> (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
> //coздение экз. socketfactory класса
> SSLServerSocketFactory для создания сокета
>
> if (sslServerSocketFactory != null)
> {
> System.out.println("создана socketfactory");
> }
> try{//начало лока try
> s = (SSLServerSocket) sslServerSocketFactory. createServerSocket
> (port_num);
> if (s != null)
> {
> System.out.println("Создан серверный
> сокет");
> System.out.println("IP адрес серверного
> сокета: " + s.getLocalSocketAddress().toString());
> System.out.println("Ожидание ответа
> клиента");
> }}//конец блока try
> catch (IOException ex1) {//начало блока catch
>
> Logger.getLogger(SSLServer.class.getName()).log(Level.SEVERE, null, ex1);
> }//конец блока catch
> try{
>
>
> sckserver = (SSLSocket) s.accept(); //устанавливаем
> соединение с клиентом
> rport = sckserver.getLocalPort(); //
> rsa = sckserver.getRemoteSocketAddress().toString();//
> if (sckserver != null)
> {
> System.out.println("Подключение клиента
> ");
> System.out.println("Подключен клиент ip: "
> + rsa + " порт: " + rport);//вывод сообщения
> }
> else
> {
> System.out.println("Клиент
> неподключен");
> }
> }//окончание блока try
> catch (IOException ex1) {//начало блока catch
>
> Logger.getLogger(SSLServer.class.getName()).log(Level.SEVERE, null, ex1);
> }//конец блока catch
> try {//начало блока try
> BufferedReader socketBr = new BufferedReader(new
> InputStreamReader(sckserver.getInputStream()));
> if (socketBr != null)
> {
> System.out.println("Принимаем входящий
> поток в объект socketBr");
> } else { System.out.println("Входящий поток в
> объект socketBr не принят");
> }
> //try{ //начало блока try
> PrintWriter outs = new PrintWriter(new
> OutputStreamWriter(sckserver.getOutputStream()));//создание
> объекта outs класса PrintWriter
> if (outs != null)
> {
> System.out.println("Формируем выходящий
> поток в объект outs");
> } else { System.out.println("Выходящий поток не
> сформирован");
> }
> String line = null;
> while ((line = socketBr.readLine()) != null)//в объект
> line записывается строка прочтанная из
> //объекта br (входящий поток от
> клиента к серверу)
> {//начало цикла while
> outs.println(line);//отправка строки из
> out на консоль
> outs.flush();
> }//конец цикла while
> } //окончание блока try
> catch (IOException ex1) {//начало блока catch
> Logger.getLogger("описание
> ошибки:" + ex1);
> }//конец блока catch
> }//окончание блока try
> finally {//начало блока finaly
> if (sckserver != null) {//начало цикла
> try {//начало блока try
> sckserver.close();
> } //окончание блока try
> catch (IOException ignored) {//начало блока
> catch
> }//окончание блока catch
> }//окончание цикла if
> }//окончание блока finaly
> };//окончание конструктора initServer
> }//окончание класса SSLServer
> [/SRC]
>
> Errors:
>
> [color=#FF0000]/home/abc/share/SSLserver/src/SSLserverPackage/SSLServer.java:90:
>
> incompatible types
> found : javax.net.ssl.KeyManagerFactory
> required: com.sun.net.ssl.KeyManagerFactory
> com.sun.net.ssl.KeyManagerFactory keyManagerFactory =
> KeyManagerFactory.getInstance(keyManagerAlgorithm);
> /home/abc/share/SSLserver/src/SSLserverPackage/SSLServer.java:111:
> incompatible types
> found : javax.net.ssl.TrustManagerFactory
> required: com.sun.net.ssl.TrustManagerFactory
> com.sun.net.ssl.TrustManagerFactory trustManagerFactory =
> TrustManagerFactory.getInstance(trustManagerAlgorithm);
> /home/abc/share/SSLserver/src/SSLserverPackage/SSLServer.java:147:
> incompatible types
> found : javax.net.ssl.SSLContext
> required: com.sun.net.ssl.SSLContext
> sslContext = SSLContext.getInstance(sslContextProvider);
> Note: /home/abc/share/SSLserver/src/SSLserverPackage/SSLServer.java
> uses or
> overrides a deprecated API.
> Note: Recompile with -Xlint:deprecation for details.
> 3 errors
> /home/abc/share/SSLserver/nbproject/build-impl.xml:603: The following
> error
> occurred while executing this line:
> /home/abc/share/SSLserver/nbproject/build-impl.xml:284: Compile
> failed; see
> the compiler error output for details.
> BUILD WITH FAILURE (total time: 0 seconds)[/color]
>
>
> --
>
> [Message sent by forum member 'phoma']
>
> View Post: http://forums.java.net/node/871898
>
>