Android 检测连接是否安全
我想检测网络流量是否由Fiddler或类似Fiddler的代理进行监控。如果是这样,我不希望我的应用程序继续进行下去。 为了实现这一目标,我正在做以下事情:Android 检测连接是否安全,android,ssl-certificate,Android,Ssl Certificate,我想检测网络流量是否由Fiddler或类似Fiddler的代理进行监控。如果是这样,我不希望我的应用程序继续进行下去。 为了实现这一目标,我正在做以下事情: 创建密钥库: private KeyStore getKeyStore() { KeyStore keyStore = null; try { // Load CAs from an InputStream // (could be from a resource or ByteArrayIn
private KeyStore getKeyStore() {
KeyStore keyStore = null;
try {
// Load CAs from an InputStream
// (could be from a resource or ByteArrayInputStream or ...)
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream caInput = getClass().getResourceAsStream(
"/assets/mycert");
Certificate ca;
try {
ca = cf.generateCertificate(caInput);
System.out.println("ca="
+ ((X509Certificate) ca).getSubjectDN());
} finally {
caInput.close();
}
// Create a KeyStore containing our trusted CAs
String keyStoreType = KeyStore.getDefaultType();
keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);
} catch (CertificateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return keyStore;
}
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), null);
connection.setSSLSocketFactory(context.getSocketFactory());