본문 바로가기
Database/Oracle

[ORACLE] ORA-28040 오류 해결 : 프로토콜 불일치로 인한 인증 실패의 원인과 대책

by Papa Martino V 2025. 7. 28.
728x90

ORA-28040 오류 해결 : 프로토콜 불일치로 인한 인증 실패의 원인과 대책
[ORACLE] ORA-28040

 

ORA-28040: No matching authentication protocol

Oracle 데이터베이스에 접속 시 ORA-28040 오류가 발생하면, 이는 단순한 사용자 정보 문제라기보다는 클라이언트와 서버 간의 인증 프로토콜 불일치</strong에서 기인한 것입니다. 특히, 보안 정책 강화로 인해 서버 측에서 오래된 인증 프로토콜(TLS 1.0/1.1 등)을 비활성화하면서 클라이언트가 호환되지 않는 버전을 사용 중일 때 자주 발생합니다. 본 글에서는 이 오류가 어떤 맥락에서 발생하는지, 실무에서 접한 사례는 어떠한지, 그리고 이에 대한 체계적 해결 방안을 제시합니다.


1. ORA-28040 오류의 원인 개요

이 오류는 다음과 같은 환경에서 흔히 나타납니다:

  • Oracle 서버가 보안 프로토콜(TLS 1.2 이상)만 허용하도록 설정됨
  • 구형 Oracle 클라이언트(예: 10g, 11g)가 신규 인증 프로토콜을 지원하지 않음
  • JDBC 또는 ODBC 드라이버가 서버와의 연결 시 호환되지 않는 방식으로 인증 시도

즉, 클라이언트는 Oracle 서버가 허용하지 않는 인증 메커니즘을 사용하여 접속을 시도하고, 서버는 이를 차단하면서 ORA-28040 오류를 반환하는 것입니다.


2. 주요 원인별 정리 및 대책

오류 원인 설명 대응 방안
Oracle 클라이언트 버전 낮음 10g 또는 11g 사용 시 최신 인증 프로토콜 미지원 Oracle 12c 이상 클라이언트 또는 드라이버로 교체
JDBC 드라이버 버전 낮음 ojdbc6 이전 버전은 TLS 1.2 미지원 ojdbc8 이상으로 업그레이드
서버 설정 변경됨 SQLNET.ALLOWED_LOGON_VERSION 설정 강화 서버 또는 클라이언트 측 설정 조정 필요
TLS1.2만 허용됨 서버 보안 정책에 따라 하위 프로토콜 비활성화 클라이언트 TLS 버전 확인 및 설정 조정

3. 실무 사례: 공공기관의 JDBC 접속 오류

배경: 한 공공기관의 업무 시스템이 Oracle 19c DB로 마이그레이션된 이후, Java 기반 웹 애플리케이션에서 ORA-28040 오류가 발생함.

원인 분석:

  • 해당 애플리케이션은 ojdbc6 드라이버 사용
  • Oracle 19c는 기본적으로 TLS 1.2 이상만 허용

해결 방법:

  1. ojdbc8.jar로 교체
  2. sqlnet.ora에서 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 12 설정 확인
  3. Java 8 이상에서 TLS 1.2가 기본 활성화되어 있으므로 별도 설정 불필요

이 조치 후 접속이 정상화되었으며, 시스템 전반의 보안 수준도 강화된 상태로 유지할 수 있었습니다.


4. 주요 설정 파일 항목 점검

sqlnet.ora 예시


SQLNET.ALLOWED_LOGON_VERSION_SERVER = 12
SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 12
SQLNET.ENCRYPTION_SERVER = required
SQLNET.CRYPTO_CHECKSUM_SERVER = required

위 설정은 서버 측에서 최소 12버전의 인증 프로토콜만 허용</strong하도록 구성된 상태입니다. 클라이언트가 이를 만족하지 않으면 인증 자체가 거부되어 ORA-28040 오류가 발생합니다.


5. 각 클라이언트/드라이버별 지원 버전 요약

클라이언트/드라이버 지원 TLS 버전 추천 사용 여부
Oracle 10g Client TLS 1.0 불가 (교체 필요)
Oracle 11g Client TLS 1.0 / 일부 1.1 권장하지 않음
Oracle 12c 이상 Client TLS 1.2 사용 권장
ojdbc6.jar TLS 1.0 교체 필수
ojdbc8.jar TLS 1.2 사용 권장

6. 실전 해결 절차 요약

  1. 사용 중인 클라이언트 또는 드라이버 버전 확인
  2. sqlnet.ora 또는 listener.ora의 보안 설정 확인
  3. 최신 JDBC 드라이버로 교체
  4. 클라이언트 TLS 설정 및 Java 버전 확인
  5. 서버 보안정책에 맞춰 클라이언트 재설정

이러한 절차를 통해 대부분의 ORA-28040 오류는 해결 가능합니다. 특히 배포 자동화 또는 클라우드 환경에서는 버전 관리를 철저히 하는 것이 중요합니다.


7. 고급 팁: Java TLS 버전 명시

Java 기반 애플리케이션에서 TLS 버전을 명시적으로 설정하고자 할 경우 다음과 같이 설정할 수 있습니다.

-Dhttps.protocols=TLSv1.2

이는 JVM 레벨에서 TLS 버전을 지정하여, 일부 보안 우회 오류 또는 핸드셰이크 문제를 방지할 수 있습니다.


8. 결론

ORA-28040 오류는 단순히 “접속이 안 되는” 문제가 아니라, 기업 시스템의 보안 정책과 기술적 호환성 사이의 충돌로 인해 발생합니다. 따라서 단기적인 해결을 넘어서 드라이버 일관성 확보, TLS 정책 숙지, 서버 클라이언트 간 보안 조율이 장기적으로 필요한 요소입니다. 특히 디지털 전환이 가속화되는 환경에서, 신뢰할 수 있는 암호화 통신 기반을 유지하면서도 안정적인 시스템 운용을 위해 ORA-28040 오류는 사전에 점검하고 대비해야 할 핵심 포인트라 할 수 있습니다.


출처

  • Oracle® Database Net Services Reference 19c
  • Oracle Metalink Doc ID 2384298.1
728x90