我的應用使用https來conncet到服務器,對於使用自簽名證書的服務器,webview將調用其onReceivedSslError方法。我需要回應回調並顯示一個可見的對話框來顯示證書信息,特別是sha1和sha256指紋。但我感到非常困惑,因爲SslCertificate不支持任何getFingerprint方法。有任何想法嗎?當webview onReceivedSslError被調用時,如何獲取證書指紋
onReceivedSslError方法如下所示。
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
Log.d(DEBUG_TAG, "onReceivedSslError " + error.getCertificate().toString());
// error.getCertificate().getSha1FingerPrint(); is not available
// below methods are available
// error.getCertificate().getIssuedBy();
// error.getCertificate().getIssuedTo();
// error.getCertificate().getValidNotAfterDate();
// error.getCertificate().getValidNotBeforeDate();
// error.getUrl();
if (error.getPrimaryError() == SslError.SSL_UNTRUSTED) {
final Account account = new Account(serverUrl, null, null);
SslConfirmDialog dialog = new SslConfirmDialog(account,
new SslConfirmDialog.Listener() {
@Override
public void onAccepted(boolean rememberChoice) {
CertsManager.instance().saveCertForAccount(account, rememberChoice);
// Ignore SSL certificate validate
handler.proceed();
}
@Override
public void onRejected() {
displaySSLError();
}
});
dialog.show(getSupportFragmentManager(), SslConfirmDialog.FRAGMENT_TAG);
return;
}
}