无法让ACRA接受自签名证书

时间:2016-03-15 16:06:16

标签: java android ssl acra

ACRA设置了标准选项:

@ReportsCrashes(
        formUri = "https://XXXXXXXXXX.php",
        mode = ReportingInteractionMode.TOAST,
        resToastText = R.string.str_acra_crash_report_info)

尝试将服务器证书复制到资源并创建自定义KeyStore:

try {
    KeyStore ksTrust = KeyStore.getInstance("BKS");
    InputStream instream = new BufferedInputStream(getAssets().open("keystore.bks"));
    ksTrust.load(instream, "ez24get".toCharArray());
    ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(this);
    configurationBuilder.setKeyStore(ksTrust);
    final ACRAConfiguration config = configurationBuilder.build();
    ACRA.init(this, config);
} catch (KeyStoreException | IOException | NoSuchAlgorithmException | CertificateException e) {
    e.printStackTrace();
}

或其他方式:

CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream caInput = new BufferedInputStream(getAssets().open("ssl-cert-snakeoil.pem"));
Certificate ca = cf.generateCertificate(caInput);
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);

不幸的是经过几个小时的测试,仍然没有运气,仍然有例外:

java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

任何提示?

编辑:创建了另一个证书,CA:TRUE(标准ssl-cert-snakeoil.pem有CA:FALSE),但仍然没有运气。

编辑2:证书应该是:主要CA证书。 +服务器证书,但仍然是相同的例外。

1 个答案:

答案 0 :(得分:0)

@Matthew你需要使用ACRA主人的头部,因为它已经添加了https://github.com/ACRA/acra/pull/388拉取请求。

我们可能会在一周左右的时间内删除另一个版本。