Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HTTPS и ява клиент, Ошибка, при запросе. 
:(
    Опции темы
V1tal1us
  Дата 10.8.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 7.3.2007

Репутация: нет
Всего: нет



 Мне нужна Ваша помощь жители ВинГрада. Дело в том,что сейчас Я подключаю
 одного "клиента", который использует HTTPS соединение. Так как опыта
 у меня мало, то возникает множество вопросов ответы на которые Я
 с трудом нахожу. Если кратко то проблема в следующем : Я не могу
 достучаться до сайта используя сертификаты.
 Постоянно появляются следующие ошибки :
 
Код

"avax.net.ssl.SSLException: Connection has been shutdown:
 javax.net.ssl.SSLException: Unrecognized SSL message, plaintext
 connection?"


             или smile 

Код

 "javax.net.ssl.SSLException: Connection has been
 shutdown: javax.net.ssl.SSLHandshakeException:
 sun.security.validator.ValidatorException: No trusted certificate found"
.
 
 Что Я делал:
 
 1. Сгенерировал запрос на сертификат для подписания его второй
    стороной:
            
Код

 openssl req -new -newkey rsa:1024 -nodes -keyout mppc.key -out mppc.csr -subj /CN=MPPC

             
 2. Отослал "mppc.csr" на подпись.
 
 3. Подписанный сертификат (то что подписали), Я сохранил  в файл
    "mppc.cert".
 Он имеет следующий формат
    "
Код

-----BEGIN CERTIFICATE-----
     **************************
     **************************
     **************************
    -----END CERTIFICATE----- 
 ".
    
 4. Создаю хранилище сертификатов :
   
Код

 keytool -genkey -alias test -keystore gioc.ks

    
 5. Файл "mppc.cert" Я импортировал в кейсторе с помощью команды:
    
Код

keytool -import -file mppc.cert -keystore gioc.store

    
В итоге получилось вот что :
"
Код

[sv@sv u]$ keytool -list -v -keystore gioc.store
  Enter keystore password:  *****

  Keystore type: jks
  Keystore provider: SUN

  Your keystore contains 2 entries

  Alias name: mykey
  Creation date: Aug 9, 2007
  Entry type: trustedCertEntry

  Owner: CN=MPPC
  Issuer: [email protected], CN=u.kiev.ua, OU=Sys, O=KP u, L=Kiev, ST=Kiev, C=UA
  Serial number: f
  Valid from: Thu Aug 09 16:52:05 EEST 2007 until: Sun Aug 06 16:52:05 EEST 2017
  Certificate fingerprints:
         MD5:  BB:80:44:CB:B8:41:78:01:97:1A:F7:9B:BF:49:E6:CD
         SHA1: 1B:DE:70:D4:49:AA:5D:8B:D9:EA:88:B7:38:BC:5F:D3:37:11:C2:BC


*******************************************
*******************************************


  Alias name: test
  Creation date: Aug 9, 2007
  Entry type: keyEntry
  Certificate chain length: 1
  Certificate[1]:
  Owner: CN=Test, OU=Test, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
  Issuer: CN=Test, OU=Test, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
  Serial number: 46bb2133
  Valid from: Thu Aug 09 17:14:11 EEST 2007 until: Sat Aug 08 17:14:11 EEST 2009
  Certificate fingerprints:
         MD5:  63:20:C6:D4:C9:B8:65:14:26:09:4E:C5:1F:AA:13:FF
         SHA1: 0F:CE:4A:91:03:96:3D:41:05:A3:93:FC:06:8F:2B:DA:8D:45:9E:56


*******************************************
*******************************************

"
 6. Создал p12 для внедрения его в браузер.( через браузер всё бегает
    нормально, а вот ява приложение не подхватывает сертификат).
    
 Что Я неправильно сделал? Где допустил ошибку?
 Заранее спасибо за помощь.
 

Это сообщение отредактировал(а) V1tal1us - 10.8.2007, 14:25
PM MAIL   Вверх
mindflyer
Дата 10.8.2007, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 20.10.2004
Где: Smolensk, Russia

Репутация: нет
Всего: 4



Насколько я понимаю, для Java-приложения нужно указать хранилище сертификатов явным образом. 
Код

System.setProperty("javax.net.ssl.trustStore", "<путь к файлу>");
System.setProperty("javax.net.ssl.trustStorePassword", "<пароль к хранилищу>");



Это сообщение отредактировал(а) mindflyer - 10.8.2007, 20:46
PM MAIL ICQ   Вверх
westpine
Дата 20.8.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 16.8.2007

Репутация: нет
Всего: нет



Народ, у меня та же проблема... Читал первый пост - ничего не понял smile. Можно пожалуйста по шагам расшифровать настройку SSL соединения. Или ссылочку где про это можно почитать.
PM MAIL   Вверх
y3u
Дата 20.8.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 9.9.2006
Где: Москва

Репутация: нет
Всего: 13





--------------------
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
PM MAIL   Вверх
westpine
Дата 21.8.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 16.8.2007

Репутация: нет
Всего: нет




Спасибо большое, то что надо! Снимай маску, ты Юрка с жуги.ру , я тебя узнал smile 
PM MAIL   Вверх
4EJIOBEK
Дата 3.4.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 26.3.2007

Репутация: нет
Всего: 4



Можно ли при попытке подключения по SSL принять сертификат, затем экспортировать его в файлик для дальнейшего использования(как в броузерах)?
PM MAIL ICQ   Вверх
4EJIOBEK
Дата 3.4.2009, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 26.3.2007

Репутация: нет
Всего: 4



Код

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;
import java.net.UnknownHostException;
import java.nio.charset.Charset;
import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.StringTokenizer;

import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class Utils {
    
    public static X509Certificate[] getX509Certificates(String host, int port) throws UnknownHostException, IOException{
        SSLContext sc = null;    
        TrustManager[] trustAllCerts = new TrustManager[] {
                  new X509TrustManager() {
                    public java.security.cert.X509Certificate[] getAcceptedIssuers(){
                      return null;
                     }
                    public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
                    public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
            }
        };
        try {
            sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
        }
        catch (Exception e) {}
          
        SSLSocketFactory factory = (SSLSocketFactory) sc.getSocketFactory();

        SSLSocket sslsock = (SSLSocket) factory.createSocket(host, port);

        SSLSession session = sslsock.getSession();
        X509Certificate[] certs;
        try {
          certs = (X509Certificate[]) session.getPeerCertificates();
          return certs;
        } catch (SSLPeerUnverifiedException e) {
          System.err.println(session.getPeerHost() + " did not present a valid certificate.\n"+e.getMessage());
          return null;
        }
    }

    public static void export(java.security.cert.Certificate cert, File file, boolean binary) {
        try {
            // Get the encoded form which is suitable for exporting
            byte[] buf = cert.getEncoded();

            FileOutputStream os = new FileOutputStream(file);
            if (binary) {
                // Write in binary form
                os.write(buf);
            } else {
                // Write in text form
                Writer wr = new OutputStreamWriter(os, Charset.forName("UTF-8"));
                wr.write("-----BEGIN CERTIFICATE-----\n");
                wr.write(new sun.misc.BASE64Encoder().encode(buf));
                wr.write("\n-----END CERTIFICATE-----\n");
                wr.flush();
            }
            os.close();
        } catch (CertificateEncodingException e) {
        } catch (IOException e) {
        }
    }

    public static Certificate importX509Certificate(File file) {
        try {
            FileInputStream is = new FileInputStream(file);

            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            java.security.cert.Certificate cert = cf.generateCertificate(is);
            return cert;
        } catch (CertificateException e) {
        } catch (IOException e) {
        }
        return null;
    }
    public static String request(final String host,final int port, String request) throws UnknownHostException, IOException{
        SSLContext sc = null;    
        TrustManager[] trustAllCerts = new TrustManager[] {
                new X509TrustManager() {
                    public java.security.cert.X509Certificate[] getAcceptedIssuers(){
                        try {
                            return null;
                        } catch (Exception e) {
                        }
                        return null;
                    }
                    public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
                    public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
                }
        };
        try {
            sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
        }
        catch (Exception e) {}
          
        SSLSocketFactory factory = (SSLSocketFactory) sc.getSocketFactory();

        SSLSocket sslsock = null;
        try{
            sslsock = (SSLSocket) factory.createSocket(host, port);
    
            PrintWriter out = new PrintWriter(sslsock.getOutputStream());
    
            out.print("GET " + request + " HTTP/1.0\r\n\r\n");
            out.flush();
            
            BufferedReader in = new BufferedReader(new InputStreamReader(sslsock.getInputStream()));
            StringBuffer sb = new StringBuffer();
            String line;
            while ((line = in.readLine()) != null){
              sb.append(line+"\n");
            }
            
            return sb.size()>0 ? sb.toString(): null;
        }
        finally{
         sslsock.close();
        }
    }
}


нашел решение в инете
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0767 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.