将服务器端证书和客户端证书保存到本地,客户端证书在D:\download\client.p12,服务器端证书在D:\download\server.cer(本例使用的服务器端证书和客户端证书是使用keytool自创建的,方法见另一篇博客

https://mp.csdn.net/console/editor/html/105595647)

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.security.KeyStore;

import javax.net.ssl.SSLContext;

import org.apache.http.HttpEntity;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.conn.ssl.SSLConnectionSocketFactory;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.ssl.SSLContexts;

import org.apache.http.util.EntityUtils;

public class HttpsDemo {

private final static String PFX_PATH = "D:\\download\\client.p12"; //客户端证书路径

private final static String PFX_PWD = "123456"; //客户端证书密码

public static String sslRequestGet(String url) throws Exception {

KeyStore keyStore = KeyStore.getInstance("PKCS12");

File file = new File(PFX_PATH);

InputStream instream = new FileInputStream(file);

try {

keyStore.load(instream, PFX_PWD.toCharArray());

} finally {

instream.close();

}

SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, PFX_PWD.toCharArray()).build();

SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext,

new String[] {"TLSv1", "TLSv1.1", "TLSv1.2"},

null,

SSLConnectionSocketFactory.getDefaultHostnameVerifier());

CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();

try {

HttpGet httpget = new HttpGet(url);

// httpost.addHeader("Connection", "keep-alive");// 设置一些heander等

CloseableHttpResponse response = httpclient.execute(httpget);

try {

HttpEntity entity = response.getEntity();

String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8");//返回结果

EntityUtils.consume(entity);

return jsonStr;

} finally {

response.close();

}

} finally {

httpclient.close();

}

}

public static void main(String[] args) throws Exception {

System.out.println(System.getProperty("java.home"));

String context = sslRequestGet("https://sntest.zlyd.com/");

System.out.println(context);

// System.out.println(sslRequestGet("https://sntest.zlyd.com:443/"));

}

}

在运行前,要先做一些准备工作:

启动服务器端tomcat,打开你需要访问的端口(如: iptables -I INPUT -p tcp --dport 443 -j ACCEPT)

运行,可能会抛出异常

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path

解决方法:

进入 %JAVA_HOME%/jre/lib/security 目录下,运行命令行:

keytool -import -alias server -keystore cacerts -file D:\download\server.cer

回车,输入cacerts证书库的密码:changeit

【查看cacerts证书库:keytool -list -keystore cacerts

删除cacerts证书库中某个证书:keytool -delete -alias akazam_email -keystore cacerts】

重新运行java程序

java 访问https 证书_Java+SSL证书访问Https站点相关推荐

  1. java安装证书_Java SSL证书的安装

    https正在成为主流,http估计在不久的将来会被彻底放弃-- 一个Java程序需要访问一个https的网站的时候,可能需要涉及证书的安装,卸载等操作. 一.证书的下载 打开浏览器输入https:/ ...

  2. HTTPS与自制SSL证书

    HTTPS原理 我们先来看看黑客是如何盗取客户端和服务端通讯的真实报文的. 对称密钥 对称密钥是客户端和服务端加解密时共用的一个密钥,因为是共用密钥,必然存在一个密钥传输的过程,黑客可以通过截取报文的 ...

  3. 阿里云域名https证书(ssl证书)配置

    阿里云域名https证书(ssl证书)配置,nginx配置,亲测可用,记录下 首先进入到阿里云域名控制台,在域名控制台选择要配置的域名,并在操作栏点击"解析" 在域名解析点击更多下 ...

  4. 腾讯云服务器配置https 部署安装ssl证书

    腾讯云服务器配置https 部署安装ssl证书 配置:CentOS 7 我是使用nginx服务器对Vue项目进行挂载,所以这里主要说明nginx服务器如何配置https服务 如何安装nginx Ngi ...

  5. 让网站永久拥有HTTPS - 申请免费SSL证书并自动续期

    本文永久地址 为什么要用HTTPS 相关简介 Let's Encrypt Certbot 便宜SSL 获取HTTPS证书 命令行 安装Certbot 申请证书 图形化 部署HTTPS证书 设置HTTP ...

  6. php curl 不验证ssl,PHP Curl https跳过ssl证书认证报错记录及解决

    PHP Curl https跳过ssl证书认证报错记录及解决 function get($url = '', $cookie = '') { $ch = curl_init(); curl_setop ...

  7. 七牛云如何配置免费 https 阿里云SSL证书

    七牛云如何配置免费 https 阿里云SSL证书 七牛云注册链接:https://s.qiniu.com/yaQ3am 一.情况是这么个情况 我之前有个项目是走的 https,这个项目作了一些印刷品, ...

  8. 【ssl认证、证书】SSL 证书基本概念、证书格式、openssl和keytool的区别

    文章目录 1. keytool VS openssl 2. X.509 VS PKCS 2.1 PKCS 2.2 X.509 2.2.1 证书编码格式 2.2.1.1 DER 证书编码格式二进制 2. ...

  9. 域名证书是SSL证书吗?域名证书和SSL证书有啥区别?

    如今站长建设网站,不仅要想方设法的做好网站优化的工作,还要采取多种方法来保障网站的传输安全.其中,比较可靠的一种方法就是给网站安装SSL证书. 最近一两年来,要求安装SSL证书的站长越来越多,可以说S ...

  10. 域名证书和SSL证书一样的吗?有什么区别呢

    在互联网世界中,不同类型的网站安全系数以及安全等级各不相同,用户访问网站如果想要保证良好的安全性,需要观察网站是否具备相应的安全证书.相信很多朋友都听说过域名证书与ssl证书,但是对这两种证书的具体差 ...

最新文章

  1. BZOJ 2190: [SDOI2008]仪仗队
  2. python if __name__ == '__main__'
  3. 钉钉如何调整组织架构_阿里宣布新一轮组织架构调整:明确大文娱一号位,钉钉进入阿里云...
  4. vue全局组件与局部组件
  5. tensorflow2caffe(1) : caffemodel解析,caffemodel里面到底记录了什么?
  6. c语言实现去除字符串首尾空格
  7. 万能点位图软件_红色网格衣+很多漂亮的花边像素图,绣手帕花边的十字绣图...
  8. java程序样例_一个完整的java程序示例
  9. 前端开发面试题总结-代码篇
  10. WPF界面设计技巧(11)-认知流文档 小议WPF的野心
  11. ThinkPHP基础
  12. SCSI和RAID控制器
  13. C# 将错误日志写到txt文件
  14. 群晖系统上的 Docker 使用拾遗
  15. 前端项目开发中碰到的坑、移动端兼容性问题
  16. 小知识系列(3):Hanoi塔(汉诺塔,河内塔)
  17. Linux生产环境CPU使用率100%,教你定位到具体函数
  18. MMA-Mathematica初步了解和使用-MMA
  19. linux 挂载新硬盘
  20. vs2019选定内容没有属性页_【灌篮高手】新版本倒计时——球服属性自由更改?!...

热门文章

  1. webpack最新版本_【每日面经】字节跳动、美团点评、360最新面经速递!
  2. C#:获得本机IP地址
  3. Javascript算法:非固定宽度滑动窗口算法
  4. 斯坦福大学深度学习公开课cs231n学习笔记(3)最优化方法:梯度下降
  5. Java JDK动态代理Proxy类的原理是什么? - 知乎(重排版)
  6. 【转】C#正则表达式教程和示例
  7. 【GDB调试学习笔记】调试逻辑错误
  8. 串口通信----串口接收框接收不到数据
  9. Python利用Beautiful Soup抓取新闻标题
  10. 【LeetCode】【字符串】题号:*481. 神奇字符串