Importazione Certificati SSL sul Java Keystore (JKS)

Il meccanismo solitamente adottato per la protezione dei dati End-To-End sulla rete internet è basato sull’utilizzo del protocollo Transport Layer Security (TLS) e il suo predecessore Secure Sockets Layer (SSL), entrambi sono dei protocolli crittografici che permettono una comunicazione sicura e una integrità dei dati su reti TCP/IP, cifrano la comunicazione dalla sorgente alla destinazione sul livello di trasporto.

Una tipica connessione TLS/SSL (per esempio via browser internet) prevede un tipo di autenticazione denominata unilaterale : solo il server è autenticato (il client conosce l’identità del server), ma non vice-versa (il client rimane anonimo e non autenticato). Il client (browser web, EmailUI, Java Client, etc…) valida il certificato del server controllando la firma digitale dei certificati del server, verificando che questa sia valida e riconosciuta da una Certificate Authority conosciuta utilizzando una cifratura a chiave pubblica.

In Figura 1 è illustrato il caso in cui il browser stabilisce una connessione verso un sito web (o applicazione web) che espone un certificato rilasciato da una Certificate Authority non riconosciuta. E’ lasciata all’utente l’azione da intraprendere, se continuare o abbandonare la connessione, è inoltre possibile per l’utente, istruire il browser affinché consideri trusty (fidato) il certificato.

Figura 1 - Alert del Browser per Certificate Authority non riconosciuta

Figura 1 - Alert del Browser per Certificate Authority non riconosciuta

In Figura 2 sono invece illustrati i dettagli sulla catena di certificazione (Certificate Chain). Il browser (in questo caso Safari) ha tutte la ragioni a emettere un warning, in effetti, la CA (Certificate Authority)  indicata è di pura invenzione.

Figura 2 - Dettagli del certificato SSL

Figura 2 - Dettagli del certificato SSL

Nel caso in cui volessimo compiere connessioni TLS/SSL attraverso un software scritto in Java (in qualità di client), è necessario accertarsi che tutta la Certificate Chain (o catena di certificazione) sia soddisfatta o comunque bisogna far in modo da considerare affidabile il certificato. La piattaforma Java utilizza un sistema denominato Java Keystore per la gestione della sicurezza o meglio, per lo storage e amministrazione di tutto ciò che ruota intorno ai certificati digitali (Public/Private Key, Root CA, CSR, etc…). L’implementazione di default del Java Keystore è basata su file, quest’ultimo è in un formato proprietario denominato JKS. Per coloro che volessero approfondire l’argomento sicurezza in Java, consiglio la lettura di JDK 6 Security-related APIs & Developer Guides.

La piattaforma Java prevede due tipi di Java Keystore che preferisco suddividere nel seguente modo:

  • Server side: Java Keystore che contiene solitamente le coppie di chiavi pubbliche/private dei certificati utilizzati dall’applicazione server. Il nome solitamente attribuito a questo repository è keystore;
  • Client side: Java Keystore che contiene i soli certificati utilizzati dalle applicazioni che agiscono come client. Il nome solitamente attribuito a questo repository è trustStore.

La locazione predefinita di entrambi i keystore è <java-home>/lib/security/. Per ragioni di semplicità, durante il corso dell’articolo farò riferimento in modo generico al nome keystore.

Il classico errore cui si va incontro quando la Certificate Chain non è soddisfatta, è un eccezione del tipo indicato di seguito. L’eccezione è scatena perché non è stata trovata una Certification Path valida per la richiesta di connessione SSL eseguita.

Andiamo subito nel pratico e vediamo come affrontare uno scenario simile prendendo come esempio un recente articolo pubblicato sul mio blog, che mostrava come realizzare un client Java SOAP per il sistema di CRM SugarCRM. Gli esempi di connessione (mostrati nell’articolo) al servizio SOAP utilizzano il protocollo HTTP. Qualora facessimo uso del protocollo HTTPS per la connessione al servizio SOAP, andremmo incontro all’eccezione mostrata in precedenza. La soluzione al problema è molto semplice, occorre importare il certificato SSL sul proprio Java Keystore e segnarlo come affidabile. L’operazione è composta dai seguenti passi elementari:

  1. Esportazione/Salvataggio del certificato server in formato DER (Distinguished Encoding Rules) X.509 sulla propria macchina o su quella che eseguirà la connessione SSL;
  2. Importazione del certificato server sul Java Keystore.

L’esportazione del certificato server può essere eseguita in svariati modi, forse la via più semplice è attraverso un comune browser (Firefox, Internet Explore, Safari, etc…). Riporto il post che spiega come eseguire l’operazione con Mozilla Firefox: Exporting Server Certificate to File in Firefox 3. In modo analogo è possibile procedere con l’esportazione del certificato server utilizzando i più comuni browser.

Il metodo da me preferito per esportare il certificato server in formato DER è l’utilizzo del tool openssl. E’ più che sufficiente una sola linea di comando, per motivi di leggibilità, riporto il comando suddiviso in 4 linee:

Una volta ottenuto il certificato server, occorre importare quest’ultimo sul Java Keystore utilizzando l’apposito tool che prende il nome di keytool (keytool-Key and Certificate Management Tool). Ricordo che il keystore è il contenitore dei certificati digitali. Ognuno di voi potrebbe avere le configurazioni più disparate riguardo il Java Keystore, lo scenario qui proposto è quello base, keystore su file e su file custom, ovvero, creato dall’importazione del certificato server, lasciamo intatto il keystore di sistema.

Il comando sopra illustrato, creerà un nuovo keystore (protetto da password) all’interno del quale finirà il certificato server identificato con l’alias sugarcrm-fe-1. L’alias identifica in modo univoco l’item appena inserito, se volessimo fare un controllo sul buon esito dell’operazione dell’import, è sufficiente eseguire il seguente comando:

L’output del precedente comando sarà simile a quanto illustrato a seguire:

Nel caso in cui il certificato server non fosse stato importato con successo, il precedente comando avrebbe risposto con la seguente eccezione:

A questo punto tutto è pronto per poter eseguire con successo la connessione al servizio SOAP over HTTPS. Poiché abbiamo utilizzato un keystore custom invece di sfruttare quello di sistema, è necessario istruire la JVM circa il keystore da utilizzare, non sarebbe neppure una cattiva idea quella d’impostare un livello di debug sulla sola connessione SSL. I due argomenti che devono essere passati alla JVM sono quindi:

Dato che l’applicazione Java agisce in qualità di client, occorre specificare la locazione del keystore (che ricordo essere di tipo trustStore) attraverso la proprietà java.net.ssl.trustStore.

L’opzione di debug può aiutare a capire eventuali problemi in caso di malfunzionamento, è comuque utile per coloro che vogliono capire meglio il funzionamento del protocollo TLS/SSL, vengono tracciati tutti i messaggi scambiati tra il client ed il server per portare a termine la fase di handshake. A seguire un estratto dell’output a fronte dell’esecuzione della classe SugarCRMSoapClient.java, cambiando però l’indirizzo dell’endpoint in https://sugarcrm-fe-1.local/crm-6.1/service/v2/soap.php?wsdl

Attraverso un esempio pratico e direi pure abbastanza realistico, abbiamo visto come sia semplice e immediato importare certificati digitali sul Java Keystore affinché le applicazioni SSL funzionino in maniera corretta.

Credo che questo sia il mio terzo articolo nato per rispondere alle domande e/o problemi posti da miei colleghi!!!

Antonio Musarra

I began my journey into the world of computing from an Olivetti M24 PC (http://it.wikipedia.org/wiki/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until … Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.

Potrebbero interessarti anche...

  • Unmistakably informative post in this blog. Most what i read online is trash and copy paste but your posts are not alike. Bravo. I like to read and advise all my friend to read this blog. Thanks for share.

  • Daniele

    Ottima guida, grazie mille.

  • Francesco

    Ciao scusami io ho un cerficato .pem e un ca.crt come devo fare affinchè java usi questi certificati per far connettere il modalità tls il mio client?

  • Ciao Francesco,
    dovresti importare il certificato del server (.pem) e quello della Certificate Authority (.crt) all’interno del truststore (o quello di default o uno creato da te) e successivamente indicare a Java tramite la proprietà javax.net.ssl.trustStore la locazione del truststore, in questo modo la tua applicazione cercherà i certificati all’interno del truststore.

    Se ti servono altri dettagli fammi sapere.

    Bye,
    Antonio.

  • Francesco

    Ciao Antonio,
    grazie per la risposta, quindi ricapitolo i passi, ovviamente correggimi se sbaglio:

    1) Sono in possesso del certificato digitale fornito dal server (.pem) e ho il file .crt che mi consente di validare il certificato giusto?
    2) con il keytool di java creo il mio trustStore
    3) con il keytool importo i due file elencati prima
    4) in fase di esecuzione aggiungo le opzioni
    -Djavax.net.debug=ssl
    -Djavax.net.ssl.trustStore=pathdeltrustStore

    Ovviamente queste opzioni di avvio le posso anche riportare direttamente nella mia classe java gisuto?

    Grazie per l’attenzione
    FP

    • Ciao Francesco, il processo da te indicato è corretto. Le due opzioni puoi anche impostarle sulla tua classe Java però io ti consiglio d’impostare le variabili come argomenti della JVM.

      Bye, Antonio.

      • Francesco

        Ciao Antonio,
        ho un po di difficolta, perdonami ma non sono un esperto.
        Allora io ho un file .pem che è una chiave privata e un file .crt che è un certificato.
        Con keytool importo il certificato file .crt.
        La chiava (file .pem) non me la importare mi dice che non è un certificato X509.
        Devo fare una conversione del file?

        • Ciao Francesco,
          se la tua necessità è quella di agire semplicemente come client non dovrebbe servirti la chiave privata, ma solo il certificato del server e il certificato della CA. Solitamente quando è necessario importare la coppia PrivateKey/PublicKey e sono disponibili in formato pem, per importarli con keytool dovresti generare un PKCS#12 contenente la coppia.

          Bye,
          Antonio

  • Paolo

    Ciao Antonio, io dovrei agire come Client ed ho a disposizione un file .p12 (o pfx) esportato da browser. In questo caso come importare il tutto dentro il file .keystore?
    Grazie

    • Ciao,
      solitamente il formato di esportazione (da browser) utilizzato per storage di certificati server e di CA (Pubblic Key e non Private Key) può essere:

        x.509 (PEM o DER)
        x.509 (PEM o DER) compresa la catena di certificazione
        x.509 PKCS#7 con o senza catena di certificazione

      Il formato da te indicato il PCKS#12 o P12 è utilizzato come storage per la coppia Private/Public Key. Visto che tu dovresti agire da client, ti consiglio di esportare il certificato server e catena in formato PEM è successivamente d’importare il tutto sul trustStore via keytool.
      Cerco di farti un breve esempio:

      A) Esportazione del certificato + catena di certificazione di mail.google.com in x.509 PEM (per esempio via Firefox)
      B) Importazione del certificato con keytool sul trustStore

      # Comando per import del certificato server + CA sul trustStore MyTruststore.jks
      keytool -import -keystore MyTruststore.jks -alias MailAccounts -file accounts.gmail.com.pem -storepass mypassword

      Spero di essere stato chiaro.

      Bye,
      Antonio.

      • Paolo

        Innanzitutto, grazie per la risposta celere.
        Ho seguito le tue istruzioni ed è andata bene, provando ad esempio, il caso del certificato mail.google.com.
        Purtroppo non ho ottenuto lo stesso risultato con il certificato che mi interessava testare..Su firefox ho la situazione seguente:
        1) Una voce nella scheda “certificato personale”
        2) Un certificato nella scheda “Autorità” che riprende la stessa unità organizzativa.

        Nel caso di mail.google.com avevo esportato il certificato dalla scheda “server”.
        Mi manca qualche passaggio?

        Ciao

        • Ciao Paolo, ma non è che devi fare una muta autenticazione via HTTS ? In questo caso allora ti servirà sia il certificato lato client e il certificato del server (+ CA eventuale) ? In questo caso la coppia Private/Public Key andrà sul keystore e dovresti utilizzare il comando keytool per importare il file pkcs#12 (p12 o pfx), per esempio:

          keytool -importkeystore -srckeystore myClientCerts.p12 -destkeystore MyKeystore.jks -srcstoretype pkcs12

          mentre il certificato del server + CA andrà sul trustStore. Dal punto di vista programmatico, dalla tua classe java o direttamente come argomenti della JVM, dovresti impostare le system properties che servono per identificare e accedere al trustStore e KeyStore.

          Bye, Antonio.

  • Andrea

    Ciao Antonio,
    sono alle prese con un webservice che necessita validazione attraverso un certificato, e cercando aiuto in internet ho trovato il tuo articolo.
    Purtroppo per me non riesco ad arrivare al nocciolo neppure con i tuoi consigli!

    Ti spiego il mio problema, magari mi sto perdendo in un bicchier d’acqua:
    1) Mi hanno spedito un certicato, e a parte la password, NEqUCrA4a9ta (possiamo chiamarla passNEXTEL).
    Già qui mi trovo in difficoltà, perché seguendo le istruzioni per importarlo in cacerts, questa password non mi serve, in quanto devo usare la pass del mio keystore, che é changeit:

    sudo /Library/Java/Home/bin/keytool -import -trustcacerts -keystore /Library/Java/Home/lib/security/cacerts -storepass changeit -noprompt -alias nextelCertificate -file /Library/Java/Home/lib/security/nextelCertificate.cer

    2) Nel mio codice Java io setterei le proprietà in tal maniera:

    System.setProperty(“javax.net.ssl.keyStore”, “/Library/Java/Home/lib/security/cacerts”);
    System.setProperty(“javax.net.ssl.keyStorePassword”, “changeit”);
    System.setProperty(“javax.net.ssl.trustStore”, “/Library/Java/Home/lib/security/cacerts”);

    A cosa serve la passNEXTEL che mi hanno inviato, e dove la dovrei usare?
    Devo settare delle altre properties?
    Grazie mille in ogni caso!

    Ciao, Andrea

    • Ciao Andrea,
      cosa intendi per Web Service che richiede la validazione attraverso un certificato ?
      Immagino che tu sia il consumer del servizio e che la connessione avvenga via SSL/TLS.

      Nel caso in cui l’autenticazione sia unilaterale (solo il server è autenticato) a te serve solo il certificato del server + l’eventuale catena di certificazione. I certificati (Server + CA Chain) devono essere importati nel tuo TrustStore, la locazione del trustStore devi poi indicarla al programma Java tramite la system property.

      Nel caso in cui è richiesto un tipo autenticazione mutua, ovvero, che entrambe le parti siano autenticate, ti servirà sia il certificato (solo PublicKey) del server (+ CA eventuale) sia il certificato client (la coppia Private Key/Pubblic Key). In questo caso la coppia Private/Public Key (del client) andrà sul keystore mentre il certificato del server + CA andrà sul trustStore. Dovrai poi consegnare il tuo certificato (sola la Public Key) al provider del servizio.

      Solitamente la password è abbinata a certificati che sono nella forma PKCS#12, formato solitamente utilizzato come contenitore della chiave pubblica e privata.

      Per darti una mano mi serve lo scenario completo.

      Bye,
      Antonio.

  • Andrea

    Ciao Antonio,
    grazie mille della risposta.

    Purtroppo sono tragicamente ignorante per quel che riguarda webservices e certificati, sto lavorandoci per la prima volta, e mi manca quella comprensione della materia che mi farebbe esprimere con una terminologia adeguata.

    Il mio codice java usa un webservice per consumare un servizio di NEXTEL, che é una compagnia telefonica in Argentina (dove mi trovo ora!) per effettuare una ricarica di credito sul cellulare.
    A tale scopo ho dato loro l’IP da dove partiranno i miei request, e una chiave pubblica, in formato p12.
    Loro mi hanno inviato un certificato in formato .cer (ed una password associata ad esso) e la loro IP, ma ancora non la loro chiave pubblica. Mi dicono che non serve per provare il test di comunicazione (io invio ping e loro rispondono pong…).

    Da quello che mi hai spiegato, io sono nella situazione di mutua autenticazione, dico bene?
    E se sí, con i dati che ho, quali sarebbero le istruzioni per importare le chiavi nei due store?
    Nel codice Java userei le properties come ti ho descritto nel post precedente.

    Grazie della pazienza,
    Andrea

  • Andrea

    Ciao Antonio,
    ho provato per andare passo a passo solo la connessione, quindi come se fosse unilaterale, solo con il trustStore e relativa password inventata da me.

    Non pubblicare questo log, é troppo lungo!, volevo solo postartelo per sapere da te se almeno la parte del certificato é andata a buon fine, anche se poi ho un errore:

    Fino ad ServerHello, TLSv1 mi sembra tutto a posto, il risultato é praticamente uguale a quello che riporti nel tuo post, però poi qua incominciano ad apparire
    Certificate Extensions: 7
    [1]: ObjectId: 2.16.840.1.113730.1.13 Criticality=false
    e non ci capisco più niente di nuovo.

    17:04:32,113 INFO [STDOUT] keyStore is :
    17:04:32,117 INFO [STDOUT] keyStore type is : jks
    17:04:32,117 INFO [STDOUT] keyStore provider is :
    17:04:32,117 INFO [STDOUT] init keystore
    17:04:32,118 INFO [STDOUT] init keymanager of type SunX509
    17:04:32,122 INFO [STDOUT] trustStore is: /Users/blingnation/.mykeystore
    17:04:32,122 INFO [STDOUT] trustStore type is : jks
    17:04:32,122 INFO [STDOUT] trustStore provider is :
    17:04:32,122 INFO [STDOUT] init truststore
    17:04:32,837 INFO [STDOUT] adding as trusted cert:
    17:04:32,837 INFO [STDOUT] Subject: CN=rvtest.nextel.com.ar, OU=Seguridad Informatica, O=Nextel Communications Argentina SA, L=Bs As, ST=Bs As, C=AR
    17:04:32,837 INFO [STDOUT] Issuer: CN=RV_Test, OU=Seguridad Informatica, O=Nextel Communications Argentina SA, L=Bs As, ST=Bs As, C=AR
    17:04:32,838 INFO [STDOUT] Algorithm: RSA; Serial number: 0x27
    17:04:32,838 INFO [STDOUT] Valid from Thu Apr 23 10:40:03 BRT 2009 until Thu Jun 22 10:40:03 BRT 2028
    17:04:32,839 INFO [STDOUT] trigger seeding of SecureRandom
    17:04:32,839 INFO [STDOUT] done seeding SecureRandom
    17:04:33,318 INFO [STDOUT] Allow unsafe renegotiation: false
    Allow legacy hello messages: true
    Is initial handshake: true
    Is secure renegotiation: false
    17:04:33,320 INFO [STDOUT] %% No cached client session
    17:04:33,321 INFO [STDOUT] *** ClientHello, TLSv1
    17:04:33,321 INFO [STDOUT] RandomCookie:
    17:04:33,321 INFO [STDOUT] GMT: 1328143937
    17:04:33,321 INFO [STDOUT] bytes = {
    17:04:33,321 INFO [STDOUT] 22
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 99
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 253
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 217
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 133
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 78
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 198
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 13
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 126
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 255
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 225
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 180
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 60
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 200
    17:04:33,322 INFO [STDOUT] ,
    17:04:33,322 INFO [STDOUT] 36
    17:04:33,323 INFO [STDOUT] ,
    17:04:33,323 INFO [STDOUT] 15
    17:04:33,323 INFO [STDOUT] ,
    17:04:33,323 INFO [STDOUT] 52
    17:04:33,323 INFO [STDOUT] ,
    17:04:33,323 INFO [STDOUT] 205
    17:04:33,323 INFO [STDOUT] ,
    17:04:33,323 INFO [STDOUT] 153
    17:04:33,323 INFO [STDOUT] ,
    17:04:33,323 INFO [STDOUT] 179
    17:04:33,323 INFO [STDOUT] ,
    17:04:33,323 INFO [STDOUT] 123
    17:04:33,323 INFO [STDOUT] ,
    17:04:33,323 INFO [STDOUT] 92
    17:04:33,323 INFO [STDOUT] ,
    17:04:33,323 INFO [STDOUT] 134
    17:04:33,323 INFO [STDOUT] ,
    17:04:33,323 INFO [STDOUT] 152
    17:04:33,323 INFO [STDOUT] ,
    17:04:33,323 INFO [STDOUT] 32
    17:04:33,323 INFO [STDOUT] ,
    17:04:33,323 INFO [STDOUT] 11
    17:04:33,323 INFO [STDOUT] ,
    17:04:33,323 INFO [STDOUT] 128
    17:04:33,323 INFO [STDOUT] ,
    17:04:33,323 INFO [STDOUT] 158
    17:04:33,323 INFO [STDOUT] }
    17:04:33,323 INFO [STDOUT] Session ID:
    17:04:33,324 INFO [STDOUT] {}
    17:04:33,324 INFO [STDOUT] Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
    17:04:33,324 INFO [STDOUT] Compression Methods: {
    17:04:33,324 INFO [STDOUT] 0
    17:04:33,324 INFO [STDOUT] }
    17:04:33,324 INFO [STDOUT] ***
    17:04:33,324 INFO [STDOUT] http-127.0.0.1-8080-1, WRITE: TLSv1 Handshake, length = 81
    17:04:33,324 INFO [STDOUT] http-127.0.0.1-8080-1, WRITE: SSLv2 client hello message, length = 110
    17:04:33,353 INFO [STDOUT] http-127.0.0.1-8080-1, READ: TLSv1 Handshake, length = 81
    17:04:33,362 INFO [STDOUT] *** ServerHello, TLSv1
    17:04:33,362 INFO [STDOUT] RandomCookie:
    17:04:33,362 INFO [STDOUT] GMT: 1328147082
    17:04:33,362 INFO [STDOUT] bytes = {
    17:04:33,362 INFO [STDOUT] 67
    17:04:33,362 INFO [STDOUT] ,
    17:04:33,362 INFO [STDOUT] 211
    17:04:33,362 INFO [STDOUT] ,
    17:04:33,362 INFO [STDOUT] 205
    17:04:33,362 INFO [STDOUT] ,
    17:04:33,362 INFO [STDOUT] 34
    17:04:33,362 INFO [STDOUT] ,
    17:04:33,362 INFO [STDOUT] 152
    17:04:33,362 INFO [STDOUT] ,
    17:04:33,362 INFO [STDOUT] 20
    17:04:33,362 INFO [STDOUT] ,
    17:04:33,362 INFO [STDOUT] 14
    17:04:33,362 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 67
    17:04:33,363 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 240
    17:04:33,363 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 185
    17:04:33,363 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 205
    17:04:33,363 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 216
    17:04:33,363 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 178
    17:04:33,363 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 8
    17:04:33,363 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 31
    17:04:33,363 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 98
    17:04:33,363 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 166
    17:04:33,363 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 192
    17:04:33,363 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 113
    17:04:33,363 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 78
    17:04:33,363 INFO [STDOUT] ,
    17:04:33,363 INFO [STDOUT] 255
    17:04:33,364 INFO [STDOUT] ,
    17:04:33,364 INFO [STDOUT] 180
    17:04:33,364 INFO [STDOUT] ,
    17:04:33,364 INFO [STDOUT] 33
    17:04:33,364 INFO [STDOUT] ,
    17:04:33,364 INFO [STDOUT] 112
    17:04:33,364 INFO [STDOUT] ,
    17:04:33,364 INFO [STDOUT] 210
    17:04:33,364 INFO [STDOUT] ,
    17:04:33,364 INFO [STDOUT] 86
    17:04:33,364 INFO [STDOUT] ,
    17:04:33,364 INFO [STDOUT] 158
    17:04:33,364 INFO [STDOUT] ,
    17:04:33,364 INFO [STDOUT] 169
    17:04:33,364 INFO [STDOUT] }
    17:04:33,364 INFO [STDOUT] Session ID:
    17:04:33,364 INFO [STDOUT] {238, 51, 24, 146, 99, 68, 12, 117, 20, 214, 123, 68, 92, 144, 200, 56, 169, 89, 86, 188, 66, 254, 46, 126, 92, 94, 32, 80, 34, 201, 1, 252}
    17:04:33,364 INFO [STDOUT] Cipher Suite: SSL_RSA_WITH_RC4_128_MD5
    17:04:33,364 INFO [STDOUT] Compression Method: 0
    17:04:33,365 INFO [STDOUT] Extension renegotiation_info, renegotiated_connection:
    17:04:33,365 INFO [STDOUT] ***
    17:04:33,365 INFO [STDOUT] %% Created: [Session-1, SSL_RSA_WITH_RC4_128_MD5]
    17:04:33,365 INFO [STDOUT] ** SSL_RSA_WITH_RC4_128_MD5
    17:04:33,365 INFO [STDOUT] http-127.0.0.1-8080-1, READ: TLSv1 Handshake, length = 2510
    17:04:33,367 INFO [STDOUT] *** Certificate chain
    17:04:33,372 INFO [STDOUT] chain [0] = [
    [
    Version: V3
    Subject: CN=rvtest.nextel.com.ar, OU=Seguridad Informatica, O=Nextel Communications Argentina SA, L=Bs As, ST=Bs As, C=AR
    Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5

    Key: Sun RSA public key, 2048 bits
    modulus: 24158492230275348337432650775701551228915087832228610661007349155186026705409752865266606189983050997817296106159404457972716640507885963922772840762065840102708422663648039503284935052584255483706549708490657067324953213334648344124356994317972085896027703013133883847545257584625845155021417947708152454680426335253082930255969930770133747489773555129791001326450917788977877739319417272395480444378508319373721702377198158792912246251323210148686698429481403247790583645781619377148030582202064514439576418489782802974654472398470506044637026692524413063679022609660408240171006111128149391629181847312399489255721
    public exponent: 65537
    Validity: [From: Thu Apr 23 10:40:03 BRT 2009,
    To: Thu Jun 22 10:40:03 BRT 2028]
    Issuer: CN=RV_Test, OU=Seguridad Informatica, O=Nextel Communications Argentina SA, L=Bs As, ST=Bs As, C=AR
    SerialNumber: [ 27]

    Certificate Extensions: 7
    [1]: ObjectId: 2.16.840.1.113730.1.13 Criticality=false
    Extension unknown: DER encoded OCTET string =
    0000: 04 1E 16 1C 54 69 6E 79 43 41 20 47 65 6E 65 72 ….TinyCA Gener
    0010: 61 74 65 64 20 43 65 72 74 69 66 69 63 61 74 65 ated Certificate

    [2]: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: 8B 20 29 25 26 2F B9 46 1D 77 2F 4C FD 1B 0D 86 . )%&/.F.w/L….
    0010: B6 B9 B8 73 …s
    ]
    ]

    [3]: ObjectId: 2.16.840.1.113730.1.1 Criticality=false
    NetscapeCertType [
    SSL server
    ]

    [4]: ObjectId: 2.5.29.18 Criticality=false
    IssuerAlternativeName [
    ]

    [5]: ObjectId: 2.5.29.35 Criticality=false
    AuthorityKeyIdentifier [
    KeyIdentifier [
    0000: AC DA B6 F6 03 B5 A9 BF 2F 12 55 DF 5E B0 3F 0E ……../.U.^.?.
    0010: 92 CA 70 51 ..pQ
    ]

    [CN=RV_Test, OU=Seguridad Informatica, O=Nextel Communications Argentina SA, L=Bs As, ST=Bs As, C=AR]
    SerialNumber: [ a10092ab efbb1996]
    ]

    [6]: ObjectId: 2.5.29.17 Criticality=false
    SubjectAlternativeName [
    ]

    [7]: ObjectId: 2.5.29.19 Criticality=false
    BasicConstraints:[
    CA:false
    PathLen: undefined
    ]

    ]
    Algorithm: [SHA1withRSA]
    Signature:
    0000: C4 03 A1 6C D4 78 59 33 D2 63 19 A2 9E BD 65 8E …l.xY3.c….e.
    0010: D1 3E AA B8 0A FC 04 28 00 D3 73 6B 89 E9 8D 0A .>…..(..sk….
    0020: CB B1 7C 64 3A 0F 69 3F 6F 8B 1F 72 CE 02 8E 71 …d:.i?o..r…q
    0030: 4E 17 9C 72 85 AB E5 CA 6C AC A5 58 BF 0C 30 6E N..r….l..X..0n
    0040: DC B5 6D D5 11 4B B3 A1 BD 4F 37 1C FA 14 5B 56 ..m..K…O7…[V
    0050: B8 15 5E C7 94 E4 D1 62 58 3E B8 00 0A 16 BD E6 ..^….bX>……
    0060: 9A 54 8C 04 EB 34 58 73 43 6C D1 04 F1 CE 3F E0 .T…4XsCl….?.
    0070: D0 9A 9F 51 E0 BB B4 2E FD 7F 3D 7A 55 03 85 BD …Q……=zU…
    0080: A8 D7 6A 7D 4E 12 A4 E5 D4 2C A6 2F C8 84 5B B0 ..j.N….,./..[.
    0090: 6E 89 FA 00 4F 09 0E 09 BC DD 48 70 11 87 87 EF n…O…..Hp….
    00A0: 38 6E 4D F5 36 D6 03 17 DF 4A BE BC A6 BD 75 51 8nM.6….J….uQ
    00B0: 1C ED 75 BA 84 63 D1 1B 12 4E D7 09 72 53 18 9D ..u..c…N..rS..
    00C0: 04 3F 2E 84 F7 C6 58 2F 76 38 B2 2E C8 EA D5 1D .?….X/v8……
    00D0: 91 A7 D2 A2 9C FE D7 00 A1 93 97 FD 4E 7C 1D 32 …………N..2
    00E0: 86 05 7B D2 6E 0C 96 C4 4C 1D A4 02 9B 47 B2 8C ….n…L….G..
    00F0: 7D 9A AE B7 FE 2D BC 9A DE 00 86 00 D0 2E 24 D0 …..-……..$.

    ]
    17:04:33,377 INFO [STDOUT] chain [1] = [
    [
    Version: V3
    Subject: CN=RV_Test, OU=Seguridad Informatica, O=Nextel Communications Argentina SA, L=Bs As, ST=Bs As, C=AR
    Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5

    Key: Sun RSA public key, 2048 bits
    modulus: 26527773460463393713112419364273989144241494654720550238284880092068182995325254054095851756899699451941336688852203778711958105269006548078923651070217661081250299164434637072990032957553357074514866608412028766142748889920166440501360254641296279451352249289280525251966121622277985840964909895109626439858508808971602640405562686134395376041206958546218636377246925632157409345205263322339115084476917874565695523871398088155973403445395846833576781986816824654871285620103375877244807049458181465905234424083608318653888603321284649933955317654068138854895867898004296282717377979428088726140022550575657602958751
    public exponent: 65537
    Validity: [From: Mon Mar 26 14:10:02 BRT 2007,
    To: Thu Mar 23 14:10:02 BRT 2017]
    Issuer: CN=RV_Test, OU=Seguridad Informatica, O=Nextel Communications Argentina SA, L=Bs As, ST=Bs As, C=AR
    SerialNumber: [ a10092ab efbb1996]

    Certificate Extensions: 7
    [1]: ObjectId: 2.16.840.1.113730.1.1 Criticality=false
    NetscapeCertType [
    SSL CA
    S/MIME CA
    ]

    [2]: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: AC DA B6 F6 03 B5 A9 BF 2F 12 55 DF 5E B0 3F 0E ……../.U.^.?.
    0010: 92 CA 70 51 ..pQ
    ]
    ]

    [3]: ObjectId: 2.5.29.18 Criticality=false
    IssuerAlternativeName [
    ]

    [4]: ObjectId: 2.5.29.35 Criticality=false
    AuthorityKeyIdentifier [
    KeyIdentifier [
    0000: AC DA B6 F6 03 B5 A9 BF 2F 12 55 DF 5E B0 3F 0E ……../.U.^.?.
    0010: 92 CA 70 51 ..pQ
    ]

    [CN=RV_Test, OU=Seguridad Informatica, O=Nextel Communications Argentina SA, L=Bs As, ST=Bs As, C=AR]
    SerialNumber: [ a10092ab efbb1996]
    ]

    [5]: ObjectId: 2.5.29.17 Criticality=false
    SubjectAlternativeName [
    ]

    [6]: ObjectId: 2.5.29.15 Criticality=false
    KeyUsage [
    Key_CertSign
    Crl_Sign
    ]

    [7]: ObjectId: 2.5.29.19 Criticality=true
    BasicConstraints:[
    CA:true
    PathLen:2147483647
    ]

    ]
    Algorithm: [SHA1withRSA]
    Signature:
    0000: 87 30 65 79 53 A0 96 D3 21 E4 63 AA 18 0D 46 C6 .0eyS…!.c…F.
    0010: 3C 83 F8 74 52 11 F4 CA A2 46 C7 C1 61 48 48 A9 .]:.
    00D0: FD F6 EF 36 B2 C6 B5 F7 3C D0 75 65 92 88 5D BF …6….<.ue..].
    00E0: 65 F4 75 16 CB 9A 84 A2 6C EA 3C 19 65 F1 28 95 e.u…..l……(..sk….
    0020: CB B1 7C 64 3A 0F 69 3F 6F 8B 1F 72 CE 02 8E 71 …d:.i?o..r…q
    0030: 4E 17 9C 72 85 AB E5 CA 6C AC A5 58 BF 0C 30 6E N..r….l..X..0n
    0040: DC B5 6D D5 11 4B B3 A1 BD 4F 37 1C FA 14 5B 56 ..m..K…O7…[V
    0050: B8 15 5E C7 94 E4 D1 62 58 3E B8 00 0A 16 BD E6 ..^….bX>……
    0060: 9A 54 8C 04 EB 34 58 73 43 6C D1 04 F1 CE 3F E0 .T…4XsCl….?.
    0070: D0 9A 9F 51 E0 BB B4 2E FD 7F 3D 7A 55 03 85 BD …Q……=zU…
    0080: A8 D7 6A 7D 4E 12 A4 E5 D4 2C A6 2F C8 84 5B B0 ..j.N….,./..[.
    0090: 6E 89 FA 00 4F 09 0E 09 BC DD 48 70 11 87 87 EF n…O…..Hp….
    00A0: 38 6E 4D F5 36 D6 03 17 DF 4A BE BC A6 BD 75 51 8nM.6….J….uQ
    00B0: 1C ED 75 BA 84 63 D1 1B 12 4E D7 09 72 53 18 9D ..u..c…N..rS..
    00C0: 04 3F 2E 84 F7 C6 58 2F 76 38 B2 2E C8 EA D5 1D .?….X/v8……
    00D0: 91 A7 D2 A2 9C FE D7 00 A1 93 97 FD 4E 7C 1D 32 …………N..2
    00E0: 86 05 7B D2 6E 0C 96 C4 4C 1D A4 02 9B 47 B2 8C ….n…L….G..
    00F0: 7D 9A AE B7 FE 2D BC 9A DE 00 86 00 D0 2E 24 D0 …..-……..$.

    ]
    17:04:33,406 INFO [STDOUT] http-127.0.0.1-8080-1, READ: TLSv1 Handshake, length = 4
    17:04:33,407 INFO [STDOUT] *** ServerHelloDone
    17:04:33,442 INFO [STDOUT] *** ClientKeyExchange, RSA PreMasterSecret, TLSv1
    17:04:33,442 INFO [STDOUT] http-127.0.0.1-8080-1, WRITE: TLSv1 Handshake, length = 262
    17:04:33,442 INFO [STDOUT] SESSION KEYGEN:
    17:04:33,442 INFO [STDOUT] PreMaster Secret:
    000017:04:33,442 INFO [STDOUT] :
    0317:04:33,443 INFO [STDOUT]
    0117:04:33,443 INFO [STDOUT]
    7217:04:33,443 INFO [STDOUT]
    1C17:04:33,443 INFO [STDOUT]
    1817:04:33,443 INFO [STDOUT]
    E017:04:33,443 INFO [STDOUT]
    8517:04:33,443 INFO [STDOUT]
    C817:04:33,443 INFO [STDOUT]
    17:04:33,443 INFO [STDOUT]
    6817:04:33,443 INFO [STDOUT]
    3A17:04:33,443 INFO [STDOUT]
    B517:04:33,443 INFO [STDOUT]
    CF17:04:33,443 INFO [STDOUT]
    7517:04:33,443 INFO [STDOUT]
    8717:04:33,443 INFO [STDOUT]
    4517:04:33,443 INFO [STDOUT]
    0817:04:33,443 INFO [STDOUT]
    17:04:33,443 INFO [STDOUT]
    17:04:33,443 INFO [STDOUT] .
    17:04:33,443 INFO [STDOUT] .
    r17:04:33,443 INFO [STDOUT] .
    17:04:33,443 INFO [STDOUT] .
    17:04:33,443 INFO [STDOUT] .
    17:04:33,443 INFO [STDOUT] .
    17:04:33,443 INFO [STDOUT] .
    h:17:04:33,443 INFO [STDOUT] .
    17:04:33,444 INFO [STDOUT] .
    u17:04:33,444 INFO [STDOUT] .
    E17:04:33,444 INFO [STDOUT] .
    001017:04:33,444 INFO [STDOUT] :
    2917:04:33,444 INFO [STDOUT]
    A817:04:33,444 INFO [STDOUT]
    CD17:04:33,444 INFO [STDOUT]
    B417:04:33,444 INFO [STDOUT]
    4D17:04:33,444 INFO [STDOUT]
    F617:04:33,444 INFO [STDOUT]
    6F17:04:33,444 INFO [STDOUT]
    EE17:04:33,444 INFO [STDOUT]
    17:04:33,444 INFO [STDOUT]
    7517:04:33,444 INFO [STDOUT]
    0317:04:33,444 INFO [STDOUT]
    3B17:04:33,444 INFO [STDOUT]
    0E17:04:33,444 INFO [STDOUT]
    8417:04:33,444 INFO [STDOUT]
    6217:04:33,444 INFO [STDOUT]
    2717:04:33,444 INFO [STDOUT]
    7A17:04:33,444 INFO [STDOUT]
    17:04:33,444 INFO [STDOUT]
    )17:04:33,444 INFO [STDOUT] .
    17:04:33,444 INFO [STDOUT] .
    17:04:33,444 INFO [STDOUT] .
    M17:04:33,444 INFO [STDOUT] .
    o17:04:33,445 INFO [STDOUT] .
    u17:04:33,445 INFO [STDOUT] .
    ;17:04:33,445 INFO [STDOUT] .
    17:04:33,445 INFO [STDOUT] .
    b’z002017:04:33,445 INFO [STDOUT] :
    C617:04:33,445 INFO [STDOUT]
    4B17:04:33,445 INFO [STDOUT]
    5C17:04:33,445 INFO [STDOUT]
    2C17:04:33,445 INFO [STDOUT]
    BC17:04:33,445 INFO [STDOUT]
    1A17:04:33,445 INFO [STDOUT]
    4017:04:33,445 INFO [STDOUT]
    6417:04:33,445 INFO [STDOUT]
    17:04:33,445 INFO [STDOUT]
    1317:04:33,445 INFO [STDOUT]
    E917:04:33,445 INFO [STDOUT]
    3F17:04:33,445 INFO [STDOUT]
    9817:04:33,445 INFO [STDOUT]
    D117:04:33,445 INFO [STDOUT]
    3417:04:33,445 INFO [STDOUT]
    5117:04:33,445 INFO [STDOUT]
    E717:04:33,445 INFO [STDOUT]
    17:04:33,445 INFO [STDOUT]
    17:04:33,445 INFO [STDOUT] .
    K,17:04:33,445 INFO [STDOUT] .
    17:04:33,446 INFO [STDOUT] .
    @d17:04:33,446 INFO [STDOUT] .
    17:04:33,446 INFO [STDOUT] .
    ?17:04:33,446 INFO [STDOUT] .
    17:04:33,446 INFO [STDOUT] .
    4Q17:04:33,446 INFO [STDOUT] .
    17:04:33,454 INFO [STDOUT] CONNECTION KEYGEN:
    17:04:33,454 INFO [STDOUT] Client Nonce:
    000017:04:33,454 INFO [STDOUT] :
    4F17:04:33,454 INFO [STDOUT]
    2A17:04:33,454 INFO [STDOUT]
    DE17:04:33,455 INFO [STDOUT]
    4117:04:33,455 INFO [STDOUT]
    1617:04:33,455 INFO [STDOUT]
    6317:04:33,455 INFO [STDOUT]
    FD17:04:33,455 INFO [STDOUT]
    D917:04:33,455 INFO [STDOUT]
    17:04:33,455 INFO [STDOUT]
    8517:04:33,455 INFO [STDOUT]
    4E17:04:33,455 INFO [STDOUT]
    C617:04:33,455 INFO [STDOUT]
    0D17:04:33,455 INFO [STDOUT]
    7E17:04:33,455 INFO [STDOUT]
    FF17:04:33,455 INFO [STDOUT]
    E117:04:33,455 INFO [STDOUT]
    B417:04:33,455 INFO [STDOUT]
    17:04:33,455 INFO [STDOUT]
    O*17:04:33,455 INFO [STDOUT] .
    A17:04:33,455 INFO [STDOUT] .
    c17:04:33,455 INFO [STDOUT] .
    17:04:33,455 INFO [STDOUT] .
    17:04:33,455 INFO [STDOUT] .
    N17:04:33,455 INFO [STDOUT] .
    17:04:33,455 INFO [STDOUT] .
    17:04:33,455 INFO [STDOUT] .
    17:04:33,455 INFO [STDOUT] .
    17:04:33,456 INFO [STDOUT] .
    17:04:33,456 INFO [STDOUT] .
    001017:04:33,456 INFO [STDOUT] :
    3C17:04:33,456 INFO [STDOUT]
    C817:04:33,456 INFO [STDOUT]
    2417:04:33,456 INFO [STDOUT]
    0F17:04:33,456 INFO [STDOUT]
    3417:04:33,456 INFO [STDOUT]
    CD17:04:33,456 INFO [STDOUT]
    9917:04:33,456 INFO [STDOUT]
    B317:04:33,456 INFO [STDOUT]
    17:04:33,456 INFO [STDOUT]
    7B17:04:33,456 INFO [STDOUT]
    5C17:04:33,456 INFO [STDOUT]
    8617:04:33,456 INFO [STDOUT]
    9817:04:33,456 INFO [STDOUT]
    2017:04:33,456 INFO [STDOUT]
    0B17:04:33,456 INFO [STDOUT]
    8017:04:33,456 INFO [STDOUT]
    9E17:04:33,456 INFO [STDOUT]
    17:04:33,456 INFO [STDOUT]
    <17:04:33,456 INFO [STDOUT] .
    $17:04:33,457 INFO [STDOUT] .
    417:04:33,457 INFO [STDOUT] .
    17:04:33,457 INFO [STDOUT] .
    17:04:33,457 INFO [STDOUT] .
    17:04:33,457 INFO [STDOUT] .
    17:04:33,457 INFO [STDOUT] .
    17:04:33,457 INFO [STDOUT] .
    17:04:33,457 INFO [STDOUT] .
    17:04:33,457 INFO [STDOUT] .
    17:04:33,457 INFO [STDOUT] .
    17:04:33,457 INFO [STDOUT] Server Nonce:
    000017:04:33,457 INFO [STDOUT] :
    4F17:04:33,457 INFO [STDOUT]
    2A17:04:33,462 INFO [STDOUT]
    EB17:04:33,462 INFO [STDOUT]
    8A17:04:33,462 INFO [STDOUT]
    4317:04:33,462 INFO [STDOUT]
    D317:04:33,462 INFO [STDOUT]
    CD17:04:33,463 INFO [STDOUT]
    2217:04:33,463 INFO [STDOUT]
    17:04:33,463 INFO [STDOUT]
    9817:04:33,463 INFO [STDOUT]
    1417:04:33,463 INFO [STDOUT]
    0E17:04:33,463 INFO [STDOUT]
    4317:04:33,463 INFO [STDOUT]
    F017:04:33,463 INFO [STDOUT]
    B917:04:33,463 INFO [STDOUT]
    CD17:04:33,463 INFO [STDOUT]
    D817:04:33,463 INFO [STDOUT]
    17:04:33,463 INFO [STDOUT]
    O*17:04:33,463 INFO [STDOUT] .
    17:04:33,463 INFO [STDOUT] .
    C17:04:33,463 INFO [STDOUT] .
    17:04:33,463 INFO [STDOUT] .
    "17:04:33,463 INFO [STDOUT] .
    17:04:33,463 INFO [STDOUT] .
    17:04:33,463 INFO [STDOUT] .
    C17:04:33,463 INFO [STDOUT] .
    17:04:33,463 INFO [STDOUT] .
    17:04:33,463 INFO [STDOUT] .
    17:04:33,463 INFO [STDOUT] .
    001017:04:33,463 INFO [STDOUT] :
    B217:04:33,463 INFO [STDOUT]
    0817:04:33,463 INFO [STDOUT]
    1F17:04:33,463 INFO [STDOUT]
    6217:04:33,464 INFO [STDOUT]
    A617:04:33,464 INFO [STDOUT]
    C017:04:33,464 INFO [STDOUT]
    7117:04:33,465 INFO [STDOUT]
    4E17:04:33,465 INFO [STDOUT]
    17:04:33,465 INFO [STDOUT]
    FF17:04:33,465 INFO [STDOUT]
    B417:04:33,465 INFO [STDOUT]
    2117:04:33,465 INFO [STDOUT]
    7017:04:33,465 INFO [STDOUT]
    D217:04:33,465 INFO [STDOUT]
    5617:04:33,465 INFO [STDOUT]
    9E17:04:33,465 INFO [STDOUT]
    A917:04:33,466 INFO [STDOUT]
    17:04:33,466 INFO [STDOUT]
    17:04:33,466 INFO [STDOUT] .
    17:04:33,466 INFO [STDOUT] .
    17:04:33,466 INFO [STDOUT] .
    b17:04:33,466 INFO [STDOUT] .
    17:04:33,466 INFO [STDOUT] .
    qN17:04:33,466 INFO [STDOUT] .
    17:04:33,466 INFO [STDOUT] .
    !p17:04:33,466 INFO [STDOUT] .
    V17:04:33,466 INFO [STDOUT] .
    17:04:33,466 INFO [STDOUT] .
    17:04:33,467 INFO [STDOUT] Master Secret:
    000017:04:33,467 INFO [STDOUT] :
    7017:04:33,467 INFO [STDOUT]
    F717:04:33,467 INFO [STDOUT]
    AC17:04:33,467 INFO [STDOUT]
    0317:04:33,467 INFO [STDOUT]
    C317:04:33,467 INFO [STDOUT]
    E117:04:33,467 INFO [STDOUT]
    AA17:04:33,467 INFO [STDOUT]
    C617:04:33,467 INFO [STDOUT]
    17:04:33,467 INFO [STDOUT]
    A017:04:33,468 INFO [STDOUT]
    7417:04:33,468 INFO [STDOUT]
    6217:04:33,468 INFO [STDOUT]
    6C17:04:33,468 INFO [STDOUT]
    E717:04:33,468 INFO [STDOUT]
    B517:04:33,468 INFO [STDOUT]
    D417:04:33,468 INFO [STDOUT]
    4C17:04:33,468 INFO [STDOUT]
    17:04:33,468 INFO [STDOUT]
    p17:04:33,468 INFO [STDOUT] .
    17:04:33,468 INFO [STDOUT] .
    17:04:33,468 INFO [STDOUT] .
    17:04:33,468 INFO [STDOUT] .
    17:04:33,468 INFO [STDOUT] .
    17:04:33,468 INFO [STDOUT] .
    17:04:33,468 INFO [STDOUT] .
    17:04:33,468 INFO [STDOUT] .
    tbl17:04:33,468 INFO [STDOUT] .
    17:04:33,468 INFO [STDOUT] .
    17:04:33,468 INFO [STDOUT] .
    L001017:04:33,468 INFO [STDOUT] :
    CD17:04:33,468 INFO [STDOUT]
    B117:04:33,468 INFO [STDOUT]
    D417:04:33,468 INFO [STDOUT]
    0B17:04:33,468 INFO [STDOUT]
    9A17:04:33,468 INFO [STDOUT]
    1217:04:33,468 INFO [STDOUT]
    3917:04:33,469 INFO [STDOUT]
    6817:04:33,469 INFO [STDOUT]
    17:04:33,469 INFO [STDOUT]
    BF17:04:33,469 INFO [STDOUT]
    6317:04:33,469 INFO [STDOUT]
    6C17:04:33,469 INFO [STDOUT]
    1C17:04:33,469 INFO [STDOUT]
    5517:04:33,469 INFO [STDOUT]
    B517:04:33,469 INFO [STDOUT]
    EF17:04:33,469 INFO [STDOUT]
    F817:04:33,469 INFO [STDOUT]
    17:04:33,469 INFO [STDOUT]
    17:04:33,469 INFO [STDOUT] .
    17:04:33,469 INFO [STDOUT] .
    17:04:33,469 INFO [STDOUT] .
    17:04:33,469 INFO [STDOUT] .
    17:04:33,469 INFO [STDOUT] .
    17:04:33,469 INFO [STDOUT] .
    9h17:04:33,469 INFO [STDOUT] .
    cl17:04:33,469 INFO [STDOUT] .
    U17:04:33,469 INFO [STDOUT] .
    17:04:33,469 INFO [STDOUT] .
    17:04:33,469 INFO [STDOUT] .
    002017:04:33,469 INFO [STDOUT] :
    9517:04:33,469 INFO [STDOUT]
    DC17:04:33,469 INFO [STDOUT]
    4B17:04:33,470 INFO [STDOUT]
    4917:04:33,470 INFO [STDOUT]
    7517:04:33,470 INFO [STDOUT]
    CD17:04:33,470 INFO [STDOUT]
    8617:04:33,470 INFO [STDOUT]
    2C17:04:33,470 INFO [STDOUT]
    17:04:33,470 INFO [STDOUT]
    4B17:04:33,470 INFO [STDOUT]
    A317:04:33,470 INFO [STDOUT]
    5E17:04:33,470 INFO [STDOUT]
    EA17:04:33,470 INFO [STDOUT]
    EB17:04:33,470 INFO [STDOUT]
    7C17:04:33,470 INFO [STDOUT]
    AB17:04:33,470 INFO [STDOUT]
    E117:04:33,470 INFO [STDOUT]
    17:04:33,470 INFO [STDOUT]
    17:04:33,470 INFO [STDOUT] .
    17:04:33,470 INFO [STDOUT] .
    KIu17:04:33,470 INFO [STDOUT] .
    17:04:33,470 INFO [STDOUT] .
    ,K17:04:33,470 INFO [STDOUT] .
    ^17:04:33,470 INFO [STDOUT] .
    17:04:33,470 INFO [STDOUT] .
    17:04:33,470 INFO [STDOUT] .
    17:04:33,470 INFO [STDOUT] .
    17:04:33,470 INFO [STDOUT] .
    17:04:33,471 INFO [STDOUT] Client MAC write Secret:
    000017:04:33,471 INFO [STDOUT] :
    2017:04:33,471 INFO [STDOUT]
    7C17:04:33,471 INFO [STDOUT]
    6A17:04:33,471 INFO [STDOUT]
    5817:04:33,471 INFO [STDOUT]
    E017:04:33,471 INFO [STDOUT]
    D017:04:33,471 INFO [STDOUT]
    2D17:04:33,471 INFO [STDOUT]
    7017:04:33,471 INFO [STDOUT]
    17:04:33,471 INFO [STDOUT]
    7417:04:33,471 INFO [STDOUT]
    B017:04:33,471 INFO [STDOUT]
    B317:04:33,471 INFO [STDOUT]
    B217:04:33,471 INFO [STDOUT]
    C417:04:33,471 INFO [STDOUT]
    AF17:04:33,471 INFO [STDOUT]
    AE17:04:33,471 INFO [STDOUT]
    CE17:04:33,471 INFO [STDOUT]
    17:04:33,471 INFO [STDOUT]
    17:04:33,471 INFO [STDOUT] .
    jX17:04:33,471 INFO [STDOUT] .
    17:04:33,471 INFO [STDOUT] .
    -pt17:04:33,471 INFO [STDOUT] .
    17:04:33,471 INFO [STDOUT] .
    17:04:33,471 INFO [STDOUT] .
    17:04:33,472 INFO [STDOUT] .
    17:04:33,472 INFO [STDOUT] .
    17:04:33,472 INFO [STDOUT] .
    17:04:33,472 INFO [STDOUT] .
    17:04:33,472 INFO [STDOUT] Server MAC write Secret:
    000017:04:33,472 INFO [STDOUT] :
    E117:04:33,472 INFO [STDOUT]
    5317:04:33,472 INFO [STDOUT]
    3417:04:33,472 INFO [STDOUT]
    B317:04:33,472 INFO [STDOUT]
    1117:04:33,472 INFO [STDOUT]
    A917:04:33,472 INFO [STDOUT]
    CA17:04:33,472 INFO [STDOUT]
    6617:04:33,472 INFO [STDOUT]
    17:04:33,472 INFO [STDOUT]
    D717:04:33,472 INFO [STDOUT]
    A017:04:33,472 INFO [STDOUT]
    7F17:04:33,472 INFO [STDOUT]
    2917:04:33,472 INFO [STDOUT]
    F917:04:33,472 INFO [STDOUT]
    2117:04:33,472 INFO [STDOUT]
    C117:04:33,472 INFO [STDOUT]
    2517:04:33,472 INFO [STDOUT]
    17:04:33,473 INFO [STDOUT]
    17:04:33,473 INFO [STDOUT] .
    S417:04:33,473 INFO [STDOUT] .
    17:04:33,473 INFO [STDOUT] .
    17:04:33,473 INFO [STDOUT] .
    17:04:33,473 INFO [STDOUT] .
    f17:04:33,473 INFO [STDOUT] .
    17:04:33,473 INFO [STDOUT] .
    17:04:33,473 INFO [STDOUT] .
    )17:04:33,473 INFO [STDOUT] .
    !17:04:33,473 INFO [STDOUT] .
    %17:04:33,473 INFO [STDOUT] Client write key:
    000017:04:33,473 INFO [STDOUT] :
    7417:04:33,473 INFO [STDOUT]
    8317:04:33,473 INFO [STDOUT]
    D317:04:33,473 INFO [STDOUT]
    B017:04:33,473 INFO [STDOUT]
    DB17:04:33,473 INFO [STDOUT]
    F417:04:33,473 INFO [STDOUT]
    8917:04:33,473 INFO [STDOUT]
    A417:04:33,473 INFO [STDOUT]
    17:04:33,473 INFO [STDOUT]
    0F17:04:33,473 INFO [STDOUT]
    3917:04:33,473 INFO [STDOUT]
    9917:04:33,473 INFO [STDOUT]
    CC17:04:33,474 INFO [STDOUT]
    6117:04:33,474 INFO [STDOUT]
    A117:04:33,474 INFO [STDOUT]
    B917:04:33,474 INFO [STDOUT]
    4417:04:33,474 INFO [STDOUT]
    17:04:33,474 INFO [STDOUT]
    t17:04:33,474 INFO [STDOUT] .
    17:04:33,474 INFO [STDOUT] .
    17:04:33,474 INFO [STDOUT] .
    17:04:33,474 INFO [STDOUT] .
    17:04:33,474 INFO [STDOUT] .
    17:04:33,474 INFO [STDOUT] .
    17:04:33,474 INFO [STDOUT] .
    17:04:33,474 INFO [STDOUT] .
    917:04:33,474 INFO [STDOUT] .
    17:04:33,474 INFO [STDOUT] .
    a17:04:33,474 INFO [STDOUT] .
    17:04:33,474 INFO [STDOUT] .
    D17:04:33,474 INFO [STDOUT] Server write key:
    000017:04:33,474 INFO [STDOUT] :
    4317:04:33,474 INFO [STDOUT]
    1617:04:33,474 INFO [STDOUT]
    3017:04:33,474 INFO [STDOUT]
    F817:04:33,474 INFO [STDOUT]
    8F17:04:33,475 INFO [STDOUT]
    0517:04:33,475 INFO [STDOUT]
    A617:04:33,475 INFO [STDOUT]
    7417:04:33,475 INFO [STDOUT]
    17:04:33,475 INFO [STDOUT]
    1C17:04:33,475 INFO [STDOUT]
    9B17:04:33,475 INFO [STDOUT]
    9617:04:33,475 INFO [STDOUT]
    BD17:04:33,475 INFO [STDOUT]
    CA17:04:33,475 INFO [STDOUT]
    BA17:04:33,475 INFO [STDOUT]
    2D17:04:33,475 INFO [STDOUT]
    4417:04:33,475 INFO [STDOUT]
    17:04:33,475 INFO [STDOUT]
    C17:04:33,475 INFO [STDOUT] .
    017:04:33,475 INFO [STDOUT] .
    17:04:33,475 INFO [STDOUT] .
    17:04:33,475 INFO [STDOUT] .
    17:04:33,475 INFO [STDOUT] .
    t17:04:33,475 INFO [STDOUT] .
    17:04:33,475 INFO [STDOUT] .
    17:04:33,475 INFO [STDOUT] .
    17:04:33,475 INFO [STDOUT] .
    17:04:33,475 INFO [STDOUT] .
    17:04:33,475 INFO [STDOUT] .
    -D17:04:33,475 INFO [STDOUT] … no IV used for this cipher
    17:04:33,477 INFO [STDOUT] http-127.0.0.1-8080-1, WRITE: TLSv1 Change Cipher Spec, length = 1
    17:04:33,546 INFO [STDOUT] *** Finished
    17:04:33,546 INFO [STDOUT] verify_data: {
    17:04:33,546 INFO [STDOUT] 198
    17:04:33,546 INFO [STDOUT] ,
    17:04:33,546 INFO [STDOUT] 112
    17:04:33,546 INFO [STDOUT] ,
    17:04:33,546 INFO [STDOUT] 155
    17:04:33,546 INFO [STDOUT] ,
    17:04:33,546 INFO [STDOUT] 215
    17:04:33,546 INFO [STDOUT] ,
    17:04:33,546 INFO [STDOUT] 195
    17:04:33,546 INFO [STDOUT] ,
    17:04:33,546 INFO [STDOUT] 49
    17:04:33,546 INFO [STDOUT] ,
    17:04:33,546 INFO [STDOUT] 125
    17:04:33,546 INFO [STDOUT] ,
    17:04:33,546 INFO [STDOUT] 20
    17:04:33,546 INFO [STDOUT] ,
    17:04:33,546 INFO [STDOUT] 46
    17:04:33,546 INFO [STDOUT] ,
    17:04:33,546 INFO [STDOUT] 225
    17:04:33,547 INFO [STDOUT] ,
    17:04:33,547 INFO [STDOUT] 134
    17:04:33,547 INFO [STDOUT] ,
    17:04:33,547 INFO [STDOUT] 122
    17:04:33,547 INFO [STDOUT] }
    17:04:33,547 INFO [STDOUT] ***
    17:04:33,547 INFO [STDOUT] http-127.0.0.1-8080-1, WRITE: TLSv1 Handshake, length = 32
    17:04:33,572 INFO [STDOUT] http-127.0.0.1-8080-1, READ: TLSv1 Change Cipher Spec, length = 1
    17:04:33,573 INFO [STDOUT] http-127.0.0.1-8080-1, READ: TLSv1 Handshake, length = 32
    17:04:33,573 INFO [STDOUT] *** Finished
    17:04:33,573 INFO [STDOUT] verify_data: {
    17:04:33,573 INFO [STDOUT] 172
    17:04:33,573 INFO [STDOUT] ,
    17:04:33,573 INFO [STDOUT] 218
    17:04:33,573 INFO [STDOUT] ,
    17:04:33,573 INFO [STDOUT] 237
    17:04:33,573 INFO [STDOUT] ,
    17:04:33,573 INFO [STDOUT] 99
    17:04:33,573 INFO [STDOUT] ,
    17:04:33,573 INFO [STDOUT] 33
    17:04:33,573 INFO [STDOUT] ,
    17:04:33,573 INFO [STDOUT] 169
    17:04:33,573 INFO [STDOUT] ,
    17:04:33,573 INFO [STDOUT] 172
    17:04:33,573 INFO [STDOUT] ,
    17:04:33,573 INFO [STDOUT] 248
    17:04:33,573 INFO [STDOUT] ,
    17:04:33,573 INFO [STDOUT] 223
    17:04:33,573 INFO [STDOUT] ,
    17:04:33,573 INFO [STDOUT] 95
    17:04:33,573 INFO [STDOUT] ,
    17:04:33,573 INFO [STDOUT] 232
    17:04:33,573 INFO [STDOUT] ,
    17:04:33,574 INFO [STDOUT] 47
    17:04:33,574 INFO [STDOUT] }
    17:04:33,574 INFO [STDOUT] ***
    17:04:33,574 INFO [STDOUT] %% Cached client session: [Session-1, SSL_RSA_WITH_RC4_128_MD5]
    17:04:33,575 INFO [STDOUT] http-127.0.0.1-8080-1, setSoTimeout(600000) called
    17:04:33,576 INFO [STDOUT] http-127.0.0.1-8080-1, WRITE: TLSv1 Application Data, length = 773
    17:04:33,706 INFO [STDOUT] http-127.0.0.1-8080-1, READ: TLSv1 Application Data, length = 268
    17:04:33,742 INFO [STDOUT] http-127.0.0.1-8080-1, READ: TLSv1 Application Data, length = 1345
    17:04:33,766 INFO [STDOUT] http-127.0.0.1-8080-1, READ: TLSv1 Alert, length = 18
    17:04:33,766 INFO [STDOUT] http-127.0.0.1-8080-1
    17:04:33,766 INFO [STDOUT] , RECV TLSv1 ALERT:
    17:04:33,766 INFO [STDOUT] warning,
    17:04:33,767 INFO [STDOUT] close_notify
    17:04:33,767 INFO [STDOUT] http-127.0.0.1-8080-1, called closeInternal(false)
    17:04:33,767 INFO [STDOUT] http-127.0.0.1-8080-1
    17:04:33,767 INFO [STDOUT] , SEND TLSv1 ALERT:
    17:04:33,767 INFO [STDOUT] warning,
    17:04:33,767 INFO [STDOUT] description = close_notify
    17:04:33,767 INFO [STDOUT] http-127.0.0.1-8080-1, WRITE: TLSv1 Alert, length = 18
    17:04:33,768 INFO [STDOUT] http-127.0.0.1-8080-1, called closeSocket(selfInitiated)
    17:04:33,768 INFO [STDOUT] http-127.0.0.1-8080-1, called close()
    17:04:33,768 INFO [STDOUT] http-127.0.0.1-8080-1, called closeInternal(true)
    17:04:33,768 INFO [STDOUT] http-127.0.0.1-8080-1, called close()
    17:04:33,768 INFO [STDOUT] http-127.0.0.1-8080-1, called closeInternal(true)
    17:04:33,852 ERROR [NextelProcessor] Nextel – Exception invoking service
    AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
    faultSubcode:
    faultString: [SOAPException: faultCode=SOAP-ENV:Protocol; msg=Unsupported response content type "text/html", must starts with "text/xml". Response was:
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
    <html> <head>
    <title>No Response from Application Web Server</title>
    </head>

    <body bgcolor="white">
    <font color="red">
    <h1>No Response from Application Web Server</h1>
    </font>

    There was no response from the application web server for the page you requested. <br>Please notify the site's webmaster and try your request again later.
    <hr>

    </body> </html>
    ]
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}hostname:jbeapvt2.nextel.com.ar

    [SOAPException: faultCode=SOAP-ENV:Protocol; msg=Unsupported response content type "text/html", must starts with "text/xml". Response was:
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
    <html> <head>
    <title>No Response from Application Web Server</title>
    </head>

    <body bgcolor="white">
    <font color="red">
    <h1>No Response from Application Web Server</h1>
    </font>

    There was no response from the application web server for the page you requested. <br>Please notify the site's webmaster and try your request again later.
    <hr>

    </body> </html>
    ]
    at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
    at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
    at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
    at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
    at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at ar.com.nextel.sayshell.axis_test.services.RVProxy.RVProxySoapBindingStub.ping(RVProxySoapBindingStub.java:114)
    at reload.nextel.NextelInterface.invokePing(NextelInterface.java:93)
    at reload.nextel.NextelInterface.invoke(NextelInterface.java:52)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
    at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
    at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.aspects.tx.TxPolicy.invokeInNoTx(TxPolicy.java:66)
    at org.jboss.aspects.tx.TxInterceptor$NotSupported.invoke(TxInterceptor.java:112)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.aspects.remoting.ReplicantsManagerInterceptor.invoke(ReplicantsManagerInterceptor.java:51)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
    at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:304)
    at org.jboss.ejb3.remoting.IsLocalInterceptor.invokeLocal(IsLocalInterceptor.java:81)
    at org.jboss.ejb3.remoting.ClusteredIsLocalInterceptor.invoke(ClusteredIsLocalInterceptor.java:53)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.stateless.StatelessClusteredProxy.invoke(StatelessClusteredProxy.java:112)
    at $Proxy279.invoke(Unknown Source)
    at reload.nextel.NextelProcessor.invokeService(NextelProcessor.java:214)
    at reload.nextel.NextelProcessor.invokeService(NextelProcessor.java:196)
    at reload.nextel.NextelProcessor.recarga(NextelProcessor.java:127)
    at reload.nextel.NextelProcessor.process(NextelProcessor.java:56)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
    at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
    at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.aspects.tx.TxPolicy.invokeInNoTx(TxPolicy.java:66)
    at org.jboss.aspects.tx.TxInterceptor$NotSupported.invoke(TxInterceptor.java:112)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.aspects.remoting.ReplicantsManagerInterceptor.invoke(ReplicantsManagerInterceptor.java:51)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
    at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:240)
    at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:210)
    at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:84)
    at $Proxy154.process(Unknown Source)
    at reload.ncr.NcrProcessor.processRecarga(NcrProcessor.java:277)
    at reload.ncr.NcrProcessor.processMensajesRecarga(NcrProcessor.java:125)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
    at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
    at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.aspects.tx.TxPolicy.invokeInNoTx(TxPolicy.java:66)
    at org.jboss.aspects.tx.TxInterceptor$NotSupported.invoke(TxInterceptor.java:112)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.aspects.remoting.ReplicantsManagerInterceptor.invoke(ReplicantsManagerInterceptor.java:51)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
    at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:304)
    at org.jboss.ejb3.remoting.IsLocalInterceptor.invokeLocal(IsLocalInterceptor.java:81)
    at org.jboss.ejb3.remoting.ClusteredIsLocalInterceptor.invoke(ClusteredIsLocalInterceptor.java:53)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    at org.jboss.ejb3.stateless.StatelessClusteredProxy.invoke(StatelessClusteredProxy.java:112)
    at $Proxy278.processMensajesRecarga(Unknown Source)
    at ncr.NcrWebServiceRecarga.invokeService(NcrWebServiceRecarga.java:170)
    at ncr.NcrWebService.processISO8583(NcrWebService.java:194)
    at ncr.NcrWebServiceRecarga.doTransactionISO8583(NcrWebServiceRecarga.java:164)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jboss.wsf.container.jboss42.InvocationHandlerJSE.invoke(InvocationHandlerJSE.java:102)
    at org.jboss.ws.core.server.ServiceEndpointInvoker.invoke(ServiceEndpointInvoker.java:221)
    at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:466)
    at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:284)
    at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl.java:201)
    at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:134)
    at org.jboss.wsf.stack.jbws.EndpointServlet.service(EndpointServlet.java:84)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
    at java.lang.Thread.run(Thread.java:680)

    • Ciao Andrea,
      da un veloce sguardo ai log mi sembra che la fase di handshake sia andata bene, in caso contrario avresti ricevuto qualche eccezione durante la fase di handshake. L’errore è un SOAP Fault ricevuto a quanto pare perché la risposta non è ciò che si aspetta AXIS.

      Bye,
      Antonio.

  • Andrea

    Mille grazie Antonio!

  • francesco

    ciao Antonio un’informazione, sto realizzando un applicazione sip che usa tls in java.
    L’applicazione funge sia da client che da server. quando funge da client tutto ok, i problemi nascono quando funge da server.
    In particolare mi sembra di aver capito che devo avere due tipo di file jks quelli che contengono i certificati dei server per quando l’applicazione funge da client e quelli che contengono le chiave pubbliche .

    quindi per il server devo creare un keystore contentente cosa di preciso???GRazie

    • Ciao Francesco,
      per il server dovresti creare la coppia di chiavi: Pubblica e Privata. Puoi farlo utilizzando il keytool.

      Bye,
      Antonio.

  • Giorda

    Ciao Antonio,
    anche se l’ultima commento risale ad un bel po’ di tempo fa tento comunque di chiederti lume riguardo un problema che mi sta facendo perdere diversi giorni di tempo. Da un Web Service devo connettermi ad un altro Web Service facendo uso di certificati. Mi è stato fornito un file client.jks (i certificati lato client) ed un file server.cer . Ho importato il certificato server.cer per creare il trustStore. Ho effettuato l’import attraverso il comando

    keytool.exe -importcert -alias serverTrusted -file “C:server.cer” -keystore “C:server.jks”

    All’interno dell codice java ho inserito le property nel seguente modo:

    System.setProperty(“java.security.debug”, “all”);
    System.setProperty(“javax.net.debug”,”ssl”);
    System.setProperty(“javax.net.ssl.trustStoreType”,”JKS”);
    System.setProperty(“javax.net.ssl.keyStoreType”,”JKS”);
    System.setProperty(“javax.net.ssl.keyStore”,”C:\client.jks”);
    System.setProperty(“javax.net.ssl.keyStorePassword”,”clientPass”);
    System.setProperty(“javax.net.ssl.trustStore”,”C:\server.jks”);
    System.setProperty(“javax.net.ssl.trustStorePassword”,”serverPass”);

    Al momento di far partire il tutto mi viene fuori la seguente eccezione:

    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
    javax.xml.ws.WebServiceException: 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

    ecc ecc…

    Potresti dirmi in cosa sbaglio? Tra l’altro ho provato a fare la stessa identica chiamata con soapUI e non mi da alcun problema, mentre dalla java application mi viene fuori quest’errore. Ti ringrazio in anticipo, spero tu risponda.

    • Ciao Giorda,
      mi scuso se mi son fatto sfuggire un tuo precedente commento.

      A prima vista, il tipo di eccezione mi sembra che possa essere dovuta a un problema sulla validazione della catena di certificazione. Per risolvere il problema, dovrebbe essere più che sufficiente inserire nel tuo trust store i certificati della catena di certificazione.

      Fammi sapere,
      Antonio.

      • Giorda

        Salve Antonio, ti ringrazio per la risposta. All’interno del mio trustStore io ho importanto il file .cer creando un file jks che poi ho usato come trustStore. Devo importare qualcos’altro dentro questo file? Grazie Mille per la disponibilità

        • Dovresti importare anche i certicati della catena di certificazione, ovvero, il certificato della CA che ha rilasciato il certificato del server a cui ti connetti. Solitamente non dovrebbe servire il root CA.

          Bye,
          Antonio.

          • Giorda

            Scusami Antonio, ma temo di non capire bene. A me è stato dato un certificato (auto-firmato) che ho importato all’interno del trustStore. Siccome il certificato è self-signed pensavo bastasse importare il file server.cer nel mio trustStore per far funzionare tutto, visto che il certificato è firmato dal “server stesso”. Quindi non capisco cos’altro dovrei includere? Ti chiedo scusa per il tempo che ti sto facendo perdere.

          • Ciao, sono abbastanza impegnato. Ok per il certificato self-signed. Allora bisognerebbe fare bypass del controllo SSL.
            Ti giro un link dove potrai trovare diverse soluzioni http://code.google.com/p/misc-utils/wiki/JavaHttpsUrl.
            Tra il codice che ho scritto nel tempo vedrò di trovare qualche pezzo dove facevo il baypass.

            Bye,
            Antonio.

          • Giorda

            Ciao Antonio, sono riuscito a risolvere la cosa anche utlizzando il certificato self-signed. In pratica è sufficiente prendere il certificato ed aggiungerlo al proprio trus-store, inoltre ho analizzato tutta la catena di certificazione ed ho visto che utilizzava un’entità globale, oltre al certificato self-signed. Siccome utilizzavo un truststore mio e non quello di Java (cacert) allora ho dovuto aggiungere tutti questi certificati nel mio truststore. A questo punto tutto è andato bene, pur non saltando la catena di certificazione. Ti ringrazio per tutto il supporto!

          • Bene Giorda.
            Quando ti dicevo della catena di certificazione intendevo proprio quello, come indicato anche nell’articolo.
            Alle volte, quando si è in fase di sviluppo e le catene di certificazione includo CA private, si rende necessario fare lo skip del check della chain.
            🙂
            Bye,
            Antonio.

  • Riccardo

    Ciao,
    scusa se ti disturbo ma ho letto la tua guida e la trovo fatta molto bene e volevo approfittarne per chiederti aiuto riguardo questa mia situazione.
    Ho sviluppato un’applicazione web in PHP che utilizza un certificato SSL. Ho provveduto quindi ad installare il certificato sul mio web server e tutto funziona correttamente.
    Ora questa applicazione deve effettuare una chiamata soap ad un altro web service per cui è necessario un altro certificato SSL.
    Questa società che ha sviluppato questo web service mi ha inviato un file .keystore in cui è contenuto il certificato.
    La tua guida spiega come utilizzare questo certificato in una applicazione java, hai mai dovuto affrontare questa stessa procedura con la tecnologia PHP? potresti darmi indicazioni in merito?

    Spero in una tua risposta positiva con tanto di spiegazione perchè su internet non trovo nulla, se non per java, e sto impazzendo 🙂

    Ti ringrazio
    Riccardo

    • Buonasera Riccardo.
      tranquillo non disturbi e grazie per l’apprezzamento. Riguardo il tuo problema, personalmente ho realizzato diversi client SOAP php su trasporto https, ho però utilizzato il framework php di WSO2.

      Tu quale framework utilizzi per il tuo client SOAP? Sia con SoapClient sia con NuSoap dovrebbe essere possibile instaurare connessioni ssl basta avere il certificato pubblico del server. Con questi framework non ho però nai provato.

      In genere le applicazioni php utilizzano il formato std PEM per il certificato, quindi dovresti come prima cosa estrarre il certificato dal key store, puoi farlo direttamente con keytool.

      Non so se queste poche informazioni possono esserti utili. Magari se riesci a darmi maggiori info riesco a darti una mano 8n più.

      Mi hai dato una buona idea per un prossimo articolo.

      Sul sito http://www.dontesta.it pubblicherò I nuovi articoli.

      A presto,
      Antonio.

    • Buongiorno Riccardo!
      Questa mattina ho fatto una prova al volo per creare la tua situazione. Ho creato un client PHP utilizzando il client SOAP nativo di PHP (vedi http://www.php.net/manual/en/soapclient.soapclient.php) su una versione di PHP 5.4.17. Il test che ho eseguito verso i servizi SOAP di un sistema di CRM che ho installato localmente.
      Il certificato del server è di tipo self-signed. Le opzioni necessarie per configurare il client SOAP over SSL sono le seguenti:

      $contextOptions = array(
      'ssl' => array(
      'verify_peer' => false,
      'allow_self_signed' => true,
      'cafile' => __DIR__ . '/bundle-cacert.pem',
      'verify_depth' => 5,
      'CN_match' => 'crm-shiruslabs.dontesta.it'
      )
      );
      $sslContext = stream_context_create($contextOptions);
      $this->soapClient = new SoapClient($soapEndPoint,
      array(
      'trace' => (boolean)$this->configParams['General']['Trace'],
      'exceptions' => true,
      'encoding' => 'utf-8',
      'stream_context' => $sslContext)
      );

      L’opzione verify_peer e allow_self_signed sono impostate per una situazione come la mia, certificato del server dei servizi di tipo self-signed. Nel caso della produzione i valori dovrebbero essere invertiti. Il parametro cafile definisce il PEM contenente il certificato/i della/e CA necessario per eseguire il controllo della catena di certificazione. Io utilizzo solitamente un PEM bundle (che contiene le maggiori CA) che puoi scaricare tramite curl nel modo seguente:

      curl -o bundle-cacert.pem http://curl.haxx.se/ca/cacert.pem

      Nel caso il servizio a cui devi connetterti ha un certificato rilasciato da una CA non presente nel bundle dovresti aggiungere il certificato della CA che ha rilasciato il certificato del servizio in coda al file PEM.

      Per maggiori informazioni sulle opzioni del contesto SSL dovresti verificare il link http://www.php.net/manual/en/context.ssl.php

      Fammi sapere se queste informazioni ti sono state utili per risolvere il problema.

      Bye,
      Antonio.

  • Francesco75

    Ciao Antonio,
    ho un problema con i certificati e vedo che hai una risposta per tutto, ti è mai capitato di dover usare più certificati?

    A me capita che quando configuro le property di sistema con il primo certificato ed invoco il primo servizio va tutto bene, ma non appena riconfiguro le property di sistema per il secondo certificato ed invoco il secondo servizio va in eccezione (Connection has been shutdown: 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)

    Ecco come configuro le mie properties:
    System.setProperty(“javax.net.ssl.keyStore”, pathKeystore);
    System.setProperty(“javax.net.ssl.keyStorePassword”, keyStorePassword);
    System.setProperty(“javax.net.ssl.keyStoreType”, “JKS”);
    System.setProperty(“javax.net.ssl.trustStore”, pathTruststore);
    System.setProperty(“javax.net.ssl.trustStorePassword”, trustStorePassword);
    System.setProperty(“javax.net.ssl.trustStoreType”, “JKS”);

    Grazie in anticipo

    • Ciao Francesco. Vediamo se riesco a darti una risposta risolutiva. È possibile certamente utilizzare più certificati che possono essere tranquillamente messi sul trust store. Il tipo di errore accade quando non è stato possibile validare la catena di certificazione. Sei sicuro di aver messo sul trust store al certificato server anche i certificati delle CA della chain?

      Prova a fare questa verificare e poi fammi sapere.

      Bye,
      Antonio.

    • giorda

      Salve Francesco,
      mi permetto di risponderti perchè mi sono ritrovato ad affrontare lo stesso problema.
      Quando setti i certificati attraverso le System property stai settando i certificati a livello di JVM, non di applicazione. Nel mio caso, all’interno della stessa applicazione, mi ritrovo a dover utilizzare due certificati client diversi in base ai dati ricevuti in ingresso. Per fare questo , piuttosto che settare i certificati a livello di System Property, ho creato una mia Socket Factory. Di seguito posto il codice :

      SSLContext sc = null;
      KeyManagerFactory kmf = null;
      KeyStore ks = null;

      try {

      sc = SSLContext.getInstance(“TLSv1”);
      kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
      ks = KeyStore.getInstance(KeyStore.getDefaultType());
      ks.load(new FileInputStream(propertyKeyStoreFilePath), “password”.toCharArray());

      kmf.init(ks, “password”.toCharArray());

      sc.init(kmf.getKeyManagers(), null, null);

      } catch (NoSuchAlgorithmException e1) {
      //serie di catch
      }

      // Create the dispatcher, given the data.
      Dispatch dispatch = proxy.createDispatch(
      methodToBeCalled, SOAPMessage.class, Service.Mode.MESSAGE);

      ((BindingProvider) dispatch).getRequestContext().put(JAXWSProperties.SSL_SOCKET_FACTORY,
      sc.getSocketFactory());

      proxy.methodToCall(data);

      Considera che il mio ambito è quello dei Web Service, per cui l’oggetto proxy è quello su cui effettuo la chiamata remota, propertyKeyStoreFilePath è il path al keystore e “password”, ovviamente , è la password del keystore.
      Spero di essere stato chiaro e d’aiuto.

      • Ciao Giorda,
        grazie della tua risposta e per la soluzione proposta.
        Ho approfittato per far nascere un articolo da un commento, pubblicato sul mio nuovo blog (HTTPS Java Client e Certificati SSL) che risponde a Francesco.

        Bye,
        Antonio.

      • giorda

        Ho dimenticato di scrivere una cosa fondamentale. Sono stato costretto ad utilizzare un Keystore creato “al volo”,piuttosto che mettere tutti i certificati nello stesso keystore perchè tutti i certificati client che avevo erano mappati con lo stesso alias, di conseguenza ho dovuto metterli in file separati e, in base alla chiamata, generare un keystore adatto.

        • Ciao Giorda,
          ma non ti conveniva utilizzare cambiare gli alias eventualmente duplicati? In questo modo hai tutto all’interno di un file unico.

          Bye,
          Antonio.

          • giorda

            Non potevo 🙁 Richiesta del client.

  • giorda

    del cliente, pardon!

    • Il cliente ha sempre ragione anche se il più delle volte andrebbe bastonato per le idee assurde che produce.

      Bye,
      Antonio.

  • K1ng.Cr4zy ★★★

    ma tra i certificati trusted aggiunti nel portachiavi del mac ed il java keystore c’è relazione?

    • Antonio Musarra

      Non c’è nessuna relazione.