java 访问https 证书_Java+SSL证书访问Https站点
将服务器端证书和客户端证书保存到本地,客户端证书在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站点相关推荐
- java安装证书_Java SSL证书的安装
https正在成为主流,http估计在不久的将来会被彻底放弃-- 一个Java程序需要访问一个https的网站的时候,可能需要涉及证书的安装,卸载等操作. 一.证书的下载 打开浏览器输入https:/ ...
- HTTPS与自制SSL证书
HTTPS原理 我们先来看看黑客是如何盗取客户端和服务端通讯的真实报文的. 对称密钥 对称密钥是客户端和服务端加解密时共用的一个密钥,因为是共用密钥,必然存在一个密钥传输的过程,黑客可以通过截取报文的 ...
- 阿里云域名https证书(ssl证书)配置
阿里云域名https证书(ssl证书)配置,nginx配置,亲测可用,记录下 首先进入到阿里云域名控制台,在域名控制台选择要配置的域名,并在操作栏点击"解析" 在域名解析点击更多下 ...
- 腾讯云服务器配置https 部署安装ssl证书
腾讯云服务器配置https 部署安装ssl证书 配置:CentOS 7 我是使用nginx服务器对Vue项目进行挂载,所以这里主要说明nginx服务器如何配置https服务 如何安装nginx Ngi ...
- 让网站永久拥有HTTPS - 申请免费SSL证书并自动续期
本文永久地址 为什么要用HTTPS 相关简介 Let's Encrypt Certbot 便宜SSL 获取HTTPS证书 命令行 安装Certbot 申请证书 图形化 部署HTTPS证书 设置HTTP ...
- php curl 不验证ssl,PHP Curl https跳过ssl证书认证报错记录及解决
PHP Curl https跳过ssl证书认证报错记录及解决 function get($url = '', $cookie = '') { $ch = curl_init(); curl_setop ...
- 七牛云如何配置免费 https 阿里云SSL证书
七牛云如何配置免费 https 阿里云SSL证书 七牛云注册链接:https://s.qiniu.com/yaQ3am 一.情况是这么个情况 我之前有个项目是走的 https,这个项目作了一些印刷品, ...
- 【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. ...
- 域名证书是SSL证书吗?域名证书和SSL证书有啥区别?
如今站长建设网站,不仅要想方设法的做好网站优化的工作,还要采取多种方法来保障网站的传输安全.其中,比较可靠的一种方法就是给网站安装SSL证书. 最近一两年来,要求安装SSL证书的站长越来越多,可以说S ...
- 域名证书和SSL证书一样的吗?有什么区别呢
在互联网世界中,不同类型的网站安全系数以及安全等级各不相同,用户访问网站如果想要保证良好的安全性,需要观察网站是否具备相应的安全证书.相信很多朋友都听说过域名证书与ssl证书,但是对这两种证书的具体差 ...
最新文章
- BZOJ 2190: [SDOI2008]仪仗队
- python if __name__ == '__main__'
- 钉钉如何调整组织架构_阿里宣布新一轮组织架构调整:明确大文娱一号位,钉钉进入阿里云...
- vue全局组件与局部组件
- tensorflow2caffe(1) : caffemodel解析,caffemodel里面到底记录了什么?
- c语言实现去除字符串首尾空格
- 万能点位图软件_红色网格衣+很多漂亮的花边像素图,绣手帕花边的十字绣图...
- java程序样例_一个完整的java程序示例
- 前端开发面试题总结-代码篇
- WPF界面设计技巧(11)-认知流文档 小议WPF的野心
- ThinkPHP基础
- SCSI和RAID控制器
- C# 将错误日志写到txt文件
- 群晖系统上的 Docker 使用拾遗
- 前端项目开发中碰到的坑、移动端兼容性问题
- 小知识系列(3):Hanoi塔(汉诺塔,河内塔)
- Linux生产环境CPU使用率100%,教你定位到具体函数
- MMA-Mathematica初步了解和使用-MMA
- linux 挂载新硬盘
- vs2019选定内容没有属性页_【灌篮高手】新版本倒计时——球服属性自由更改?!...