SSL固定android需要不合逻辑的权限

时间:2015-11-04 12:11:35

标签: android ssl

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
 <uses-permission android:name="android.permission.CALL_PHONE"/>
 <uses-permission android:name="android.permission.PHONE_STATE" />

为了让ssl固定工作,我必须在我的清单中至少要求其中一个权限。为什么这么疯狂?

http://developer.android.com/training/articles/security-ssl.html

在Android 6.0上报道

我使用的targetsdkversion是22。

如果我使用targetsdkversion 23,我必须请求其中一个人的权限...我的应用程序,以便https调用工作大声笑。

public static SSLContext getSSL() {
    try {           
        CertificateFactory cf = CertificateFactory.getInstance("X.509");
        AssetManager assetManager = BankNizwaApp.getAppContext()
                .getAssets();
        InputStream caInput = assetManager.open("cert.pem");
        java.security.cert.X509Certificate ca = null;
        try {
            ca = (java.security.cert.X509Certificate) cf
                    .generateCertificate(caInput);
        } catch (Exception er) {
        } finally {
            caInput.close();
        }
        String keyStoreType = KeyStore.getDefaultType();
        KeyStore keyStore = KeyStore.getInstance(keyStoreType);
        keyStore.load(null, null);
        keyStore.setCertificateEntry("ca",
                (java.security.cert.X509Certificate) ca);
        String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
        TrustManagerFactory tmf = TrustManagerFactory
                .getInstance(tmfAlgorithm);
        tmf.init(keyStore);
        SSLContext context = SSLContext.getInstance("TLS");
        context.init(null, tmf.getTrustManagers(), null);
        return context;
    } catch (Exception e1) {
        return null;
    }
}

我得到了什么

 <html><head><title>Request Rejected</title></head><body>The requested URL was rejected. Please consult with your administrator.<br><br>Your support ID is: 12896453146718244255</body></html>

0 个答案:

没有答案