zoukankan      html  css  js  c++  java
  • 关于com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“java.lang.RuntimeException: Could not generate DH keypair”

    最近一个项目因为SQLServer从2008升级到了2016导致出现“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“java.lang.RuntimeException: Could not generate DH keypair””的错误;
    项目环境:jdk1.6 + tomcat7

    看了很多篇关于这类问题的文章还有官方的文档(https://docs.microsoft.com/zh-cn/sql/connect/jdbc/connecting-with-ssl-encryption?view=sql-server-2016 ),但都解决不了;
    首先,我是怀疑是因为升级了SQLServer,所以可能是驱动包版本的问题,但后来我用同样的驱动包和环境在其他机器缺并没有发生同样的错误,所以排除了驱动包的问题;
    然后,根据错误提示“java.lang.RuntimeException: Could not generate DH keypair”的问题找到了文章 https://blog.csdn.net/cw_hello1/article/details/51740893
    按照该文所说在jre的ext路径中添加了 bcprov-ext-jdk15on-1.54.jar和bcprov-jdk15on-1.54.jar 两个依赖 并修改了java.security中的策略,随后重启tomcat发现虽然“Could not generate DH keypair”错误解决了,但却出现了新的错误“Unsupported curveId: 29”,大致上可以得知添加两个依赖这个操作确实是解决了生成“DH keypair”的问题,但是生成的“DH keypair”并不能得到支持;
    到这里基本上可以确认是jdk的问题,然后我又到Q群里资讯了一些熟悉SQLServer的大神们,得知JDK1.6确实是存在这个问题,而这个问题在JDK1.7得到了修复;但这时我很疑惑,因为我用同样的驱动包和1.6环境在其他机器却并没有发现这个问题;但现在回想可能是虽然同样是1.6但小版本号不同,我用的那个1.6可能刚好解决了这个问题,而生产坏境中那个1.6版本并没有解决;
    因此我跟项目总监说明了情况,并准许我将生产环境中1.6JDK升级到了1.8,最后问题才得以解决

  • 相关阅读:
    我容易么?
    意译和音译
    请教博客园高手:msn老是掉线的问题
    超市里最安全的食品
    两类人
    只要牵了手,就请不要轻易的说分手
    Palm Treo 650 .VS. Dopod P800
    强烈推荐一健康食品:紫红薯
    年底三篇
    奶奶,走好!
  • 原文地址:https://www.cnblogs.com/tandi19960505/p/11068806.html
Copyright © 2011-2022 走看看