(备份)用jdk自带truststore 文件cacerts 读取https网页文件

本文介绍了如何配置Java的SSL信任证书,并通过SSLSocketFactory创建Socket连接实现HTTPS通信。详细讲解了cacerts文件路径,以及在Eclipse中设置运行参数。同时,提供了一个简单的SSL客户端示例代码,演示了通过Socket读取HTTPS网页内容的过程。强调了理解网络协议和SSL原理对于自定义网络程序的重要性。
摘要由CSDN通过智能技术生成

cacerts 文件路径:运行java -verbose后, 开始第一行就是java jdk主路径,主路径下/lib/security/cacerts

我的完整路径:/usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts 

cacerts 是加密文件,默认密码为changeit

好了,最后一步修改eclipse  run 运行输入参数:-Djavax.net.ssl.trustStore=/usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=changeit

下面有设置截图,当然 如用命令行javac 就直接带上这一串参数。

 SSL网络编程都是由SSLServerSocketFactory    SSLSocketFactory 两个类转换到 ServerSocket,Socket来完成,最终都归到socket 编程。所以我们只要理解了网络传输的各种协议,就可用socket 结合协议编出各种网络程序。经查才知道chrome没有truststore信任库,本来想拿chrome 浏览器的truststore 库来试试能不能也可以读https 。但是完全可以把浏览器下载的网页指纹加在cacerts中,作为truststore使用。先搞清楚openssl和https协议后,慢慢分解这个https认证过程。我一定要搞一个socket 版的https认证程序。戏称,要把java c 化。

读网页文件有两种思路,一种是用socket ,   另一种是用httpconnection.  但第一种要自己写http,https请求协议。后一种java已封装好了,直接拿来用,但输出没有第一种灵活全面。

代码如下 ,留存参考

d63694f08a424a24b6cddb57b0575986.png

35c849b441f54cd3be3d36a3ea68e0c8.png

import java.io.*;
import java.net.*;

import javax.net.ssl.SSLSocketFactory;

public class Sslclient {
	public static void main(String[] args) {
		SSLSocketFactory ssf=(SSLSocketFactory)SSLSocketFactory.getDefault();
		try {
			Socket sc=ssf.createSocket("cn.bing.com",443);
			
			OutputStream os=sc.getOutputStream();
			InputStream is=sc.getInputStream();
			
  			os.write("GET / HTTP/1.1\r\n".getBytes());
			os.write("Host:cn.bing.com\r\n".getBytes());
			os.write("Connection:close\r\n\r\n".getBytes());
			os.flush();
		    
			InputStreamReader isr=new InputStreamReader(is,"UTF-8");
			int k;
			String s="";
			do{
				
				k=isr.read();
				s=s+(char)k;
			}while(k!=-1);
			System.out.print(s);
	     	
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值