최근 Tomcat6을 Apache와 함께 사용하고 dev 환경을 설정하려고 시도하는 오래된 Java 코드베이스를 계승했습니다. 프론트 엔드 JSP 로그온 화면을 통해 DriverManager.getConnection()을 호출 할 때 ORA-12649 코드 ("알 수없는 암호화 또는 데이터 무결성 알고리즘")가 표시됩니다.tomcat6 sqlnet 암호화 실패
이 이해하지 않는 여러 가지이다 : 오라클 11gR2를 실행하는 대상 DB에 (slqnet.ora의 설정을 통해)
우리가 구현 한- 암호화, 그리고 생산 버전과 함께 작동 동일한 코드베이스의; 또한 들어오는 sqldeveloper 연결과 함께 작동합니다. 기본적으로 db 측의 암호화 구현에는 아무런 문제가 없었습니다.
- 개발 코드베이스가 프로덕션 코드베이스와 정확히 동일합니다 (현재 시점에서)
- 개발 tomcat6 설치가 프로덕션과 동일한 버전입니다 설치
- 내가 암호화를 구현하지 않는 다른 DB에있는 커넥터를 가리키는 경우는 승인은 Oracle 설명서 및 포럼, tomcat6 문서 (특히 복잡한 방법을 통해 폭 넓은 독서 후 유효한 사용자 이름과 암호
에 성공 CLASSPATH 변수를 처리합니다.) 오우 메가 비어 있습니다.
내 직감은 tomcat 설치 lib 폴더에 ojdbc6.jar 파일이 있어도 dev 시스템에 tomcat6 설치가 올바른 jar 파일을 참조하지 않는다는 점입니다. 오라클에 따르면 ojdbc6.jar를 사용 가능하게하는 것은 톰 클라이언트에서 이러한 유형의 암호화를 구현할 때만 작동해야합니다. 이것이 바로이 Tomcat 응용 프로그램의 구현 방법입니다.
암호화가 클라이언트 측에서 구현되는 방법은 다음과 같습니다.
여기...
prop.setProperty(
OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL,
AnoServices.ANO_REQUIRED);
prop.setProperty(
OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES,
"(" + AnoServices.ENCRYPTION_AES256 + "," +
AnoServices.ENCRYPTION_3DES168 + "," +
AnoServices.ENCRYPTION_AES192 + ")");
// require the use of the SHA1 algorithm for data integrity checking
prop.setProperty(
OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVEL,
AnoServices.ANO_REQUIRED);
prop.setProperty(
OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPES,
"(" + AnoServices.CHECKSUM_SHA1 + ")");
...
여러 클라이언트와 함께 작동하도록 알려진 DB 측의 SQLNET.ORA 파일에서 해당 라인과 같습니다 :
SQLNET.ENCRYPTION_SERVER=required
SQLNET.ENCRYPTION_TYPES_SERVER=(AES256,AES192,3DES168)
sqlnet.crypto_checksum_server=required
sqlnet.crypto_checksum_types_server=(SHA1)
이되는 DB의 URL입니다이 오류없이 컴파일 응용 프로그램 디렉토리에 톰캣의 web.xml 파일에 사용 :
이jdbc:oracle:thin:@<my_db_name>:1521:<my_db_sid>
내의 context.xml 파일을 구현하는 '정보 allowLinking'기능, 확실하지 않은 그 차이를 만드는하지만 내가 '표준이 아닌 경우 그 세부 사항을 포함 해. 이를 통해 tomcat의 <webapps>
폴더에 내 레포의 적절한 위치를 가리키는 심볼릭 링크를 제공 할 수 있습니다. Tomcat이 해당 위치의 페이지를 제공하기 때문에 디렉토리 권한은 정상입니다.
<Context path="/<my_app_name>" allowLinking="true">