2017-12-21 3 views
0

Domino 서버에서 실행중인 Java 에이전트가 있습니다. 그것은 Domino 9.0.1 FP7 버전에서 잘 돌아가고있었습니다. MS Windows 서버는 2003 년입니다. SQL 서버 버전을 기다리고 있습니다.JDBC가 SQL Server에 SSL 연결 (Domino Java Agent FP 9)을 설정할 수 없습니다.

이제 Domino 서버를 9.0.1 FP9로 업그레이드했습니다. JVM은 1.6에서 1.8으로 증가했습니다.

내가 더 성공 (같은 오류)와 함께이 문제를 해결하기 위해 노력 6.2.2 4.2에서 JDBC 드라이버를 업그레이드 때문에 예외 오류가 JVM 또는 Java 정책에 의해 발생합니다 가정입니다.

연결 문자열 원본 (JDBC 드라이버 ... JVM/lib 디렉토리/내선/MSSQL - JDBC - 6.2.2.jre8.jar)

String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 
      String url = "jdbc:sqlserver://SERVER"; 

연결 문자열 같은 결과 (JDBC 드라이버 ... JVM/lib/ext/mssql-jdbc-6.2.2.jre8.jar) - encrypt = false가 추가되었습니다.

String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 
      String url = "jdbc:sqlserver://SERVER:1433;encrypt=false;"; 

예외

com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "SQL Server did not return a response. The connection has been closed. ClientConnectionId:e8a3a2c4-d9a9-4f82-a63f-967cae0c29f0". 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2435) 
    at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1816) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2022) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1687) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1528) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:866) 
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:569) 
    at java.sql.DriverManager.getConnection(DriverManager.java:675) 
    at java.sql.DriverManager.getConnection(DriverManager.java:258) 
    at OrderTrackOrders.NotesMain(Unknown Source) 
    at lotus.domino.AgentBase.runNotes(Unknown Source) 
    at lotus.domino.NotesThread.run(Unknown Source) 
Caused by: java.io.IOException: SQL Server did not return a response. The connection has been closed. ClientConnectionId:e8a3a2c4-d9a9-4f82-a63f-967cae0c29f0 
    at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.ensureSSLPayload(IOBuffer.java:774) 
    at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInternal(IOBuffer.java:830) 
    at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(IOBuffer.java:821) 
    at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.java:1003) 
    at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.java:991) 
    at com.ibm.jsse2.b.a(b.java:272) 
    at com.ibm.jsse2.b.a(b.java:148) 
    at com.ibm.jsse2.at.a(at.java:19) 
    at com.ibm.jsse2.at.i(at.java:627) 
    at com.ibm.jsse2.at.a(at.java:689) 
    at com.ibm.jsse2.at.startHandshake(at.java:432) 
    at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1753) 
    ... 10 more 
+1

SQL 서버의 버전은 무엇? SQL Server가 프로토콜 암호화를 강제하도록 구성 되었습니까? SQL 로그에 로그인 실패에 대한 자세한 내용이 있습니까? –

+0

MS 윈도우 2003 서버. 나는 일단 SQL 서버 버전을 발견하면 다시보고 할 것이다. O/S가 TLS 1.2를 지원하지 않는다면 어떤 옵션이 있습니까? – xpagesbeast

+0

지원되지 않는 운영 체제에서는 변경하지 않아야합니다. 강제 암호화가 SQL Server에 설정되어 있다면 아마도 암호화를 끄고 암호화없이 연결할 수 있습니다. –

답변

2

Domino FeaturePack 9 이전에는이 ​​에이전트가 FP6 및 FP8에서 정상적으로 실행되었습니다.

Windows 2003 서버에서 실행중인 MS SQL 서버에 연결할 때 FP9 java.security 파일의 TLS 보안 암호가 사용되지 않는 것과 관련된 보안 문제입니다.

이 솔루션은 java.security 파일의 변화를 확인하는 것입니다 '도미노 프로그램 디렉터리/JVM을// 보안/java.security가 lib 디렉토리'에서 3DES_EDE_CBC, DESede 을 제거하려면 다음 두 줄을 변경 :

jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768, 3DES_EDE_CBC, DESede, \ EC keySize < 224 
으로

: 도미노 프로그램 디렉터리/JVM을/lib 디렉토리/보안/자바 :

jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768, EC keySize < 224 

기능 팩 (9)는 서버에서 Domino 프로그램 디렉토리에있는 java.security 파일을 다음과 같이 변경합니다.보안

변경 한 이전 FP9에 : FP9에 업데이트

jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024 

:

jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, \ 
    DSA keySize < 1024, EC keySize < 224 

변경이 이전 FP9에 : FP9에 업데이트 jdk.jar.disabledAlgorithms=MD2, RSA keySize < 1024 : jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024

변경 3 FP9 이전 :FP9에 업데이트3210 :

jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768, 3DES_EDE_CBC, DESede, \ 
    EC keySize < 224 

변경 4 (다음 항목 NEW가 FP9에)

jdk.xml.dsig.secureValidationPolicy=\ 
disallowAlg http://www.w3.org/TR/1999/REC-xslt-19991116,\ 
disallowAlg http://www.w3.org/2001/04/xmldsig-more#rsa-md5,\ 
disallowAlg http://www.w3.org/2001/04/xmldsig-more#hmac-md5,\ 
disallowAlg http://www.w3.org/2001/04/xmldsig-more#md5,\ 
maxTransforms 5,\ 
maxReferences 30,\ 
disallowReferenceUriSchemes file http https,\ 
minKeySize RSA 1024,\ 
minKeySize DSA 1024,\ 
noDuplicateIds,\ 
noRetrievalMethodLoops 

sun.rmi.registry.registryFilter=javax.rmi.CORBA.Stub 
1

체크 아웃 java.security, (나는 지금 정확한 속성을 가져 SSL를 검색 할 수 없습니다) 장애인 암호를 언급을 시도하거나 실제이 https://blogs.msdn.microsoft.com/dataaccesstechnologies/2016/11/30/intermittent-jdbc-connectivity-issue-the-driver-could-not-establish-a-secure-connection-to-sql-server-by-using-secure-sockets-layer-ssl-encryption-error-sql-server-returned-an-incomplete-respons/

해결책은 openssl을 사용하여 1433을 테스트하고 어떤 암호화 설정을 사용해야하는지 확인하는 것입니다.

+0

감사합니다. 선로. Tom은 상세한 수정 사항을 문서화했습니다. – xpagesbeast

관련 문제