java命令行报错:javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

描述一下整个问题:

jdk1.8,使用https通讯,用eclipse执行正确,但是放到ubuntu或者windows上,用命令行执行报错。

1。最初,把jdk1.8回退到1.7,代码没变,这个问题自动解决。

2。后来在代码中加System.setProperty("javax.net.debug", "ssl");可以看到ssl出错的原始原因。加这行后,在命令行执行,确实看到了整个ssl通讯过程,错误也详细输出

    1)如果原因是:“main, RECV TLSv1 ALERT:  fatal, handshake_failure“,下载JCE补丁UnlimitedJCEPolicyJDK7.zip等,如下,

适用JDK6的JCE补丁:

    http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

适用JDK7的JCE补丁:

    http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

适用JDK8的JCE补丁: 
    http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html 

2)如果原因是:”main, handling exception: javax.net.ssl.SSLKeyException: RSA premaster secret error“,

    把%java_home%\jre\lib\ext\sunjce_provider.jar添加到classpath,

例如:java  -Djava.ext.dirs=D:\javacodes8\autotest\interfaces\class  com.testapplications.Trans 201912231211 10,

sunjce_provider.jar复制在D:\javacodes8\autotest\interfaces\class里.

问题解决。

201912231800dongwuyuan

Java代码执行时出现 `javax.net.ssl.SSLException: Tag mismatch!` 错误,可参考以下潜在解决办法: - **检查Java版本兼容性**:该错误可能与Java版本有关,如在本地Java 8运行正常,但在Jenkins或CI/CD环境(Java 11)中出现问题。可尝试将环境中的Java版本切换为与本地相同的版本,看是否能解决问题 [^2]。 - **排查Android Studio SDK包问题**:若在安装或更新Android Studio的SDK包时出现此错误,如 “Warning: An error occurred while preparing SDK package Android Emulator: Tag mismatch!”,需检查SDK包的完整性和网络连接情况,可尝试重新下载和安装相关的SDK包 [^1]。 - **重写 `getAcceptedIssuers` 方法**:对于 `javax.net.ssl.SSLException: java.lang.UnsupportedOperationException` 相关问题,可通过重写 `getAcceptedIssuers` 方法来解决。示例代码如下: ```java import java.security.cert.X509Certificate; public class CustomTrustManager implements javax.net.ssl.X509TrustManager { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) { // 实现自定义逻辑 } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) { // 实现自定义逻辑 } @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } } ``` - **明确SSL连接配置**:若错误是由于MySQL高版本需要指明是否进行SSL连接导致,可在数据库连接URL中添加相关参数。示例代码如下: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DatabaseConnection { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/your_database?useSSL=false"; try { Connection connection = DriverManager.getConnection(url, "username", "password"); // 执行数据库操作 } catch (SQLException e) { e.printStackTrace(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值