SSLSocketClient.java 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package cn.com.qmth.im.bean;
  2. import javax.net.ssl.*;
  3. import java.security.KeyStore;
  4. import java.security.SecureRandom;
  5. import java.security.cert.X509Certificate;
  6. import java.util.Arrays;
  7. public class SSLSocketClient {
  8. //获取这个SSLSocketFactory
  9. public static SSLSocketFactory getSSLSocketFactory() {
  10. try {
  11. SSLContext sslContext = SSLContext.getInstance("SSL");
  12. sslContext.init(null, getTrustManager(), new SecureRandom());
  13. return sslContext.getSocketFactory();
  14. } catch (Exception e) {
  15. throw new RuntimeException(e);
  16. }
  17. }
  18. //获取TrustManager
  19. private static TrustManager[] getTrustManager() {
  20. return new TrustManager[]{
  21. new X509TrustManager() {
  22. @Override
  23. public void checkClientTrusted(X509Certificate[] chain, String authType) {
  24. }
  25. @Override
  26. public void checkServerTrusted(X509Certificate[] chain, String authType) {
  27. }
  28. @Override
  29. public X509Certificate[] getAcceptedIssuers() {
  30. return new X509Certificate[]{};
  31. }
  32. }
  33. };
  34. }
  35. //获取HostnameVerifier
  36. public static HostnameVerifier getHostnameVerifier() {
  37. return (s, sslSession) -> true;
  38. }
  39. public static X509TrustManager getX509TrustManager() {
  40. X509TrustManager trustManager = null;
  41. try {
  42. TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
  43. trustManagerFactory.init((KeyStore) null);
  44. TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
  45. if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
  46. throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers));
  47. }
  48. trustManager = (X509TrustManager) trustManagers[0];
  49. } catch (Exception e) {
  50. e.printStackTrace();
  51. }
  52. return trustManager;
  53. }
  54. }