精华内容
下载资源
问答
  • 主要介绍了java开发https请求ssl不受信任问题解决方法,具有一定借鉴价值,需要的朋友可以参考下
  • 链接 java开发https请求ssl不受信任问题解决方法,安装证书InstallCert类的执行.
    展开全文
  • java开发https请求ssl不受信任问题

    千次阅读 2018-10-12 16:09:57
    java代码中请求https链接的时候,可能会报下面这个错误 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath....

    在java代码中请求https链接的时候,可能会报下面这个错误

    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    原因是没有证书。在浏览器中直接使用url访问是可以的,应该是浏览器之前就保存过对应的.cer证书。
    解决方法有两种,从目标机器获得有效证书或者忽略证书信任问题。

    一、获得目标机器有效证书
    1、编译安装证书程序 javac InstallCert.java(代码如下)

    import javax.net.ssl.*;
    import java.io.*;
    import java.security.KeyStore;
    import java.security.MessageDigest;
    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;
     
    /**
     * Class used to add the server's certificate to the KeyStore
     * with your trusted certificates.
     */
    public class InstallCert {
     
        public static void main(String[] args) throws Exception {
            String host;
            int port;
            char[] passphrase;
            if ((args.length == 1) || (args.length == 2)) {
                String[] c = args[0].split(":");
                host = c[0];
                port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);
                String p = (args.length == 1) ? "changeit" : args[1];
                passphrase = p.toCharArray();
            } else {
                System.out.println("Usage: java InstallCert <host>[:port] [passphrase]");
                return;
            }
     
            File file = new File("jssecacerts");
            if (file.isFile() == false) {
                char SEP = File.separatorChar;
                File dir = new File(System.getProperty("java.home") + SEP
                        + "lib" + SEP + "security");
                file = new File(dir, "jssecacerts");
                if (file.isFile() == false) {
                    file = new File(dir, "cacerts");
                }
            }
            System.out.println("Loading KeyStore " + file + "...");
            InputStream in = new FileInputStream(file);
            KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
            ks.load(in, passphrase);
            in.close();
     
            SSLContext context = SSLContext.getInstance("TLS");
            TrustManagerFactory tmf =
                    TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
            tmf.init(ks);
            X509TrustManager defaultTrustManager = (X509TrustManager) tmf.getTrustManagers()[0];
            SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);
            context.init(null, new TrustManager[]{tm}, null);
            SSLSocketFactory factory = context.getSocketFactory();
     
            System.out.println("Opening connection to " + host + ":" + port + "...");
            SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
            socket.setSoTimeout(10000);
            try {
                System.out.println("Starting SSL handshake...");
                socket.startHandshake();
                socket.close();
                System.out.println();
                System.out.println("No errors, certificate is already trusted");
            } catch (SSLException e) {
                System.out.println();
                e.printStackTrace(System.out);
            }
     
            X509Certificate[] chain = tm.chain;
            if (chain == null) {
                System.out.println("Could not obtain server certificate chain");
                return;
            }
     
            BufferedReader reader =
                    new BufferedReader(new InputStreamReader(System.in));
     
            System.out.println();
            System.out.println("Server sent " + chain.length + " certificate(s):");
            System.out.println();
            MessageDigest sha1 = MessageDigest.getInstance("SHA1");
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            for (int i = 0; i < chain.length; i++) {
                X509Certificate cert = chain[i];
                System.out.println
                        (" " + (i + 1) + " Subject " + cert.getSubjectDN());
                System.out.println("   Issuer  " + cert.getIssuerDN());
                sha1.update(cert.getEncoded());
                System.out.println("   sha1    " + toHexString(sha1.digest()));
                md5.update(cert.getEncoded());
                System.out.println("   md5     " + toHexString(md5.digest()));
                System.out.println();
            }
     
            System.out.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]");
            String line = reader.readLine().trim();
            int k;
            try {
                k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1;
            } catch (NumberFormatException e) {
                System.out.println("KeyStore not changed");
                return;
            }
     
            X509Certificate cert = chain[k];
            String alias = host + "-" + (k + 1);
            ks.setCertificateEntry(alias, cert);
     
            OutputStream out = new FileOutputStream("jssecacerts");
            ks.store(out, passphrase);
            out.close();
     
            System.out.println();
            System.out.println(cert);
            System.out.println();
            System.out.println
                    ("Added certificate to keystore 'jssecacerts' using alias '"
                            + alias + "'");
        }
     
        private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray();
     
        private static String toHexString(byte[] bytes) {
            StringBuilder sb = new StringBuilder(bytes.length * 3);
            for (int b : bytes) {
                b &= 0xff;
                sb.append(HEXDIGITS[b >> 4]);
                sb.append(HEXDIGITS[b & 15]);
                sb.append(' ');
            }
            return sb.toString();
        }
     
        private static class SavingTrustManager implements X509TrustManager {
     
            private final X509TrustManager tm;
            private X509Certificate[] chain;
     
            SavingTrustManager(X509TrustManager tm) {
                this.tm = tm;
            }
     
            public X509Certificate[] getAcceptedIssuers() {
                throw new UnsupportedOperationException();
            }
     
            public void checkClientTrusted(X509Certificate[] chain, String authType)
                    throws CertificateException {
                throw new UnsupportedOperationException();
            }
     
            public void checkServerTrusted(X509Certificate[] chain, String authType)
                    throws CertificateException {
                this.chain = chain;
                tm.checkServerTrusted(chain, authType);
            }
        }
     
    }
    
    

    2、运行安装证书程序生成证书
    java InstallCert baidu.com
    例如:java InstalCert smtp.zhangsan.com:465 admin

    如果不加参数password和host的端口号,上面的获取证书程序中默认给的端口号是:443,密码是:changeit

    3、根据运行提示信息,输入1,回车,在当前目录下生成名为: jssecacerts 的证书

    将证书放置到$JAVA_HOME/jre/lib/security目录下, 切记该JDK的jre是工程所用的环境!!!

    或者:
    System.setProperty(“javax.net.ssl.trustStore”, “你的jssecacerts证书路径”);
    可以更改密码,在security目录下运行命令
    keytool -storepasswd -new xxxcom -keystore cacerts
    就可以修改密码,修改后使用命令
    keytool -list -v -keystore cacerts
    查看文件的信息,会提示需要密码才能查看,如果输入密码与修改后的密码匹配,说明修改成功了。
    PS:至此这种方式可以成功使用ssl了,另外再补充一下,根据刚才生成的文件jssecacerts,可以生成cer文件,

    命令如下
    keytool -export -alias xxx.com-1 -keystore jssecacerts -rfc -file xxx.cer
    如上,之前的工具类中默认命名别名是加上"-1"。使用InstallCert设置的密码需要跟cacerts文件中的密码一致,
    如果修改过密码,就需要修改InstallCert类中对应的密码字符串,否则会有下面这个异常:
    java.security.UnrecoverableKeyException: Password verification failed

    二、忽略证书信任问题

    源码:http://mengyang.iteye.com/blog/575671
    一定要注意需要在connection创建之前调用文章里所述的方法,像这个样子:
    trustAllHttpsCertificates();
    HostnameVerifier hv = new HostnameVerifier() {
    public boolean verify(String urlHostName, SSLSession session) {
    return true;
    }
    };
    HttpsURLConnection.setDefaultHostnameVerifier(hv);
    connection = (HttpURLConnection) url.openConnection();
    好吧,两种方法都试过有效。

    展开全文
  • java开发如何使用HttpsConnection

    千次阅读 2015-09-04 15:39:46
    HTTPS是安全性较高的一种传输协议,java方面用的不是太多,已经逐渐被大部分人遗忘。市面上虽然有替代品,但是不管怎样,底层就是底层永远不会改变。

    java大部分人都能掌握,但是如果是层级较深的知识可能大部分人都蒙了,就以继承这一面向对象的知识,能做到灵活运用的就为数不多。前几天做微信定制开发的时候就遇到了比较棘手的问题如:https请求不知道如何正确使用、java对象转成xml字符串等。这次借着放假给不会的童鞋脑补一下。


    一  什么是HTTPS

    百科是这样介绍的:

         HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

    我的口头理解是:https是一种安全性较高的Http通道,需要使用SSL进行加密,主要用于安全性很高的领域如金融、在线支付等方面


    二  什么是SSL


        SSL(Secure Sockets Layer 安全套接层)协议,及其继任者TLS(Transport Layer Security传输层安全)协议,是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密,用于保障网络数据传输安全,利用数据加密技术,确保数据在网络传输过程中不会被截取及窃听。SSL协议已成为全球化标准,所有主要的浏览器和WEB服务器程序都支持SSL协议,可通过安装SSL证书激活SSL协议。SSL 证书就是遵守 SSL协议的服务器数字证书,由受信任的证书颁发机构(CA机构),验证服务器身份后颁发,部署在服务器上,具有网站身份验证和加密传输双重功能。


    三  java如何使用HTTPS请求

    从上面的描述我们可以知道https比较核心的内容是证书,但是重点在于怎么弄个证书出来,这个全凭经验吧,不是每个java程序员都能想到,下面是对X50接口的说明


    javax.net.ssl.X509TrustManager

    Instance of this interface manage which X509 certificates may be used to authenticate the remote side of a secure socket. Decisions may be based on trusted certificate authorities, certificate revocation lists, online status checking or other means. 


    从上面可以看出X50就是对SSL的一种实现,只要写一个Java类让它实现该接口就实现的证书管理器的功能,如下所示:

    package com.debug.weixin.util;
    
    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;
    
    import javax.net.ssl.X509TrustManager;
    
    /** 
     * 证书信任管理器(用于https请求) 
     * @date 2013-08-08 
     */
    public class MyX509TrustManager implements X509TrustManager{
    
    	
    	public void checkClientTrusted(X509Certificate[] arg0, String arg1)
    			throws CertificateException {
    		
    		
    	}
    
    	
    	public void checkServerTrusted(X509Certificate[] arg0, String arg1)
    			throws CertificateException {
    		
    		
    	}
    
    	
    	public X509Certificate[] getAcceptedIssuers() {
    		
    		return null;
    	}
    
    }
    

    考虑到证书颁发机构的权威性,该类的实现方法不加任何内容,即信任所有机构颁发的证书。

    下面来个实际的例子,假如需要通过发起GET请求来获取接口返回数据,但是该接口是HTTPS这种类型。一起看下代码吧:

     public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {  
            JSONObject jsonObject = null;  
            StringBuffer buffer = new StringBuffer();  
            try {  
                // 创建SSLContext对象,并使用我们指定的信任管理器初始化  
                TrustManager[] tm = { new MyX509TrustManager() };  
                SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");  
                sslContext.init(null, tm, new java.security.SecureRandom());  
                // 从上述SSLContext对象中得到SSLSocketFactory对象  
                SSLSocketFactory ssf = sslContext.getSocketFactory();  
      
                URL url = new URL(requestUrl);  
                HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();  
                httpUrlConn.setSSLSocketFactory(ssf);  
      
                httpUrlConn.setDoOutput(true);  
                httpUrlConn.setDoInput(true);  
                httpUrlConn.setUseCaches(false);  
                // 设置请求方式(GET/POST)  
                httpUrlConn.setRequestMethod(requestMethod);  
      
                if ("GET".equalsIgnoreCase(requestMethod))  {
                	
                	httpUrlConn.connect();  
                }
      
                // 当有数据需要提交时  
                if (null != outputStr) {  
                    OutputStream outputStream = httpUrlConn.getOutputStream();  
                    // 注意编码格式,防止中文乱码  
                    outputStream.write(outputStr.getBytes("UTF-8"));  
                    outputStream.close();  
                }  
      
                // 将返回的输入流转换成字符串  
                InputStream inputStream = httpUrlConn.getInputStream();  
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");  
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);  
      
                String str = null;  
                while ((str = bufferedReader.readLine()) != null) {  
                    buffer.append(str);  
                }  
                bufferedReader.close();  
                inputStreamReader.close();  
                // 释放资源  
                inputStream.close();  
                inputStream = null;  
                httpUrlConn.disconnect();  
                jsonObject = JSONObject.fromObject(buffer.toString());  
            } catch (ConnectException ce) {  
            	ce.printStackTrace();
               // log.error("Weixin server connection timed out.");  
            } catch (Exception e) {  
                //log.error("https request error:{}", e); 
            	e.printStackTrace();
            }  
            return jsonObject;  
        }  
        





    展开全文
  • 文章原文:blog.ouyangsihai.cn >> Java后台开发Tomcat添加https支持小程序开发过程) 1 给自己的域名申请证书 注意:申请好了如果不是在腾讯注册的域名,不会自动通过,需要手动验证的,验证方法如下:...

    文章原文:blog.ouyangsihai.cn >> Java后台开发Tomcat添加https支持小程序开发过程
    )

    1 给自己的域名申请证书

    注意:申请好了如果不是在腾讯注册的域名,不会自动通过,需要手动验证的,验证方法如下:https://cloud.tencent.com/document/product/400/6814

    验证成功之后,才会给你下发证书。

    2 给Tomcat安装https证书

    操作步骤

    参考文档:https://cloud.tencent.com/document/product/400/4143

    证书安装

    1. 已在 SSL 证书管理控制台 中下载并解压缩 www.domain.com 证书文件包到本地目录。
      解压缩后,可获得相关类型的证书文件。其中包含 Tomcat 文件夹和 CSR 文件:
      • 文件夹名称:Tomcat
      • 文件夹内容
        • www.domain.com.jks 密钥库
        • keystorePass.txt 密码文件(若已设置私钥密码,则无 keystorePass.txt 密码文件)
      • CSR 文件内容www.domain.com.csr 文件
            > 说明:
            > 
            > CSR 文件是申请证书时由您上传或系统在线生成的,提供给 CA 机构。安装时可忽略该文件。
    1. 使用 “WinSCP” (即本地与远程计算机间的复制文件工具)登录 Tomcat 服务器。
    2. 将已获取到的 www.domain.com.jks 密钥库文件从本地目录拷贝至 /usr/*/conf 目录下。
    3. 远程登录 Tomcat 服务器。例如,使用 “PuTTY” 工具 登录。
    4. 编辑在 /usr/*/conf 目录下的 server.xml 文件。添加如下内容:
        <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
        maxThreads="150" scheme="https" secure="true"
        keystoreFile="/usr/*/conf/www.domain.com.jks" #证书保存的路径
        keystorePass="******"#密钥库密码
        clientAuth="false"/>

        详细 `server.xml` 文件请参考如下内容:
        <?xml version="1.0" encoding="UTF-8"?>
        <Server port="8005" shutdown="SHUTDOWN">
         <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
         <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
         <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
         <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
         <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
        <GlobalNamingResources>
         <Resource name="UserDatabase" auth="Container"
                   type="org.apache.catalina.UserDatabase"
                   description="User database that can be updated and saved"
                   factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
                   pathname="conf/tomcat-users.xml" />
        </GlobalNamingResources>
        <Service name="Catalina">
             <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"  redirectPort="8443" />
             <Connector port="443" protocol="HTTP/1.1"
                    maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
                    clientAuth="false"
                     keystoreFile="/usr/*/conf/www.domain.com.jks"
                     keystorePass="******" />
         <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
        <Engine name="Catalina" defaultHost=“www.domain.com">
           <Realm className="org.apache.catalina.realm.LockOutRealm">
             <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                    resourceName="UserDatabase"/>
           </Realm>
         <Host name=“www.domain.com"  appBase="webapps" 
             unpackWARs="true" autoDeploy="true" >
             <Context path="" docBase ="Knews" />
         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                prefix="localhost_access_log" suffix=".txt"  
                pattern="%h %l %u %t "%r" %s %b" />
           </Host>
         </Engine>
        </Service>
        </Server>

        配置文件的主要参数说明如下:
        *   **keystoreFile**:密钥库文件的存放位置,可以指定绝对路径,也可以指定相对于 <CATALINA_HOME> (Tomcat安装目录)环境变量的相对路径。如果此项没有设定,默认情况下,Tomcat 将从当前操作系统用户的用户目录下读取名为 “.keystore” 的文件。
        *   **keystorePass**:密钥库密码,指定 keystore 的密码。申请证书时若设置了私钥密码,请填写私钥密码;若申请证书时未设置私钥密码,请填写 Tomcat 文件夹中 keystorePass.txt 文件的密码。
        *   **clientAuth**:如果设为 true,表示 Tomcat 要求所有的 SSL 客户出示安全证书,对 SSL 客户进行身份验证。

    之后,重新启动Tomat,即可完成!

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号好好学java,获取优质学习资源。

    展开全文
  • java 实现https请求

    千次阅读 2015-11-25 16:36:00
    传统的方法是使用Socket接口,但现在很多开发平台或工具如.NET、Java或PHP等都提供了简单的Web访问接口,使用这些接口很容易编程实现与Web应用系统的交互访问,即使要访问那些采用了HTTPS而不是HTTP的Web应用系统。...
  • 项目需要添加引用一个java做的web service服务,在项目中 “添加服务引用-高级-添加web引用-url中输入对方提供的服务地址” 然后点下一步,提示"下载“https://***/.wsdl/_vti_bin/ListData.svc/$metadata”时出错。 ...
  • java实现https协议

    千次阅读 2015-10-23 16:34:26
    Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http...
  • JAVA原生Https Server安全设置

    千次阅读 2017-12-21 12:22:15
    因为项目需要提供https请求服务,然而部门内又没有web方向的开发人员,领导又懒得去找其他部门帮忙,所以无奈把这个任务交给了我这样懂一点点java的人来做。 我大学虽然学的是java、jsp,但是说实话几年过去了,这些...
  • java访问https报错

    2019-04-18 17:30:02
    用springboot开发的一个服务链接mqtt服务的ssl网址报错,sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find ...
  • JAVA实现HTTPS接口(POST方式)

    万次阅读 2017-12-22 14:24:04
    前言:最近开发一个项目,需要回调其他公司的HTTPS远程接口,由于开发过程中遇到些困难,但最终还是解决,写这篇博客,记录一下过程。 1.实现X509证书信任管理器类(避免导证书) import java.security.cert....
  • 项目开发中,使用HttpClient发送https请求,在开发环境eclipse+tomcat时发送请求明显比部署在服务器(tomcat)上发送请求用时短,二者相差时间见图。(图一为服务器log,图二为本地log) ![图片说明]...
  • java web https 单向认证 双向认证

    千次阅读 2018-09-09 15:27:59
    研究了有一天了,最后一博讲解httpshttps接口也是以后接口开发中必定会碰到的,这里只是简单介绍一下简单的java工程中的实现,在更复杂的项目中必定有更优秀的框架来实现。  第一步先创建两个秘钥库,服务的库和...
  • 对接银联的支付业务时,由于银联进行的https请求,把https的原理和java中如何使用进行了一个总结,希望对后面进行https请求的开发有所帮助. 首先需要了解https的原理,是一种基于SSL/TLS的Http,所有的http数据都是...
  • java开发手册

    千次阅读 2020-08-12 17:15:07
    java开发手册 https://www.yuque.com/docs/share/da561138-c36c-42d3-9b47-5123796e4ebf?# 《java开发手册》
  • java开发 java提高

    2018-07-01 09:00:02
    在以前逛博客的时候,发现了一个专栏写的很好,主要详解在java开发中遇到的细节之处,对java开发很有帮助,提升 对java更深层次的理解,希望想在java上更上一层楼的技术宅们有所帮助 转载博客地址如下: ...
  • java netty开发一个http/https代理

    千次阅读 2018-12-06 12:15:48
    https消息传播模式: 客户端将请求的目的地端口明文发送到代理, 代理解析出服务器host 端口,并连接成功,返回客户端连接成功的标识 客户端知道代理已经连接成功了,开始将ssl握手之类的加密数据发送给代理 ...
  • 本人目前在 开发兼维护兰州大市场的项目 , 由于与另一个系统的接口变化,需使用https 的方式在后台发送 请求。 编写端口 时 遇到的问题 和解决办法同大家分享下 如下是https发送请求的实现代码。 package ...
  • Java开发手册

    2018-11-29 10:30:37
    《阿里巴巴Java开发手册》1.4.0版: https://102.alibaba.com/downloadFile.do?file=1528269849853/Java_manual.pdf 《唯品会Java开发手册》1.0.2版: https://vipshop.github.io/vjtools/#/standard/  ...
  • Java开发基本规则(阿里出版Java开发手册)        该书是阿里内部Java工程师所遵循的开发规范,涵盖编程规约、单元测试规约、异常日志规约、MySQL规约、工程规约、安全规约等,...
  • 解决Java调用Azure SDK证书错误javax.net.ssl.SSLHandshakeException ...Azure作为微软的公有云平台,提供了非常丰富的SDK和API让开发人员可以非常方便的调用的各项服务,目前除了自家的.NET, Java, Python, nodeJS,
  • 即日起,《阿里巴巴Java开发手册》正式更名为《Java开发手册》,感谢两年来,Java开发者们的热心参与。正是因为有你们的参与,这本不够完美的手册正在日臻完善。《Java开发手册》属于所有参与其中的贡献者,你们是...
  • Java 开发 WebService

    2018-07-19 20:04:59
    Java 6 开发 WebService https://blog.csdn.net/xiaochunyong/article/details/7764516   Java WebService接口生成和调用 图文详解 https://blog.csdn.net/qazwsxpcm/article/details/70370490    ...
  • java HttpsURLConnection发送https请求

    千次阅读 2017-12-22 15:46:07
    摘 要 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问。但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从而不能访问HTTPS站点。本文在简要介绍JSSE的基础上提出...
  • Cocos2D跨平台《联众德州扑克》全套源码 服务端使用java开发 https://bbs.wxrym.com/thread-98626-1-1.html (出处: 外星人源码论坛) 给大家分享一个Cocos2D棋牌手游源码,这是一个精仿联众德州扑克的手游源码,...
  • Java开发规范文档

    千次阅读 2018-08-21 22:43:47
    1.唯品会java开发手册 https://vipshop.github.io/vjtools/#/standard/ 2.阿里巴巴Java开发手册(详尽版).pdf 下载地址 https://pan.baidu.com/s/1eeijgPHC0Wzy6p-ZNQv9EQ 密码 :ggfl...
  • 1、Java官网https://www.oracle.com/java/index.html2、Java世界https://www.javaworld.com/3、Apache官网http://www.apache.org/4、Spring官网https://spring.io/5、Github官网https://github.com/6、Stackoverflow...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,163
精华内容 8,465
关键字:

java开发https

java 订阅