반응형
새로운 리눅스 서버에서 서비스를 하기 위해 시스템을 구성하다보면 오라클11g jdbc 라이브러리를 통해 DB접근 시 아래와 같이 Connection Reset 오류가 발생할 수 있습니다.
1 | java.sql.SQLRecoverableException: IO Error: Connection reset |
원인으로는 Connection 생성시에 암호화에 사용할 40BYTE 키를 랜덤하게 생성하는데 이 랜덤키를 생성하지 못해서 발생하는 문제입니다.
Java는 리눅스에서 기본적으로 /dev/random 을 통해서 난수를 생성합니다.
이 파일이 난수를 생성하는 기반이 "서버의 장치 드라이버와 기타 소스로부터 모은 환경적 노이즈"를 가지고 난수를 생성하게 됩니다.
그래서 새 서버에서는 OS의 환경적 노이즈가 적어서 난수 생성에 문제가 생기는 겁니다.
해결방법으로는 /dev/urandom 을 대신 사용해서 난수를 생성시키는 겁니다.
방법은 2가지가 있습니다.
1. java vm 옵션을 통해 해당 java 데몬의 난수 생성 파일을 변경하는 겁니다.
1 2 3 4 5 | -Djava.security.egd=file:///dev/urandom switch or -Djava.security.egd=file:/dev/./urandom |
2. java 자체 옵션을 변경합니다.
1 2 | $JAVA_HOME/jre/lib/security/java.security |
위 파일 에서 아래 라인을 추가하거나 수정해 줍니다.
1 | securerandom.source=file:/dev/./urandom |
반응형
'java' 카테고리의 다른 글
spring secuirty - how to catch CookieTheftException (0) | 2017.10.16 |
---|---|
java - outbound 포트 방화벽 확인을 위한 port listen 소스 (1) | 2017.09.26 |
spring boot - @Scheduled Test (2) | 2017.09.19 |
netty - IoBuffer vs ChannelBuffer (0) | 2017.09.18 |
java - spring - MultipartFile transferTo FileNotFoundException (2) | 2017.09.06 |
java - telnet 대신 포트 방화벽 확인하기 port check (2) | 2017.09.05 |
spring boot context path (0) | 2017.08.31 |
java - html img 태그 파싱 및 변환 (2) | 2017.08.30 |