HTTPS配置如何在Android项目中使用

  介绍

本篇文章给大家分享的是有关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项目中使用