Java代码访问基于https安全协议的网站或服务器, 一般分为有证书和无证书两种,无证书的大部分都很简单,说一下我遇到的有证书的:
证书类型:pfx,(个人证书带密码)
服务器配置:基于SSL加密模式(我这边是基于nginx配置的https安全验证)

  1. 首先要有jks格式文件的证书秘钥文件,如果没有可以向提供方索要pfx证书,带密码,然后把pfx证书转换为jks格式的密钥文件,因为用程序访问的话必须要密钥类型的文件才行,首先进入你的jdk,进入:
    %JAVA_HOME%/jre/bin目录下,执行如下命令:
    keytool -importkeystore -v -srckeystore client.pfx -srcstoretype pkcs12 -srcstorepass 111111 -destkeystore client.jks -deststoretype jks
    命令说明:一般命令从字面意思都能看懂,就不在说明
    kytool是jdk自带的一个密钥工具,源文件时客户端证书client.pfx,类型未pkcs12,密码是111111,目标密钥文件是client.jks,目标类型是jks
  1. 现在有了密钥文件和密码,就可以用java代码来访问了,把下面这段代码直接拷贝到你的

    package mr;import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.security.KeyManagementException;
    import java.security.KeyStore;
    import java.security.KeyStoreException;
    import java.security.NoSuchAlgorithmException;
    import java.security.UnrecoverableKeyException;
    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;import javax.net.ssl.HostnameVerifier;
    import javax.net.ssl.HttpsURLConnection;
    import javax.net.ssl.KeyManager;
    import javax.net.ssl.KeyManagerFactory;
    import javax.net.ssl.SSLContext;
    import javax.net.ssl.SSLSession;
    import javax.net.ssl.SSLSocketFactory;
    import javax.net.ssl.TrustManager;
    import javax.net.ssl.X509TrustManager;public class MarketReplyTest {public static String HTTPSURL = "https://196.123.131.7/DSFA/MarketReply/GetReplayRecords?opType=get3DESStr&str=111111";public static void main(String[] args){testHttpsPost();}public static void testHttpsPost() {String keystorefile = "c:\\\\cafakeystore_client1.jks";// 个人pfx证书转换为jks密钥文件,该密钥文件可以用程序进行访问String keystorepw = "111111";// 证书密码KeyStore keystore = null;try {keystore = KeyStore.getInstance("JKS");//密钥类型为jkskeystore.load(new FileInputStream(keystorefile), keystorepw.toCharArray());// 加载密钥文件KeyManagerFactory keymanagerfactory = KeyManagerFactory.getInstance("SunX509");// 获取密钥管理类的工厂类keymanagerfactory.init(keystore, keystorepw.toCharArray());// 工厂类初始化密钥文件,这里依然需要密码KeyManager[] akeymanager = keymanagerfactory.getKeyManagers();// 获取密钥管理类TrustManager[] atrustmanager = { new TrustAnyTrustManager() };// 获取受信任的证书SSLContext ssl = SSLContext.getInstance("TLS");// 获取安全协议上下文ssl.init(akeymanager, atrustmanager, null);// 初始化安全协议SSLSocketFactory sslsocketfactory = ssl.getSocketFactory();// 获取协议通信URL url = new URL(HTTPSURL);HttpsURLConnection https = (HttpsURLConnection) url.openConnection();https.setSSLSocketFactory(sslsocketfactory);https.setHostnameVerifier(new TrustAnyHostnameVerifier());https.setDoInput(true);https.setDoOutput(true);https.setUseCaches(false);https.setRequestMethod("POST");https.connect();InputStream in = https.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(in));String result = "";String line = "";while ((line = reader.readLine()) != null) {result += line + "\\r";}System.out.println(result);// 输出结果值,reader.close();https.disconnect();} catch (KeyStoreException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (CertificateException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (KeyManagementException e) {e.printStackTrace();} catch (UnrecoverableKeyException e) {e.printStackTrace();}}/***信任所有证书(个人证书本来就不受信任,所以在此做处理)**/private static class TrustAnyTrustManager implements X509TrustManager {public void checkClientTrusted(X509Certificate[] arg0, String arg1)throws CertificateException {}public void checkServerTrusted(X509Certificate[] arg0, String arg1)throws CertificateException {}public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[] {};}}/*** 验证IP**/private static class TrustAnyHostnameVerifier implements HostnameVerifier {public boolean verify(String hostname, SSLSession session) {return hostname.equals(session.getPeerHost());}}}

Java代码访问基于https安全协议的网站或服务器相关推荐

  1. java计算机毕业设计基于ssm的志愿者招募网站(源代码+数据库+Lw文档)

    项目介绍 志愿者招募的需求和管理上的不断提升,志愿者招募网站的潜力将无限扩大,志愿者招募网站在业界被广泛关注,本系统对此进行总体分析,将为志愿者招募信息管理的发展提供参考.志愿者招募网站对志愿者招募有 ...

  2. java计算机毕业设计基于web的公益募捐网站源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计基于web的公益募捐网站源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计基于web的公益募捐网站源程序+mysql+系统+lw文档+远程调试 本源码技术栈: ...

  3. java计算机毕业设计基于web的公益募捐网站源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计基于web的公益募捐网站源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计基于web的公益募捐网站源码+数据库+系统+lw文档+mybatis+运行部 ...

  4. 打印服务器协议,基于TCP/IP协议的嵌入式网络打印服务器设计

    摘要: 随着电子技术和计算机网络技术的发展,嵌入式系统在家庭和工业的各个领域都得到了广泛的应用,各种信息家电,网络设备以及工业控制领域都出现了嵌入式系统的身影,其数量已经远远超过了各种通用计算机.但是 ...

  5. (java毕业设计)基于ssm校园二手交易网站管理系统源码

    基于ssm校园二手交易网站管理系统 校园二手交易网站管理系统是基于java编程语言,ssm框架和mysql数据库开发,BS架构系统.系统主要分为学生用户,管理员两个角色,学生可以浏览商品,购买二手商品 ...

  6. Java毕业设计_ 基于SSM的JSP教学网站的设计与实现

    基于SSM的JSP教学网站的设计与实现 基于SSM的JSP教学网站的设计与实现mysql数据库创建语句 基于SSM的JSP教学网站的设计与实现oracle数据库创建语句 基于SSM的JSP教学网站的设 ...

  7. 成绩查询系统源java代码_基于jsp的成绩查询系统-JavaEE实现成绩查询系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的成绩查询系统, 该项目可用各类java课程设计大作业中, 成绩查询系统的系统架构分为前后台两部分, 最终实现在线上 ...

  8. 运动会成绩管理java代码_基于jsp的运动会成绩管理-JavaEE实现运动会成绩管理 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的运动会成绩管理, 该项目可用各类java课程设计大作业中, 运动会成绩管理的系统架构分为前后台两部分, 最终实现在 ...

  9. 审批流程java 代码_基于jsp的企业流程审批系统-JavaEE实现企业流程审批系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的企业流程审批系统, 该项目可用各类java课程设计大作业中, 企业流程审批系统的系统架构分为前后台两部分, 最终实 ...

最新文章

  1. Metasploit-MS17-010利用
  2. 设计模式 学习笔记(1)简单工厂模式、策略模式
  3. 移动端input 无法获取焦点的问题
  4. [记录]java.math.biginteger cannot be cast to java.lang.long
  5. HTTP服务器恢复文件头,浅谈“Web服务器解析漏洞”
  6. Linux curl命令简介
  7. C3P0连接池的基本配置与使用
  8. 梦幻群侠传5帮派修炼_梦幻群侠传5手游下载
  9. 操作 神通数据库_神通数据库安装及操作笔记
  10. 利用Matlab进行图像处理
  11. Python学习之cookies及session用法
  12. 卷皮网aso优化数据分析报告
  13. 关于assert im_orig.shape[2] == 3, 3ch image is expected
  14. 大学英语六级高频词汇
  15. 近年来Person Re-identification论文汇总
  16. flask手写汉字识别网站(已开源)
  17. 阿里云环境(CentOS7.6)部署Zabbix5.0 Agent2
  18. 共享锁和排它锁(ReentrantReadWriteLock)
  19. C#实现PDF转PNG图片
  20. 笔记本如何同时上内外网

热门文章

  1. Matlab funnction函数定义及常见扩展应用(@函数句柄,feval函数等)
  2. 行业分析| 无人机电力巡检技术的应用
  3. 实力凸显 | 思迈特软件入选“2022中国软件150强“等三大重磅榜单
  4. 如何让地面不起灰_水泥地面防起灰有什么办法? 水泥地面为什么会起灰?
  5. IOS应用程序多语言本地化解决方案
  6. C++中的RVO和NRVO
  7. 读林锐博士的《软件工程思想》有感
  8. netty自定义url过滤器抛引用异常
  9. 学什么专业才能成为程序员?其实想成为程序员,远不止计科和软工!
  10. docker启动状态为Exited (0)容器