Не удается подключиться к sqlserver с помощью поставщика Bouncy Castle Fips, используемого для запуска JSSE в FIPS mod

#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 вам может потребоваться найти ту же конфигурацию, чтобы преодолеть это.