#java #sql-server-2008 #bouncycastle #fips #sqljdbc
#java #sql-server-2008 #bouncycastle #fips #sqljdbc
Вопрос:
Я нахожусь в Java 8 v102, используя sqljdbc42.jar и jtds-1.3.1.jar для подключения к SQL Server 2008 в режиме FIPS. Я настроил свою Java с https://www.bouncycastle.org/fips/BCUserGuide.pdf , но я получаю приведенную ниже ошибку. Как я могу это решить?
com.microsoft.sqlserver.jdbc.SQLServerException: драйверу не удалось установить безопасное соединение с SQL Server с помощью шифрования Secure Sockets Layer (SSL). Ошибка: «Режим FIPS: могут использоваться только доверенные управляющие SunJSSE».
Комментарии:
1. Вы решили это, можете ли вы поделиться своими знаниями, пожалуйста
2. У меня тоже возникла эта проблема. Настройка как таковая . Я думаю, это означает, что какая-то реализация TrustManager, которую использует BC, не расширяет SunJSSE или что-то в этом роде?
3. Я думаю, что это та же / похожая проблема, но я не знаю, как это исправить.
4. Я знаю, что прошло много времени, но, пожалуйста, прокомментируйте, смог ли кто-нибудь из вас решить эту проблему.
Ответ №1:
Режим FIPS не допускает реализацию TrustManager / KeyManager из сторонних источников, поддерживаются только SunJSSE KeyManager / TrustManager, которые являются экземплярами X509TrustManagerImpl/X509KeyManagerImpl
.
Я преодолел это в postgres jdbc, где это позволило мне передать пользовательский sslFactory, поэтому я передал org.postgresql.ssl.DefaultJavaSSLFactory
, что, в свою очередь, не позволит postgres отправлять собственную реализацию KeyManager и делегирует процесс Java для предоставления правильного экземпляра KeyManager.
В других драйверах jdbc вам может потребоваться найти ту же конфигурацию, чтобы преодолеть это.