我在Java 8 v102中,使用sqljdbc42.jar和jtds-1.3.1.jar以FIPS模式连接到SQL Server 2008。我配置了我的Java与https://www.bouncycastle.org/fips/BCUserGuide.pdf,但我得到下面的错误。我该如何解决这个问题?
com.microsoft.sqlserver.jdbc。SQLServerException:驱动程序不能建立通过SSL (secure Sockets Layer)加密与SQL Server建立安全连接. 错误:"FIPS模式:只能使用SunJSSE trustmanager "。
FIPS模式不允许从第三方源实现TrustManager/KeyManager,只支持SunJSSE KeyManager/TrustManager,它们是X509TrustManagerImpl/X509KeyManagerImpl
的实例。
我在postgres jdbc中克服了这个问题,它允许我通过自定义sslFactory,所以我通过了org.postgresql.ssl.DefaultJavaSSLFactory
,这反过来会阻止postgres发送它自己的KeyManager实现,并将该过程委托给Java来提供正确的KeyManager实例。
在其他jdbc驱动程序中,您可能需要找到相同的配置来克服这个问题。