首页 > 其他分享 >SSL证书安全链接

SSL证书安全链接

时间:2024-10-12 10:15:36浏览次数:1  
标签:getInstance 证书 KeyManagerFactory public SSL X509Certificate new 链接

1、示例代码

private CloseableHttpClient createSslKeyClient(String keyStorePwd) throws KeyStoreException, CertificateException, NoSuchAlgorithmException, IOException, UnrecoverableKeyException, KeyManagementException {
                KeyStore clientStore  = KeyStore.getInstance("PKCS12");
                        if(inStream == null) {
                                log.warn("PFX Key File not exist");
                        } else {
                                clientStore.load(inStream, keyStorePwd.toCharArray());
                        }
                //Trust everybody
                X509TrustManager tm = new X509TrustManager() {
                        @Override
                        public void checkClientTrusted(java.security.cert.X509Certificate[] arg0, String arg1){}
                        @Override
                        public void checkServerTrusted(java.security.cert.X509Certificate[] arg0, String arg1) {}
                        @Override
                        public java.security.cert.X509Certificate[] getAcceptedIssuers() {return null;}
                };
                SSLContext sslCtx = SSLContext.getInstance("TLS");
                KeyManagerFactory kmFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
                kmFactory.init(clientStore, keyStorePwd.toCharArray());
                KeyManager[] keyManagers = kmFactory.getKeyManagers();
                sslCtx.init(keyManagers, new TrustManager[]{tm}, null);
                SSLConnectionSocketFactory sslConnectionFactory = new SSLConnectionSocketFactory(sslCtx);
                Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create().register("https", sslConnectionFactory).register("http", new PlainConnectionSocketFactory()).build();
                PoolingHttpClientConnectionManager pcm = new PoolingHttpClientConnectionManager(registry);
                HttpClientBuilder hcb = HttpClientBuilder.create().setConnectionManager(pcm).setDefaultCookieStore(cookieStore)
                                .setKeepAliveStrategy((response, context) -> 60 * 1000 * 40).setDefaultRequestConfig(REQUEST_CONFIG);
                return hcb.build();
        }

2、代码解释:

SSLContext sslCtx = SSLContext.getInstance("TLS");
说明:获取ssl上下文,这里指定TLS表示支持所有TLS协议
sslCtx.init(keyManagers, new TrustManager[]{tm}, null);
说明:
SSL构造方法的三个重要参数:
1、keyManagers : 密钥管理

2、TrustManager: 信任管理器

3、第三个参数:随机数生成器,它用于加密操作


构造参数说明-keyManagers
KeyStore clientStore  = KeyStore.getInstance("PKCS12");
KeyManagerFactory kmFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
                kmFactory.init(clientStore, keyStorePwd.toCharArray());
                KeyManager[] keyManagers = kmFactory.getKeyManagers();

说明:
1、创建了一个KeyStore实例,指定了密钥库的类型为"PKCS12"。PKCS#12是一种广泛使用的密钥库格式,它支持存储私钥、公钥证书以及其他类型的证书

2、KeyManagerFactory 类用于生成和管理密钥管理器,这些密钥管理器负责提供参与SSL/TLS握手过程中所需的密钥。密钥管理器通常用于客户端身份验证,或者用于服务器端,
以便在SSL握手期间提供私钥和证书链。KeyManagerFactorygetInstance 方法用于获取 KeyManagerFactory 的实例,并且你需要指定一个算法名称。getDefaultAlgorithm
方法返回默认的密钥管理器工厂算法,这通常是最常用的算法,例如 "SunX509"

 

构造参数说明-TrustManager

import javax.net.ssl.X509TrustManager;
import java.security.cert.X509Certificate;

public class TrustAllCertificates implements X509TrustManager {
    @Override
    public void checkClientTrusted(X509Certificate[] chain, String authType) {
        // Trust all certificates
    }

    @Override
    public void checkServerTrusted(X509Certificate[] chain, String authType) {
        // Trust all certificates
    }

    @Override
    public X509Certificate[] getAcceptedIssuers() {
        return new X509Certificate[]{};
    }
}

说明:
X509TrustManager 是一个接口,用于验证X.509证书。当你创建一个 X509TrustManager 实例时,你通常需要实现这个接口的方法,
以便在SSL/TLS握手过程中验证服务器的证书
在这个例子中,checkClientTrusted 和 checkServerTrusted 方法被实现为不接受任何证书的验证。这意味着使用这个 X509TrustManager 
的SSL连接将不会验证服务器的证书,这在测试环境中可能是有用的,但在生产环境中是非常不安全的,因为它使连接容易受到中间人攻击

 



 


标签:getInstance,证书,KeyManagerFactory,public,SSL,X509Certificate,new,链接
From: https://www.cnblogs.com/xzlnuli/p/18459943

相关文章

  • 某普SSLVPN 任意文件读取
    0x01产品描述:‌   迪普科技的VPN产品是一款面向广域互联应用场景的专业安全网关产品,集成了IPSec、SSL、L2TP、GRE等多种VPN技术,支持国密算法,实现分支机构、移动办公人员的统一安全接入,提供内部业务跨互联网的安全访问。‌该产品支持基于用户、应用的安全策略,提供攻击防......
  • [postgres]使用SSL加密连接
    前言因数据加密传输的要求,应用连接postgres也要配置ssl连接加密,从而防止数据泄露或被篡改。启用ssl连接有利于加强数据安全性,但也会增加连接通信的成本。对于企业级应用,当然还是以安全性为首位。本文使用的postgres版本为15.3配置步骤企业内一般用权威CA机构签发的证书,本地......
  • 最新Qt6将可执行文件打包为独立exe保姆级教学!含报错:无法定位程序输入点于动态链接库解
     相信大家都有类似的体验,自己已经在Qt练习中写出了不错的小程序,每次想发给别人体验都要发一整个大代码包,还得对面有对应的装好的QT才能运行,或者是想把自己的成果记录下来作为一个单独的exe文件却没有办法,今天教大家Qt如何生成独立可执行exe。注意:以下是Qt6之前版本可用的全过......
  • 星云ERP 1.2k star,一款完全开源的进销存ERP系统,附下载链接
    项目介绍本系统是基于SpringBoot框架,为中小企业提供完全开源、用户体验好的进销存ERP系统,解决开店难、管理难、数据统计难的问题。系统下载链接下载链接:  星云ERP下载主要技术框架Springboot2.2.2.RELEASEMyBatis-plus3.4.2Spring-session-data-redis2.2.0.R......
  • 1.7k star,一款网页版的跨平台远程控制和监控神器,附下载链接。
    今天给大家介绍一个免费、安全、开源、基于网页、跨平台且功能丰富的远程管理工具,可以通过浏览器,随时随地管理设备。工具下载链接下载链接:工具下载介绍Spark是一个Go编写的,网页UI、跨平台以及多功能的远程控制和监控工具,你可以随时随地监控和控制所有设备。亮点:本......
  • 考完PMP证书,还有必要考ACP敏捷吗?
    考完PMP®的小伙伴,我看到很多人都对ACP®很感兴趣最近几年,ACP®和PMP®都是比较热门的认证,它们师承一脉,可以说是相辅相成的关系,所以为了更高的职业追求,现在大家一般都会一起拿下这两本证书。一、PMI-ACP®是什么?PMI-ACP®考试是由美国项目管理协会(PMI)于2011年推出一门......
  • peer closed connection in SSL handshake
    报错信息:2024/10/1110:45:13[error]11933#0:*437581086peerclosedconnectioninSSLhandshake(104:Connectionresetbypeer)whileSSLhandshakingtoupstream,client:69.69.69.8,server:127.0.0.1,request:"POST/car/lsimpleHTTP/1.1",upstre......
  • 从0开始将本地git链接至github
    前言本文仅仅使用ssh将本地git链接至github,仅做本人记录使用。步骤1:创建一个Git仓库来存放dotfiles创建一个目录来存储dotfiles。通常,使用~/dotfiles作为存储位置。mkdir~/dotfiles初始化Git仓库:在dotfiles目录中初始化一个新的Git仓库。cd~/dotfile......
  • crit: Microsoft.AspNetCore.Server.Kestrel[0] Unable to start Kestrel. Interop+Cr
    域名证书没有放在指定的位置错误信息crit:Microsoft.AspNetCore.Server.Kestrel[0]UnabletostartKestrel.Interop+Crypto+OpenSslCryptographicException:error:2006D080:BIOroutines:BIO_new_file:nosuchfileatInterop.Crypto.CheckValidOpenSslHandle(Saf......
  • Python快速编程小案例——打印蚂蚁森林植树证书
    提示:(个人学习),案例来自工业和信息化“十三五”人才培养规划教材,《Python快速编程入门》第2版,黑马程序员◎编著蚂蚁森林是支付宝客户端发起“碳账户”的一款公益活动:用户通过步行地铁出行、在线消费等行为,可在蚂蚁森林中获取能量,当能量到达一定数值后,用户可以在支付宝中申请......