tomcat & java 强制使用tlsv1.2协议

本文介绍如何在Tomcat中通过修改server.xml文件启用TLSv1.2协议,以及在Java环境中调整java.security配置文件,禁用过时的安全算法,确保应用程序通信安全。

tomcat:修改server.xml  在对应的connector 里添加 sslEnabledProtocols="TLSv1.2",重启tocmat

java:修改jre/lib/security/java.security ,修改jdk.tls.disabledAlgorithms值为 SSLv2Hello, SSLv3, TLSv1, TLSv1.1

即jdk.tls.disabledAlgorithms= SSLv2Hello, SSLv3, TLSv1, TLSv1.1

ps:java.security 修改后,全局适用。

private CloseableHttpClient getHttpClientSSL() throws KeyManagementException, NoSuchAlgorithmException { SSLContext sslcontext = null; try { sslcontext = createIgnoreVerifySSL(); } catch (Exception ex) { //logger.error(ex.getMessage()); } System.setProperty("https.protocols", "TLSv1.2"); Registry<ConnectionSocketFactory> socketFactoryRegistry; if (sslcontext != null) socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create() .register("http", PlainConnectionSocketFactory.INSTANCE) .register("https", new SSLConnectionSocketFactory(sslcontext, new String[]{"TLSv1.2"}, null, NoopHostnameVerifier.INSTANCE)) .build(); else socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create() .register("http", PlainConnectionSocketFactory.INSTANCE) .build(); PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry); HttpClients.custom().setConnectionManager(connManager); RequestConfig defaultRequestConfig = RequestConfig.custom() .setSocketTimeout(30000) .setConnectTimeout(30000) .setConnectionRequestTimeout(30000) .setStaleConnectionCheckEnabled(true) .build(); CloseableHttpClient client = HttpClients.custom() .setConnectionManager(connManager) .setDefaultCookieStore(cookieStore) .setDefaultRequestConfig(defaultRequestConfig) .build(); return client; } public SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException { SSLContext sc = SSLContext.getInstance("TLSv1.2"); // 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法 X509TrustManager trustManager = new X509TrustManager() { @Override public void checkClientTrusted( java.security.cert.X509Certificate[] paramArrayOfX509Certificate, String paramString) throws CertificateException { } @Override public void checkServerTrusted( java.security.cert.X509Certificate[] paramArrayOfX509Certificate, String paramString) throws CertificateException { } @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } }; sc.init(null, new TrustManager[]{trustManager}, null); return sc; } //以上是我请求的http代码,查看jdk版本是支持TLSv1.2,且在换证书前代码可运行。
最新发布
10-10
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- MySQL 8.x 配置(使用新版驱动时) --> Connection conn = DriverManager.getConnection(url, user, pwd); <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/message_db?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true</property> <property name="connection.username">root</property> <property name="connection.password">82615486</property> <!-- 连接池设置 --> <property name="hibernate.c3p0.min_size">5</property> <property name="hibernate.c3p0.max_size">20</property> <property name="hibernate.c3p0.timeout">1800</property> <property name="hibernate.c3p0.max_statements">50</property> <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <property name="show_sql">true</property> <!-- 强制使用TLSv1.2协议 --> <property name="hibernate.connection.sslProtocol">TLSv1.2</property> <property name="hibernate.connection.sslEnabled">true</property> <mapping class="model.Message"/> <mapping class="model.User"/> </session-factory> </hibernate-configuration>tly registered JDBC driver list: Exception in thread "main" java.lang.ClassCastException: com.mysql.cj.jdbc.Driver cannot be cast to java.sql.Driver at servlet.TestConnection.main(TestConnection.java:24)
06-22
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值