카테고리 없음

lg webfax 호스트모듈 mysql 8 접속 오류

김모작자 2025. 6. 19. 10:30

FaxClientNC 모듈에 MySQL 5.7 사용 할 때는 문제 없었던거 같은데 새로 장만한 서버에 MySQL 8.0 이랑 연결 하려고 하니 아래처럼 에러가 나더라.. (결론은 TLS 옵션만 바꿔주면 되는데, 나는 서버 밖에 건들 수 있는게 없어서..)

더보기

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at sun.reflect.GeneratedConstructorAccessor8.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167) at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:378) at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:205) at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1433) at com.mysql.cj.NativeSession.connect(NativeSession.java:133) at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:842) ... 17 more

Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) at sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:171) at sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:103) at sun.security.ssl.TransportContext.kickstart(TransportContext.java:227) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:433) at com.mysql.cj.protocol.ExportControlled.performTlsHandshake(ExportControlled.java:347) at com.mysql.cj.protocol.StandardSocketFactory.performTlsHandshake(StandardSocketFactory.java:191) at com.mysql.cj.protocol.a.NativeSocketConnection.performTlsHandshake(NativeSocketConnection.java:101) at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:369)

물론 같은 서버에 있는 다른 모듈은 잘만 접속되길래 ChatGPT 한테 물어보니 SSL 관련된 이슈로 나처럼 내부 접속만 해서 꼭 SSL 이 필요치 않는 경우 접속 문자열에 UseSSL=false 옵션만 주는걸로충분하다고 하더라.

그런데! 해당 모듈을 Decompiler 로 돌려보니 MYSQL 일 때는 아래처럼 직접 문자열을 조립하다보니 뒤에다 쓸 방법이 없었다.

더보기
 } else if (i_cfg.dbType.equalsIgnoreCase("MYSQL")) {
        dbID = i_cfg.dbID;
        dbPW = i_cfg.dbPassword;
        driver = "com.mysql.jdbc.Driver";
        dbInfo = "jdbc:mysql://" + i_cfg.dbDBServer + ":" + i_cfg.dbPort + "/" + i_cfg.dbDBName + "?autoReconnect=true&maxReconnects=50";
        } ....
...
 else if (i_cfg.dbType.equalsIgnoreCase("COMMON")) {
        dbID = i_cfg.dbId;
        dbPW = i_cfg.dbPass;
        driver = i_cfg.dbDriver;
        dbInfo = i_cfg.dbUrl;
      }

그래서 차선책으로 Type=COMMON 으로 대체해서 사용하려고 Fax.cfg 를 아래와 같이 수정 후 모듈 시작 하니 sql/faxclient_COMMON.xml 이 없다고 나오면서 실행을 못 하더라..

.....
# 기존에 사용중인 Type 과 db.xxx 속성은 주석 처리 해준다

Type=COMMON
db.url=jdbc:mysql://xx.xx.xx.xx:3306/xxxxxdb?autoReconnect=true&autoReconnectForPools=true&useSSL=false&allowPublicKeyRetrieval=true
db.driver=com.mysql.jdbc.Driver
db.user=xxxx
db.pass=xxxx
......

해서 해당 파일을 MySQL 용 xml 파일을 복사해서 쓰면 되는데..
1) jar 파일을 풀어 sql 폴더에  있는 faxclient_MYSQL 파일을 faxclient_COMMON 으로 복사한 후
2) 아래 명령으로 jar 파일에 추가해서 실행했다!   

참고로 아래 FaxClientNC.jar 파일은 lib 폴더에 있음..
lib 폴더 밑에 임시로 sql 폴더를 만들거나 해서 faxclient_COMMON.xml 을 jar 파일 내 sql 폴더에 들어가도록 해야한다.

# jar 파일에 xml 파일 추가
jar uf FaxClientNC.jar sql/faxclient_COMMON.xml

 

 

반응형