[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