2010-10-18 7 views
0

Quelqu'un at-il réussi à faire participer un appareil Android à un hanshake SSL bidirectionnel? c'est-à-dire avec un client cert impliqué sur l'appareil? Après l'installation du certificat client à partir de la carte SD - je ne peux pas me connecter à l'URL qui nécessite une négociation bidirectionnelle ssl dans le navigateur ou l'application de messagerie. (Nous sécurisons notre serveur de messagerie derrière une appliance matérielle qui établit la connexion SSL).Les prises de contact SSL bidirectionnelles sont-elles prises en charge sur Android?

Le périphérique lance simplement une erreur de prise de contact SSL. Notre configuration fonctionne sur tous les navigateurs de bureau, iphones et appareils WinMo avec le certificat client installé.

C'est le journal des erreurs de l'appareil (HTC Desire avec 2.1):

D/EAS_AppSvc( 422): 06021143 > testServer() 
D/EAS_AppSvc( 422): 06021143 > initEASService() 
V/EAS DeviceInfo( 422): GetDeviceID: 4020b869 
D/EAS_AppSvc( 422): 06021143 (1)connect to > https://serverxxx.com.au/Microsoft-Server-ActiveSync?User=u415434&DeviceId=HTCAnd4020b869&DeviceType=htcbravo 
I/AlertDialog( 422): [onCreate] auto launch SIP. 
D/EASProgressDialog( 422): 06021143 onStart() 
D/EAS_AppSvc( 422): 06021143 onServiceStateChanged :serviceState = 0 home Telstra Mobile (N/A) 50501 HSDPA CSS not supported -1 -1RoamInd: -1DefRoamInd: -1EriInd: -1EriMode: -1RadioPowerSv: false 
I/LockUtil( 422): 06021143 - acquire PowerLock - PARTIAL_WAKE_LOCK: EAS_NETWORK_CHANGE 
D/EAS_AppSvc( 422): 06021143 isWifiNetwork: false 
D/EAS_AppSvc( 422): 06021143 isWifiNetwork: false 
D/EAS_AppSvc( 422): 06021143 isMobileNetwork: true 
D/EAS_AppSvc( 422): 06021143 NETWORK_STATE_CHANGED: isWifi:false, isMobile:true 
D/EAS_AppSvc( 422): 06021143 SvcHandler - Account not configured 
I/LockUtil( 422): 06021143 - release PowerLock: EAS_NETWORK_CHANGE 
D/TelephonyRegistry( 81): notifyDataConnection() state=2isDataConnectivityPossible()true, reason=null 
D/TelephonyRegistry( 81): broadcastDataConnectionStateChanged() state=CONNECTEDtypes=default,supl, interfaceName=rmnet0 
D/NetworkLocationProvider( 81): onDataConnectionStateChanged 8 
D/MobileDataStateTracker( 81): replacing old mInterfaceName (rmnet0) with rmnet0 for supl 
D/PhoneApp( 145): mReceiver: ACTION_ANY_DATA_CONNECTION_STATE_CHANGED 
D/PhoneApp( 145): - state: CONNECTED 
D/PhoneApp( 145): - reason: null 
D/PendingMsgSendReceiverRegister( 372): onReceive, start to send QueuedMessage 
D/PendingMsgSendReceiverRegister( 372): SmsReceiverService_handleServiceStateChanged() sendFirstQueuedMessage >> 
D/PendingMsgSendReceiverRegister( 372): SmsReceiverService_handleServiceStateChanged() sendFirstQueuedMessage << 
V/MmsSystemEventReceiver( 372): Intent received: Intent { act=android.intent.action.ANY_DATA_STATE cmp=com.android.mms/.transaction.MmsSystemEventReceiver (has extras) } 
E/OpenSSLSocketImpl( 422): Unknown error 1 during connect 
W/System.err( 422): java.io.IOException: SSL handshake failure: Failure in SSL library, usually a protocol error 
W/System.err( 422): error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure (external/openssl/ssl/s3_pkt.c:1053 0x4b1778:0x00000003) 
W/System.err( 422): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.nativeconnect(Native Method) 
W/System.err( 422): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:305) 
W/System.err( 422): at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:92) 
W/System.err( 422): at com.htc.android.mail.eassvc.common.EASHostnameVerifier.verify(EASHostnameVerifier.java:34) 
W/System.err( 422): at com.htc.android.mail.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:242) 
W/System.err( 422): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:129) 
W/System.err( 422): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
W/System.err( 422): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
W/System.err( 422): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348) 
W/System.err( 422): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
W/System.err( 422): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
W/System.err( 422): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
W/System.err( 422): at android.net.http.AndroidHttpClient.execute(AndroidHttpClient.java:283) 
W/System.err( 422): at com.htc.android.mail.eassvc.EASAppSvc.testServer(EASAppSvc.java:3999) 
W/System.err( 422): at com.htc.android.mail.eassvc.EASAppSvc$2.testServer(EASAppSvc.java:600) 
W/System.err( 422): at com.htc.android.mail.easclient.ExchangeSvrSetting$TestServerThread.run(ExchangeSvrSetting.java:1188) 
I/EAS_AppSvc( 422): 06021143 testServer(), IOException(1): SSL handshake failure: Failure in SSL library, usually a protocol error 
I/EAS_AppSvc( 422): error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure (external/openssl/ssl/s3_pkt.c:1053 0x4b1778:0x00000003) 
V/EAS DeviceInfo( 422): GetDeviceID: 4020b869 
D/EAS_AppSvc( 422): 06021143 (2)connect to > https://serverxxx.com.au/Microsoft-Server-ActiveSync?User=u415434&DeviceId=HTCAnd4020b869&DeviceType=htcbravo 
E/OpenSSLSocketImpl( 422): Unknown error 1 during connect 
W/System.err( 422): java.io.IOException: SSL handshake failure: Failure in SSL library, usually a protocol error 
W/System.err( 422): error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure (external/openssl/ssl/s3_pkt.c:1053 0x3f9e10:0x00000003) 
W/System.err( 422): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.nativeconnect(Native Method) 
W/System.err( 422): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:305) 
W/System.err( 422): at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:92) 
W/System.err( 422): at com.htc.android.mail.eassvc.common.EASHostnameVerifier.verify(EASHostnameVerifier.java:34) 
W/System.err( 422): at com.htc.android.mail.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:242) 
W/System.err( 422): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:129) 
W/System.err( 422): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
W/System.err( 422): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
W/System.err( 422): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348) 
W/System.err( 422): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
W/System.err( 422): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
W/System.err( 422): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
W/System.err( 422): at android.net.http.AndroidHttpClient.execute(AndroidHttpClient.java:283) 
W/System.err( 422): at com.htc.android.mail.eassvc.EASAppSvc.testServer(EASAppSvc.java:3999) 
W/System.err( 422): at com.htc.android.mail.eassvc.EASAppSvc$2.testServer(EASAppSvc.java:600) 
W/System.err( 422): at com.htc.android.mail.easclient.ExchangeSvrSetting$TestServerThread.run(ExchangeSvrSetting.java:1188) 
I/EAS_AppSvc( 422): 06021143 testServer(), IOException(2): SSL handshake failure: Failure in SSL library, usually a protocol error 
I/EAS_AppSvc( 422): error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure (external/openssl/ssl/s3_pkt.c:1053 0x3f9e10:0x00000003) 
D/EASProgressDialog( 422): 06021143 onStop() 
V/HtcAlertDialog( 422): onStop 
I/HtcAlertDialog( 422): deinitSensor 

Répondre

0

Installation du cert est vraiment le rendant disponible pour VPN et WiFi, ne sont généralement pas à toutes les applications.

Une application peut utiliser des certificats clients en créant leur propre SSLContext et l'initialisation avec un KeyManager comme le montre cet exemple Java: SSLContext and KeyManager example Le SSLSocketFactory retourné par SSLContext.getSocketFactory fournira le certificat client du keystore durant la négociation. À partir de la trace de votre pile, il semble que vous utilisiez une application de messagerie électronique de HTC. Je ne suis pas sûr qu'ils prennent en charge les certificats clients. Dans ce cas, ils doivent probablement être configurés dans l'application. Je sais que l'application tierce Nitrodesk Touchdown disponible sur l'Android Market prend en charge les certificats clients, mais pas le support Android intégré dans Froyo.

+0

Merci BDC, j'ai essayé l'offre Touchdowns et j'obtiens exactement la même trace de pile. Notre configuration diffère en ce que le certificat SSL n'est pas demandé par échange sur l'authentification - mais est demandé par le périphérique matériel à l'avance dans le cadre de la négociation SSL. Du mieux que je peux dire, il semble que l'android ne supporte pas l'utilisation des certificats clients du keystore lors des connexions SSL. Je vois le même comportement dans toutes les applications de messagerie, et si j'essaie de me connecter à l'URL OWA (protégé par le même mécanisme) dans le navigateur du téléphone. –

Questions connexes