![](/img/trans.png)
[英]SSL Certificate Verification : javax.net.ssl.SSLHandshakeException
[英]Security with HTTPS and SSL :-javax.net.ssl.SSLHandshakeException: Certificate expired
我已經嘗試使用此命令檢查命令缺少中間證書頒發機構
$ openssl s_client -connect mail.google.com:443
對於我的網站應該顯示證書鏈但它只顯示一個已經過期的證書。 但當我在https://www.digicert.com/help/上檢查服務器證書配置時
它顯示SSL證書已正確安裝並顯示正確的中間證書鏈,當我嘗試訪問我的Android應用程序中的web api時,它顯示以下錯誤: -
javax.net.ssl.SSLHandshakeException: Certificate expired at Thu Jun 11 21:58:21 GMT+05:30 2015 (compared to Wed May 18 10:48:45 GMT+05:30 2016)
05-18 10:48:45.750 28372-28412/com.src.giveup1 W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:327)
05-18 10:48:45.750 28372-28412/com.src.giveup1 W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.waitForHandshake(OpenSSLSocketImpl.java:638)
05-18 10:48:45.750 28372-28412/com.src.giveup1 W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:600)
05-18 10:48:45.750 28372-28412/com.src.giveup1 W/System.err: at org.apache.http.impl.io.SocketInputBuffer.<init>(SocketInputBuffer.java:75)
05-18 10:48:45.750 28372-28412/com.src.giveup1 W/System.err: at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:93)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err: at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:187)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err: at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:123)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err: at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:134)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err: at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:196)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err: at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err: at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err: at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:365)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:602)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:522)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:500)
我使用以下鏈接檢查Android應用程序中的服務器證書: - http://blog.fordemobile.com/2012/04/https-requests-on-android.html
是否在服務器上正確配置了證書,或者我使用了錯誤的代碼來檢查證書。
你已經遇到了問題。 實際上你的證書已經過期了。 您的webservice的appserver需要更新其證書。
有關創建和檢查證書的完整教程,您可以按照教程進行操作:
要更改證書 ,您可以按照教程進行操作:
http://www.albeesonline.com/blog/2009/06/24/javax-net-ssl-sslhandshakeexception-certificate-expired/
出於測試目的,我將使用由Go Daddy
發布的mail.google.com:443
SSL證書。
創建存儲證書的目錄:
$ mkdir -p ~/.cert/mail.google.com/
$ cd ~/.cert/mail.google.com/
檢索google郵件服務器提供的mail.google.com
證書:
$ openssl s_client -showcerts -connect mail.google.com:443
從“--BEGIN CERTIFICATE--”復制到“--END CERTIFICATE--”,並將其作為
mail.google.com.pem
保存在~/.cert/mail.google.com/
目錄中。
如果此證書由Go Daddy頒發,那么您需要獲得“證書頒發機構根證書”(訪問您的CA網站以獲取根證書):
$ wget https://certs.godaddy.com/repository/gd_bundle.crt -O ~/.cert/mail.google.com/gd.pem
使用c_rehash
創建指向由哈希值命名的文件的符號鏈接,輸入:
$ c_rehash ~/.cert/mail.google.com/
Doing ~/.cert/mail.google.com/
mail.google.com.pem => 1d97af50.0
gd.pem => 219d9499.0
要確認您具有正確且有效的證書,請輸入:
$ openssl s_client -CApath ~/.cert/mail.google.com/ -connect mail.google.com:443
CONNECTED(00000003)
......
....
Verify return code: 0 (ok)
---
應該有很多數據,但要記下的重要一點是最后一行“Verify return code: 0 (ok)”
。 我正在為dovecot IMAP郵件服務器使用相同的證書,鍵入以下內容以驗證郵件服務器SSL證書:
$ openssl s_client -CApath ~/.cert/mail.google.com/ -connect mail.google.com:993
CONNECTED(00000003)
.....
.....
Verify return code: 0 (ok)
---
* OK [CAPABILITY IMAP4rev1 SASL-IR SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN NAMESPACE LOGIN-REFERRALS UIDPLUS LIST-EXTENDED I18NLEVEL=1 QUOTA AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
最后的“Dovecot ready”行以及0 return code indicates that everything is working fine
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.