[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