[Java lista] HTTPS

Stef stefhun at gmail.com
2007. Feb. 6., K, 10:25:47 CET


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
>
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20070206/71821c96/attachment-0001.html 


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