我的应用使用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;
}
}