介绍
本篇文章给大家分享的是有关HTTPS配置如何在Android项目中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强> Android使用HTTPS配置的步骤。强>
<强> 1,步骤强>
配置hostnameVerifier
新HostnameVerifier () { @Override 公共逻辑验证(主机名的字符串,SSLSession会话){ 返回true; } };
<强> 2。一步强>
配置sslSocketFactory
公共静态SSLSocketFactory getSslSocketFactory (InputStream[]证书、InputStream bksFile字符串密码){ 尝试{ TrustManager [] TrustManager=prepareTrustManager(证书); KeyManager [] KeyManager=prepareKeyManager (bksFile、密码); SSLContext SSLContext=SSLContext.getInstance (“TLS"); TrustManager TrustManager=零; 如果(trustmanager !=null) { trustManager=new MyTrustManager (chooseTrustManager (trustManager)); 其他}{ trustManager=new UnSafeTrustManager (); } sslContext。init (keymanager新的TrustManager [] {TrustManager},新SecureRandom ()); 返回sslContext.getSocketFactory (); }捕捉(NoSuchAlgorithmException e) { 把新AssertionError (e); }捕捉(KeyManagementException e) { 把新AssertionError (e); }捕捉(KeyStoreException e) { 把新AssertionError (e); } } 私人类UnSafeHostnameVerifier实现HostnameVerifier { @Override 公共逻辑验证(主机名的字符串,SSLSession会话){ 返回true; } } 私有静态类UnSafeTrustManager X509TrustManager{实现环境下 @Override 公共空间checkClientTrusted (X509Certificate[]链,字符串authType)抛出CertificateException {} @Override 公共空间checkServerTrusted (X509Certificate[]链,字符串authType)抛出CertificateException {} @Override 公共X509Certificate [] getAcceptedIssuers () { 返回新X509Certificate [] {}; } } 私有静态TrustManager [] prepareTrustManager (InputStream……证书){ 如果(证书==null | |证书。长度& lt;返回null=0); 尝试{ CertificateFactory CertificateFactory=CertificateFactory.getInstance (“X.509"); KeyStore KeyStore=KeyStore.getInstance (KeyStore.getDefaultType ()); keyStore.load(空); int指数=0; (InputStream证书:证书){ 字符串certificateAlias=Integer.toString(指数+ +); 密钥存储库。setCertificateEntry (certificateAlias certificateFactory.generateCertificate(证书)); 尝试{ 如果(证书!=null) certificate.close (); }捕捉(IOException e) { } } TrustManagerFactory TrustManagerFactory=零; trustManagerFactory=TrustManagerFactory.getInstance (TrustManagerFactory.getDefaultAlgorithm ()); trustManagerFactory.init(密钥); TrustManager [] TrustManager=trustManagerFactory.getTrustManagers (); 返回trustmanager; }捕捉(NoSuchAlgorithmException e) { e.printStackTrace (); }捕捉(CertificateException e) { e.printStackTrace (); }捕捉(KeyStoreException e) { e.printStackTrace (); }捕捉(异常e) { e.printStackTrace (); } 返回null; } 私有静态KeyManager [] prepareKeyManager (InputStream bksFile字符串密码){ 尝试{ 如果(bksFile==null | |密码==null)返回null; KeyStore clientKeyStore=KeyStore.getInstance (“BKS"); clientKeyStore。负载(bksFile password.toCharArray ()); KeyManagerFactory KeyManagerFactory=KeyManagerFactory.getInstance (KeyManagerFactory.getDefaultAlgorithm ()); keyManagerFactory。init (clientKeyStore password.toCharArray ()); 返回keyManagerFactory.getKeyManagers (); }捕捉(KeyStoreException e) { e.printStackTrace (); }捕捉(NoSuchAlgorithmException e) { e.printStackTrace (); }捕捉(UnrecoverableKeyException e) { e.printStackTrace (); }捕捉(CertificateException e) { e.printStackTrace (); }捕捉(IOException e) { e.printStackTrace (); }捕捉(异常e) { e.printStackTrace (); } 返回null; } 私人X509TrustManager chooseTrustManager静态环境下(TrustManager [] TrustManager) { (TrustManager TrustManager: TrustManager) { 如果(X509TrustManager) trustManager instanceof环境下{ 返回X509TrustManager)(环境下trustManager; } } 返回null; } 私有静态类MyTrustManager X509TrustManager{实现环境下 X509TrustManager defaultTrustManager私人环境下; X509TrustManager localTrustManager私人环境下; X509TrustManager localTrustManager公共MyTrustManager(环境下)抛出NoSuchAlgorithmException KeyStoreException { TrustManagerFactory var4=TrustManagerFactory.getInstance (TrustManagerFactory.getDefaultAlgorithm ()); var4.init((密钥)零); defaultTrustManager=chooseTrustManager (var4.getTrustManagers ()); 这一点。localTrustManager=localTrustManager; } @Override 公共空间checkClientTrusted (X509Certificate[]链,字符串authType)抛出CertificateException {} @Override 公共空间checkServerTrusted (X509Certificate[]链,字符串authType)抛出CertificateException { 尝试{ defaultTrustManager。checkServerTrusted(链,authType); }捕捉(CertificateException ce) { localTrustManager。checkServerTrusted(链,authType); } } @Override 公共X509Certificate [] getAcceptedIssuers () { 返回新X509Certificate [0]; } }HTTPS配置如何在Android项目中使用