栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用MATLAB的urlread命令处理无效的安全证书

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用MATLAB的urlread命令处理无效的安全证书

考虑下面的Java类。我将此页面用作参考:

在HTTPS连接中禁用证书验证

C: MATLAB MyJavaClasses com stackoverflow Downloader.java

package com.stackoverflow;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.security.cert.X509Certificate;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import javax.net.ssl.HostnameVerifier;public class Downloader {    public static String getData(String address) throws Exception {        // Create a trust manager that does not validate certificate chains        TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {     public java.security.cert.X509Certificate[] getAcceptedIssuers() {         return null;     }     public void checkClientTrusted(X509Certificate[] certs, String authType) {     }     public void checkServerTrusted(X509Certificate[] certs, String authType) {     } }        };        // Create a host name verifier that always passes        HostnameVerifier allHostsValid = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) {     return true; }        };        // Install the all-trusting trust manager        SSLContext sc = SSLContext.getInstance("SSL");        sc.init(null, trustAllCerts, new java.security.SecureRandom());        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());        // Install the all-trusting host verifier        HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);        // open connection        URL page = new URL(address);        HttpURLConnection conn = (HttpURLConnection) page.openConnection();        BufferedReader buff = new BufferedReader(new InputStreamReader(conn.getInputStream()));        // read text        String line;        StringBuffer text = new StringBuffer();        while ( (line = buff.readLine()) != null ) { //System.out.println(line); text.append(line + "n");        }        buff.close();        return text.toString();    }    public static void main(String[] argv) throws Exception {        String str = getData("https://expired.badssl.com/");        System.out.println(str);    }}

的MATLAB

首先,我们编译Java类(必须使用与MATLAB兼容的JDK版本):

>> version -java>> system('javac C:MATLABMyJavaClassescomstackoverflowDownloader.java');

接下来,我们实例化并使用它作为MATLAB:

javaaddpath('C:MATLABMyJavaClasses')dl = com.stackoverflow.Downloader;str = char(dl.getData('https://expired.badssl.com/'));web(['text://' str], '-new')

以下是一些带有错误SSL证书的URL来进行测试:

urls = {    'https://expired.badssl.com/'       % expired    'https://wrong.host.badssl.com/'    % wrong host    'https://self-signed.badssl.com/'   % self-signed    'https://revoked.grc.com/'          % revoked};

更新:
我应该提到,从R2014b开始,MATLAB具有一个

webread
取代的新功能
urlread



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570011.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号