如果我在Android 2.3的打了一個HTTPS URL,它會自動使用SSL?我在Android 2.2和Android 2.3之間編寫的應用程序遇到問題。當我點擊Android 2.2上的https網址時,它彈出並給出了下面的內容,但是當我在Android 2.3上使用相同的代碼時,我什麼也得不到。所以從閱讀我已經做了什麼我想到的是在這個URL的證書類型是默認情況下Android 2.3接受的類型,但不是由Android 2.2,是嗎?SSL與Android 2.2和2.3
05-10 13:04:37.659: WARN/System.err(2177): javax.net.ssl.SSLException: Not trusted server certificate
05-10 13:04:37.659: WARN/System.err(2177): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:371)
05-10 13:04:37.659: WARN/System.err(2177): at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:92)
05-10 13:04:37.659: WARN/System.err(2177): at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
05-10 13:04:37.659: WARN/System.err(2177): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:164)
05-10 13:04:37.659: WARN/System.err(2177): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
05-10 13:04:37.659: WARN/System.err(2177): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
05-10 13:04:37.659: WARN/System.err(2177): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
05-10 13:04:37.659: WARN/System.err(2177): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
05-10 13:04:37.659: WARN/System.err(2177): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
05-10 13:04:37.659: WARN/System.err(2177): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
05-10 13:04:37.667: WARN/System.err(2177): at giat.hermes.network.IntelinkConnector.connect(IntelinkConnector.java:120)
05-10 13:04:37.667: WARN/System.err(2177): at giat.hermes.view.CreateAccount$ThreadLogMeIn.run(CreateAccount.java:77)
05-10 13:04:37.667: WARN/System.err(2177): Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: TrustAnchor for CertPath not found.
05-10 13:04:37.667: WARN/System.err(2177): at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:168)
05-10 13:04:37.674: WARN/System.err(2177): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:366)
05-10 13:04:37.674: WARN/System.err(2177): ... 11 more
05-10 13:04:37.674: WARN/System.err(2177): Caused by: java.security.cert.CertPathValidatorException: TrustAnchor for CertPath not found.
05-10 13:04:37.698: WARN/System.err(2177): at org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi.engineValidate(PKIXCertPathValidatorSpi.java:225)
05-10 13:04:37.698: WARN/System.err(2177): at java.security.cert.CertPathValidator.validate(CertPathValidator.java:202)
05-10 13:04:37.698: WARN/System.err(2177): at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:164)
05-10 13:04:37.698: WARN/System.err(2177): ... 12 more
而且我不希望只是接受所有服務器證書
而且,如果這是什麼造成的問題,這將是足以覆蓋向後兼容?我不太可能在Android的未來更新中遇到這種情況?
所有你的假設是正確的。就像您的電腦一樣,操作系統維護着一系列「可信認證機構」。您正在處理的服務器證書由未在Android 2.2中列出的CA頒發。您應該期望如果2.3支持,任何後續版本都將包含相同的CA證書。 – CSmith
以及通過在Android 2.3上僅使用常規httpPost訪問https網址,默認情況下使用SSL並處理證書以及所有那些沒有我必須執行任何操作的情況? – Josh