[Java lista] HTTPS

Maglódszki Viktor bocios at citromail.hu
2007. Feb. 6., K, 11:33:27 CET


"...ezert nem tudja hitelesiteni a protokollt, es a javax.net.ssl.trustStore..."

neked is köszi a help-et mert ezzel kapcsolatos volt a gond!
  ----- Original Message ----- 
  From: Stef 
  To: javalist at javagrund.hu 
  Sent: Tuesday, February 06, 2007 10:25 AM
  Subject: Re: [Java lista] HTTPS


  Szia!

  Elore leszogezem, hogy go"zom sincs, mit szeretnel, csak sejtem a leirasbol, ja es total kezdo vagyok :-) (nem javaval keresem kenyerem...)
  De! Fogtam a guglit, es rakerestem erre: SunCertPathBuilderException 
  A masidik talalat nagyon szimpatikus:
  http://forum.java.sun.com/thread.jspa?threadID=742772&messageID=4256783 
  Itt azt talalom, hogy mas kulcsszavakkal kell a guglin keresni (katints a linkre) 
  Az uj kereses masodik eredmenye:
  http://confluence.atlassian.com/display/JIRA/Connecting+to+SSL+services 

  Igaz ez az oldal a JIRA-val foglalkozik, de teljesen ugyanaz a hiba szitu, mint a Na'lad.... 
  Ezt az oldalt atolvasva azt talalom, hogy a szerencsetlen szerver nem talalja a keystore-t, ezert nem tudja hitelesiteni a protokollt, es a javax.net.ssl.trustStore kornyezeti valtozoval meg lehet adni a szerveren, hogy hol keresse azt. 

  Persze az osszes talalatot at kellene nezned, mert en csak "csapkodtam a macse'ta'val" :-)  Ertsd: kattintotam max. 8-at, es foglalkoztam ezzel 5 percet....

  Stef

  u.i: ha hulyeseget irtam, akkor bocsi... a sza'nde'k a le'nyeg :-) 



  2007/2/6, Maglódszki Viktor <bocios at citromail.hu>:
    Sziasztok !

    Előre is bocsi a hosszú levélért!

    Pár napja emlitettem egy problémát HTTPS -el kapcsolatban.

    Van 1 cert fájlom a szerverről, amire kapcsolódni szeretnék, ezt a rendszergazda adta.
    Be is tudom importálni.

    keytool -import -alias ize -file ezaz.cert -keystore a

    itt kéri a jelszót megadom: 123456

    ki is teszi az "a" nevű fájlba

    keytool -list
    látja is ezt a key-t!
     
    le is szeretném ezt kérni kódból

    String alias = "ize";
    String passwd = "123456";
    try {
      KeyStore keyStore = KeyStore.getInstance("jks");
      File path = new File("c:\\a\\a");
      keyStore.load(new FileInputStream(path),"123456".toCharArray());
      char[] pass = passwd.toCharArray();
      Key key = keyStore.getKey(alias,pass);
      if (key instanceof PrivateKey) {
           Certificate cert = keyStore.getCertificate(alias);
           PublicKey publicKey = cert.getPublicKey();
           KeyPair pair = new KeyPair(publicKey,(PrivateKey)key);
      }
    }
    catch (Exception e) {
      e.printStackTrace();
    }

    megpróbáltam, hogy itt:File path = new File("c:\\a\\a"); mindjárt a .cert fájlt adom meg, de ekkor "Invalid type"-ot kapok.

    ez a key:
    Key key = keyStore.getKey(alias,pass);
    null lesz sajnos
    tehát nem találja meg

    de miért ?


    a célom: csatlakozni egy szerverhez HTTPS-en keresztül
    a csatlakozás létrejön egyszer erről már irtam de itt a kód:


    public HttpsURLConnection try_connect(URL url){
             HttpsURLConnection m_oHttpURLConnection;
         try {
              System.setProperty( "java.protocol.handler.pkgs" , "javax.net.ssl" );

              java.security.Security.addProvider( new com.sun.net.ssl.internal.ssl.Provider() );
              TrustManager[] trustAllCerts = new TrustManager[] {
                        new X509TrustManager(){
                             public java.security.cert.X509Certificate[] getAcceptedIssuers(){
                                  return null;
                             }
                        public void checkClientTrusted( java.security.cert.X509Certificate[] certs, String authType ) { return; }
                        public void checkServerTrusted( java.security.cert.X509Certificate[] certs, String authType ) { return; }
                        }
                   };

              SSLContext sc = SSLContext.getInstance( "SSL" );
              sc.init( null, trustAllCerts, new java.security.SecureRandom() );
              HttpsURLConnection.setDefaultSSLSocketFactory( sc.getSocketFactory() );
              m_oHttpURLConnection =  (HttpsURLConnection) url.openConnection();
              m_oHttpURLConnection.setUseCaches( false );
              
              m_oHttpURLConnection.setDoInput( true );
              m_oHttpURLConnection.setDoOutput( true );
              m_oHttpURLConnection.setRequestProperty( "Content-Type", "text/xml" );
              m_oHttpURLConnection.setAllowUserInteraction( true );
              m_oHttpURLConnection.setRequestMethod("POST");          
              m_oHttpURLConnection.setInstanceFollowRedirects( true );
              System.out.println("URL " +  m_oHttpURLConnection.getURL());
              ( ( HttpsURLConnection )( m_oHttpURLConnection ) ).setHostnameVerifier( this );   
              
              
              } catch (Exception e){
                    e.printStrackTrace();
                   return null;
              }
         
              return m_oHttpURLConnection;


     public boolean verify(String hostname, SSLSession session) {
              return true;
         }


    ez a csatlakozás létrejön
    a gond akkor kezdődik, ha Call objektummal belehivok a WSDL fájlomba (ami https nélkül sikeresen lezajlik)
    ekkor kapom a következő exception-t:

    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

    Előre is köszi a segitséget.


    _______________________________________________
    Javalist mailing list
    Javalist at javagrund.hu
    http://javagrund.hu/mailman/listinfo/javalist






------------------------------------------------------------------------------


  _______________________________________________
  Javalist mailing list
  Javalist at javagrund.hu
  http://javagrund.hu/mailman/listinfo/javalist



------------------------------------------------------------------------------


  No virus found in this incoming message.
  Checked by AVG Free Edition.
  Version: 7.5.432 / Virus Database: 268.17.25/669 - Release Date: 2007.02.04. 21:58
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20070206/bef6c758/attachment.html 


További információk a(z) Javalist levelezőlistáról