Невозможно подключиться к MS SQL Server 2008 с помощью JAR из командной строки, но успешно работает в Eclipse

Я пытаюсь подключиться к SQL Server 2008 с помощью sqljdbc4.jar и могу успешно подключиться с помощью Eclipse.

Но когда я экспортирую свой код как JAR и пытаюсь запустить его из командной строки, я получаю сообщение об ошибке:

verConnection.java:1323) в com.microsoft.sqlserver.jdbc.SQLServerConnection.login (SQLServerConne ction.java:991) в com.microsoft.sqlserver.jdbc.SQLServerConnection.connect (SQLServerConnection.java:827) в com.microsoft.sqlserver.jdbc.SQLServerConnection.connect (SQLServerConnection.java:827) в com.microsoft.java:827 .sqlserver.jdbc.SQLServerDriver.connect (SQLServerDriver. java: 1012) в java.sql.DriverManager.getConnection (Неизвестный источник) в java.sql.DriverManager.getConnection (Неизвестный источник) в TestDbConnection.mainction. Причина: javax.net.ssl.SSLKeyException: ошибка секретного ключа RSA на com.sun.net.ssl.internal.ssl.RSAClientKeyExchange. (Неизвестный источник) на com.sun.net.ssl .internal.ssl.ClientHandshaker.serverHelloDone (Неизвестный источник) в com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage (Неизвестный источник) в com.sun.net.ssl.internal.ssl.Handshaker.processLoop (Неизвестный Источник) на com.sun.net.ssl.internal.ssl.Hand shaker.process_record (неизвестный источник) в com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord (неизвестный источник)

    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLSer

известный источник) на com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake (Неизвестный источник) на com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake (Неизвестный источник) на com.microsoft. sqlserver.jdbc.TDSChannel.enableSSL (IOBuffer.java:1618)

    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Un

Я предоставляю внешнюю папку lib с sqljdbc4.jar в ней и запускаю свой JAR, используя java -Djava.ext.dirs=lib -jar TestDB.jar

    ... 7 more Caused by: java.security.NoSuchAlgorithmException: SunTlsRsaPremasterSecret KeyG enerator not available
    at javax.crypto.KeyGenerator.<init>(DashoA13*..)
    at javax.crypto.KeyGenerator.getInstance(DashoA13*..)
    at com.sun.net.ssl.internal.ssl.JsseJce.getKeyGenerator(Unknown Source)
    ... 17 more

Я прочитал разные посты, но ничего не вышло.

Экспорт его как SQL Server 2008 JAR после выбора опции sqljdbc4.jar решил проблему. Обычный JAR каким-то образом не смог получить доступ к папке

    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLSer
.


person Divya Motiwala    schedule 05.04.2013    source источник
comment
Нет, не хочу, но есть ли способ отключить это. Я не упоминал об этом явно нигде в коде. А пока у вас есть код для установления соединения с использованием url, uname и pwd, вот и все.   -  person Nick.McDermaid    schedule 05.04.2013
comment
Значит, вы этого не делаете: stackoverflow.com/questions/8988945/   -  person Divya Motiwala    schedule 05.04.2013
comment
Спасибо, я смог решить проблему.   -  person Nick.McDermaid    schedule 07.04.2013
comment
Вы хотите рассказать всем, как? Тогда вы сможете принять ответ для себя.   -  person Divya Motiwala    schedule 11.04.2013
comment
D: \ Eclipse \ TestDBJar> java -Djava.ext.dirs = lib -jar TestDB.jar 5 апреля 2013 г. 11:17:17 com.microsoft.sqlserver.jdbc.TDSChannel enableSSL INFO: путь java.security: C: \ Program Files \ Java \ jre6 \ lib \ security Провайдеры безопасности: [SUN версии 1.6, SunRsaSign версии 1.5, SunJSSE версии 1. 6, SunJGSS версии 1.0, SunSASL версии 1.5, XMLDSig версии 1.0, SunPCSC версии n 1.6] Информация о провайдере SSLContext: Поставщик Sun JSSE (PKCS12, SunX509 фабрики ключей / доверия, SSLv3, TLSv1) Услуги поставщика SSLContext: [SunJSSE: KeyFactory.RSA -> sun.security.rsa.RSAKeyFactory псевдонимы: [1.2.840.113549.1.1, OID.1.2.840.113549. 1.1], SunJSSE: KeyPairGenerator.RSA -> sun.security.rsa.RSAKeyPairGenerator
псевдонимы: [1.2.840.113549.1.1, OID.1.2.840.113549.1.1], SunJSSE: Signature.MD2withRSA -> sun.security.rsa .RSASignature $ MD2withRSA
псевдонимы: [1.2.840.113549.1.1.2, OID.1.2.840.113549.1.1.2], SunJSSE: Signature.MD5withRSA -> sun.security.rsa.RSASignature $ MD5withRSA
псевдонимы: [ 1.2.840.113549.1.1.4, OID.1.2.840.113549.1.1.4], SunJSSE: Signature.SHA1withRSA -> sun.security.rsa.RSASignature $ SHA1withRSA
псевдонимы: [1.2.840.113549.1.1.5, OID .1.2.840.113549.1.1.5, 1.3.14.3.2.29, OID.1 .3.14.3.2.29], SunJSSE: Signature.MD5andSHA1withRSA -> com.sun.net.ssl.internal.ssl.RSASignat ure, SunJSSE: KeyManagerFactory.SunX509 -> com.sun.net.ssl.internal.ssl.KeyManagerF actoryImpl $ SunX509, SunJSSE: KeyManagerFactory.NewSunX509 -> com.sun.net.ssl.internal.ssl.KeyManag erFactoryManagerImpl $ X50 SunX509 -> com.sun.net.ssl.internal.ssl.TrustMana gerFactoryImpl $ SimpleFactory, SunJSSE: TrustManagerFactory.PKIX -> com.sun.net.ssl.internal.ssl.TrustManager FactoryImpl $ PKIXFactory
псевдонимы: [SunPKIX , X509, X.509], SunJSSE: SSLContext.SSL -> com.sun.net.ssl.internal.ssl.SSLContextImpl, SunJSSE: SSLContext.SSLv3 -> com.sun.net.ssl.internal.ssl.SSLContextImpl, SunJSSE: SSLContext.TLS -> com.sun.net.ssl.internal.ssl.SSLCont extImpl, SunJSSE: SSLContext.TLSv1 -> com.sun.net.ssl.internal.ssl.SSLContextImpl, SunJSSE: SSLContext.Default -> com.sun.net.ssl.internal.ssl.DefaultSSLContextI mpl, SunJSSE: KeyStore.PKCSS -> com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore] java.ext.dirs: lib com.microsoft.sqlserver.jdbc.SQLServerException: драйвер не смог установить безопасное соединение с SQL Server с помощью Secure Шифрование Sockets Layer (SSL). Ошибка: «Ошибка секретного ключа предварительного ведущего RSA». ClientConnectionId: c0a357b6-e274-41b2-9fd a-7ef89ebdfb7a по адресу com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate (SQLServerC onnection.java:1667) по адресу com.microsoft.sqlserver.jdnnelc.jd .java: 1668)   -  person Nick.McDermaid    schedule 11.04.2013


Ответы (1)


Вы действительно хотите подключиться к SQL через SSL? Или это случайно? Потому что я предполагаю, что с сертификатами, вероятно, возникнут какие-то сложности, которых бы не существовало, если бы вы не подключались через SSL.

person Divya Motiwala    schedule 11.04.2013