yjj 1 год назад
Родитель
Сommit
a4dee5b816

+ 1 - 1
src/main/java/com/example/demo/demos/web/controller/EcsController.java

@@ -21,7 +21,7 @@ public class EcsController {
 
     @GetMapping("/get/{url}")
     public Result getCertificate(@PathVariable String url){
-        Certificate certificate = ecsService.getCertificate(url);
+        String certificate = ecsService.getCertificate(url);
         return Result.success(certificate);
     }
 

+ 1 - 1
src/main/java/com/example/demo/demos/web/service/EcsService.java

@@ -3,5 +3,5 @@ package com.example.demo.demos.web.service;
 import java.security.cert.X509Certificate;
 
 public interface EcsService {
-    X509Certificate getCertificate(String url);
+    String getCertificate(String url);
 }

+ 8 - 2
src/main/java/com/example/demo/demos/web/service/impl/EcsInfoServiceImpl.java

@@ -50,9 +50,9 @@ public class EcsInfoServiceImpl extends ServiceImpl<EcsInfoMapper, EcsInfo> impl
         if (!list.isEmpty()) {
             for (String number : Constants.SEND_MSG_NUMBER) {
                 list.forEach(i -> {
-                    String str = i.getUrl();
+                    String str = DateUtil.parseDateToStr(DateUtil.YYYY_MM_DD,i.getNotAfter());
                     try {
-                        SMSUtil.sendMsg(number,"天目智能科技","SMS_475345133","{\"name\":\""+str+"\"}");
+                        SMSUtil.sendMsg(number,"天目智能科技","SMS_475230354","{\"time\":\""+str+"\"}");
                     } catch (Exception e) {
                         log.error("短信发送失败:{}",e);
                         throw new RuntimeException(e);
@@ -93,4 +93,10 @@ public class EcsInfoServiceImpl extends ServiceImpl<EcsInfoMapper, EcsInfo> impl
 
         return list;
     }
+
+    public static void main(String[] args) {
+        String url = "c.dnzc.vip/index";
+        X509Certificate certificate = CertUtil.getCertificate(url);
+        System.out.println(DateUtil.parseDateToStr(DateUtil.YYYY_MM_DD,certificate.getNotAfter()));
+    }
 }

+ 7 - 2
src/main/java/com/example/demo/demos/web/service/impl/EcsServiceImpl.java

@@ -1,6 +1,8 @@
 package com.example.demo.demos.web.service.impl;
 
 import com.example.demo.demos.web.service.EcsService;
+import com.example.demo.demos.web.util.DateUtil;
+import com.example.demo.demos.web.util.SslUtils;
 import org.springframework.stereotype.Service;
 
 import javax.net.ssl.HttpsURLConnection;
@@ -12,18 +14,21 @@ import java.security.cert.X509Certificate;
 public class EcsServiceImpl implements EcsService {
 
     @Override
-    public X509Certificate getCertificate(String url) {
+    public String getCertificate(String url) {
         URL u = null;
         HttpsURLConnection conn = null;
         try {
             u = new URL("https://"+url);
+            //信任所有SSL证书
+//            SslUtils.ignoreSsl();
             conn = (HttpsURLConnection) u.openConnection();
             conn.connect();
 
             // 获取服务器证书链
             Certificate[] certificates = conn.getServerCertificates();
             // 通常证书链的第一个证书是服务器证书
-            return (X509Certificate) certificates[0];
+            X509Certificate certificate = (X509Certificate) certificates[0];
+            return "域名"+url+",有效期"+DateUtil.parseDateToStr(DateUtil.YYYY_MM_DD,certificate.getNotAfter());
         } catch (Exception e) {
             e.printStackTrace();
         }finally {

+ 2 - 0
src/main/java/com/example/demo/demos/web/util/CertUtil.java

@@ -12,6 +12,8 @@ public class CertUtil {
         HttpsURLConnection conn = null;
         try {
             u = new URL("https://"+url);
+            //信任所有SSL证书
+            SslUtils.ignoreSsl();
             conn = (HttpsURLConnection) u.openConnection();
             conn.connect();
 

+ 49 - 0
src/main/java/com/example/demo/demos/web/util/SslUtils.java

@@ -0,0 +1,49 @@
+package com.example.demo.demos.web.util;
+
+import javax.net.ssl.*;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+public class SslUtils {
+    private static void trustAllHttpsCertificates() throws Exception {
+        TrustManager[] trustAllCerts = new TrustManager[1];
+        TrustManager tm = new miTM();
+        trustAllCerts[0] = tm;
+        SSLContext sc = SSLContext.getInstance("SSL");
+        sc.init(null, trustAllCerts, null);
+        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
+    }
+    static class miTM implements TrustManager, X509TrustManager {
+        public X509Certificate[] getAcceptedIssuers() {
+            return null;
+        }
+        public boolean isServerTrusted(X509Certificate[] certs) {
+            return true;
+        }
+        public boolean isClientTrusted(X509Certificate[] certs) {
+            return true;
+        }
+        public void checkServerTrusted(X509Certificate[] certs, String authType)
+                throws CertificateException {
+            return;
+        }
+        public void checkClientTrusted(X509Certificate[] certs, String authType)
+                throws CertificateException {
+            return;
+        }
+    }
+    /**
+     * 忽略HTTPS请求的SSL证书,必须在openConnection之前调用
+     * @throws Exception
+     */
+    public static void ignoreSsl() throws Exception{
+        HostnameVerifier hv = new HostnameVerifier() {
+            public boolean verify(String urlHostName, SSLSession session) {
+                System.out.println("Warning: URL Host: " + urlHostName + " vs. " + session.getPeerHost());
+                return true;
+            }
+        };
+        trustAllHttpsCertificates();
+        HttpsURLConnection.setDefaultHostnameVerifier(hv);
+    }
+}