[Java lista] hitelesités
Maglódszki Viktor
bocios at citromail.hu
2007. Feb. 1., Cs, 16:25:15 CET
Sziasztok !
Szeretnék HTTPS kapcsolatot kiépiteni egy szerverrel.
Maga a kapcsolat létrejön, csak utána nem tudok semmi mást csinálni.
Leirok mindent pontossan.
Ahogyan kapcsolodok:
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() );
( ( HttpsURLConnection )( m_oHttpURLConnection ) ).setHostnameVerifier( this );
return m_oHttpURLConnection;
public boolean verify(String hostname, SSLSession session) {
return true;
}
a kapcsolat létrejön, nem dob Exception-t
ezután jön a SOAP, amihez ServiceFactory és Call-t használok (külön a SOAP kérés működik)
a kapcsolat felépülése után amint megpróbálok meghívni egy service-t:
nested exception is:
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
exception-t kapom!
persze rákeresve a neten látom, hogy neki kellene 1 cert amit a keytool-al tudok beimportolni
na most a szerveren egy az apache által készitett cert van
keytool-al beimportoltam mycert néven
keytool -import -file my.cert -alias mycert -pass 123456
ez sikeresen lezajlott, keytool -list -el látom is
a neten ezt találtam:
try {
KeyStore keyStore = KeyStore.getInstance("JKS");
File path = new File("c:\\a\\mycert.cert");
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();
}
ez nekem "Invalid key format" hibát dob
olvastam, hogy lehetne a szerveren keytool-al
1. generálni 1 saját key-t
2. majd ezt exportálni
3. importálni a klienseken
ez amolyan végső lehetőségnek talán jó..
viszont a kérdésem, hogy megoldható-e, hogy a java az apache cert-el is menjen?
előre is köszönöm
MV
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20070201/5f4a0d0a/attachment.html
További információk a(z) Javalist levelezőlistáról