[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