반응형
새로운 리눅스 서버에서 서비스를 하기 위해 시스템을 구성하다보면 오라클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



/dev/random vs /dev/urandom 바로가기

반응형

+ Recent posts