2010-01-19 13 views
5

Sto avendo un po 'di tempo per convincere il mio client di servizi Web a parlare con il mio servizio web che è protetto richiedendo certificati client. Sto usando JAX-WS 2.1 e la richiesta del servizio web prima passa attraverso IIS prima di essere inoltrata a JBoss dopo l'autenticazione.Come risolvere il problema dell'handshake TLSv1 con l'autenticazione reciproca?

Sto utilizzando un certificato autofirmato per il certificato client ed è installato sul server Windows 2003 nella relativa sezione "Autorità di certificazione radice attendibili".

Se provo ad accedere al WSDL per il servizio con Internet Explorer, viene richiesto un certificato da inviare e scelgo quello che ho creato e tutto sembra funzionare correttamente. Questo mi porta a credere che tutti i certificati siano corretti e considerati attendibili da tutte le "persone" giuste di .

seguito posso vedere che il server è compreso un riferimento al mio "happyFunBall" come autorità che si fida a causa della sua inclusione nel CertificateRequest porzione della stretta di mano :

*** CertificateRequest 
Cert Types: RSA, DSS` 
Cert Authorities: 
    ... 
<CN=Symantec Root CA, O=Symantec Corporation> 
<CN=DoD Root CA 2, OU=PKI, OU=DoD, O=U.S. Government, C=US> 
<CN=Microsoft Root Authority, OU=Microsoft Corporation, OU=Copyright (c) 1997 Microsoft Corp.> 
<CN=happyFunBall, O=blah.blah.com, C=US> 
<CN=DoD PKI Med Root CA, OU=PKI, OU=DoD, O=U.S. Government, C=US> 
<CN=ECA Root CA 2, OU=ECA, O=U.S. Government, C=US> 
<CN=Symantec Root 2005 CA, O=Symantec Corporation, C=US> 
<CN=Microsoft Root Certificate Authority, DC=microsoft, DC=com> 
    ... 
*** ServerHelloDone 

Sono praticamente un principiante in questa roba, quindi potrei mancare alcune cose molto elementari e potrei non includere tutte le informazioni rilevanti ... Ad ogni modo, ho generato il mio certificato client usando keytool ed è di tipo "PKCS12". Così, quando lancio il mio cliente, ho le seguenti proprietà di sistema definite:

javax.net.ssl.keyStore="C:\placeWhereFunBallLives\funBall.p12" 
javax.net.ssl.keyStorePassword=<password> 
javax.net.ssl.keyStoreType=PKCS12 

ricevo un 403 dal server quando faccio la chiamata al servizio web. Mi sembra che l'implementazione TLS/SSL sottostante non stia trovando il certificato client da inviare o per qualche motivo non la stia inviando, anche se cerca di trovarla.

Cosa devo vedere su una stretta di mano riuscita? Dopo il pezzo di sopra c'è questo:

*** Certificate chain 
*** 
*** ClientKeyExchange, RSA PreMasterSecret, TLSv1 
main, WRITE: TLSv1 Handshake, length = 157 
SESSION KEYGEN: 
PreMaster Secret: 
0000: 03 01 37 1B 02 E4 DB 34 87 A4 4C D0 03 83 74 0B ..7....4..L...t. 
0010: 8D 31 A0 B1 70 B8 31 F8 EB 72 AB 88 3B 69 B5 43 .1..p.1..r..;i.C 
0020: 19 EA 24 BD 59 50 16 7D C0 99 DC A6 EC 4F EF 64 ..$.YP.......O.d 
CONNECTION KEYGEN: 
Client Nonce: 
0000: 4B 56 1E E4 66 09 1D 6C EE 95 F1 47 3E 12 DA 22 KV..f..l...G>.." 
0010: 63 8E 23 93 76 7D FB CB 27 7B 2E C5 8E DC 93 C2 c.#.v...'....... 
Server Nonce: 
0000: 4B 56 1E E4 A7 70 0F 2F 1A 17 0D 8F 2D 79 7D AE KV...p./....-y.. 
0010: 70 0E C9 5C 16 A9 B5 25 B0 99 22 B3 F8 89 D8 EC p..\...%.."..... 
Master Secret: 
0000: C3 ED 84 D6 63 CD 6C 59 94 14 06 4B 37 EC EE C4 ....c.lY...K7... 
0010: AE 99 97 1B 0E B9 61 25 AF DB C4 54 30 C5 4C 80 ......a%...T0.L. 
0020: 47 74 47 E8 B0 B5 13 32 BA 93 62 33 B6 CA C4 A8 GtG....2..b3.... 
Client MAC write Secret: 
0000: 3C E8 3A 6A B2 74 F0 ED 6C FE DE 70 77 E8 EB 36 <.:j.t..l..pw..6 
Server MAC write Secret: 
0000: BD 41 C5 EB 3B ED E9 E0 0C 61 28 C2 11 7A 75 1C .A..;....a(..zu. 
Client write key: 
0000: 79 43 DD AD 44 B0 A0 61 1D EB 71 AB 4F 39 9D EF yC..D..a..q.O9.. 
Server write key: 
0000: C9 43 22 2A 48 50 FA 67 E0 01 1B 8A 48 0F C8 CF .C"*HP.g....H... 
... no IV used for this cipher 
main, WRITE: TLSv1 Change Cipher Spec, length = 17 
*** Finished 
verify_data: { 52, 94, 173, 217, 26, 70, 12, 243, 6, 71, 27, 163 } 
*** 
main, WRITE: TLSv1 Handshake, length = 32 
main, READ: TLSv1 Change Cipher Spec, length = 17 
main, READ: TLSv1 Handshake, length = 32 
*** Finished 
verify_data: { 56, 254, 211, 144, 48, 35, 4, 235, 65, 127, 237, 94 } 
*** 
%% Cached client session: [Session-2, SSL_RSA_WITH_RC4_128_MD5] 

Heeeeeeelp!

risposta

Problemi correlati