ORA-28040: No matching authentication protocol 해결 방법

오라클 데이터베이스에서 "ORA-28040: No matching authentication protocol" 오류가 발생하는 경우는 클라이언트와 서버 간의 인증 프로토콜 불일치로 인해 발생합니다. 이 오류는 클라이언트가 서버에 접속하려 할 때, 사용하는 인증 프로토콜이 서버에서 지원되지 않거나 서버와 클라이언트 간의 인증 방식에 차이가 있을 때 나타납니다. 주로 오라클 버전이 업그레이드되거나, 클라이언트와 서버가 다른 버전을 사용할 때 발생합니다.

오류 발생 원인

  • 버전 불일치: 오라클 서버와 클라이언트의 버전 차이로 발생할 수 있습니다.
  • 인증 프로토콜 차이: 클라이언트와 서버 간에 사용하는 인증 프로토콜이 다를 때 발생합니다. 예를 들어, 서버가 최신 버전의 인증 방식만 지원하고, 클라이언트는 구버전 방식만 사용할 수 있는 경우입니다.
  • 보안 설정 문제: 최신 오라클 서버에서는 구버전 인증 프로토콜을 지원하지 않거나, 보안 연결을 요구할 수 있습니다.

 

[oracle@ora19c admin]$ oerr ora 28040
28040, 0000, "No matching authentication protocol"
// *Cause:  There was no acceptable authentication protocol for
//          either client or server.
// *Action: The administrator should set the values of the
//          SQLNET.ALLOWED_LOGON_VERSION_SERVER and
//          SQLNET.ALLOWED_LOGON_VERSION_CLIENT parameters, on both the
//          client and on the server, to values that match the minimum
//          version software supported in the system.
//          This error is also raised when the client is authenticating to
//          a user account which was created without a verifier suitable for
//          the client software version. In this situation, that account's
//          password must be reset, in order for the required verifier to
//          be generated and allow authentication to proceed successfully.

해결 방법

1. 오라클 클라이언트 업그레이드

클라이언트의 버전이 서버보다 오래된 경우, 클라이언트를 최신 버전으로 업데이트해야 합니다. 클라이언트와 서버의 버전이 일치하거나 호환 가능한 버전을 사용하는 것이 중요합니다.

  • 오라클 클라이언트 설치 파일을 다운로드하여 최신 버전으로 업데이트합니다.
  • 클라이언트가 `Oracle Instant Client`를 사용하는 경우, 최신 버전으로 업데이트합니다.
  • 서버와 클라이언트가 동일한 버전 또는 호환 가능한 버전이어야 합니다.

 

2. 서버의 인증 프로토콜 변경

클라이언트 버전이 낮아서 인증 프로토콜을 지원하지 않는 경우, 서버에서 사용되는 인증 프로토콜을 변경할 수 있습니다. 오라클 12c부터는 `SQLNET.ALLOWED_LOGON_VERSION` 파라미터를 사용하여 인증 프로토콜을 설정할 수 있습니다.

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

이 설정은 구버전 클라이언트를 허용하기 위한 설정입니다. 그러나 보안을 강화하기 위해 최신 버전의 인증 프로토콜을 사용하는 것이 권장됩니다.

 

 

3. 서버와 클라이언트의 인증 프로토콜 일치

클라이언트와 서버에서 동일한 인증 프로토콜을 사용하도록 설정해야 합니다. 오라클 12c 이상에서는 기본적으로 `SHA-1`을 사용하지만, 이전 버전의 오라클 클라이언트는 `MD5` 인증 프로토콜을 사용할 수 있습니다. 이를 해결하려면 서버와 클라이언트의 설정을 확인하고, 필요한 경우 클라이언트를 업그레이드하거나 서버의 인증 방식 설정을 변경합니다.

 

 

4. SQLNET.ORA 파일 설정

서버와 클라이언트에서 `sqlnet.ora` 파일을 수정하여 보안 설정을 조정할 수 있습니다. `SQLNET.ALLOWED_LOGON_VERSION` 파라미터를 통해 허용할 수 있는 인증 프로토콜 버전을 설정할 수 있습니다.

SQLNET.ALLOWED_LOGON_VERSION = 12

이 설정은 오라클 12c 이상의 인증 프로토콜만 허용하게 됩니다. 최신 보안 프로토콜만을 사용하도록 설정할 수 있습니다.

 

 

5. TNS 설정 점검

서버와 클라이언트 간의 네트워크 연결을 점검합니다. `tnsnames.ora` 또는 `listener.ora` 파일에서 잘못된 설정이 있을 수 있습니다. 또한 `TNS_ADMIN` 환경 변수가 제대로 설정되어 있는지 확인합니다.

 

 

6. 보안 연결 활성화

최신 오라클 서버는 SSL이나 TLS와 같은 보안 연결을 요구할 수 있습니다. 이 경우, 클라이언트에서 해당 보안 연결을 활성화해야 합니다. `sqlnet.ora` 파일에서 보안 연결을 설정하고, 클라이언트 측에서 올바르게 구성해야 합니다.

 

결론

"ORA-28040: No matching authentication protocol" 오류는 주로 클라이언트와 서버 간의 인증 프로토콜 불일치로 발생합니다. 이를 해결하려면 클라이언트와 서버의 버전을 일치시키거나, 서버에서 인증 프로토콜을 설정하여 호환성을 맞추는 방법이 있습니다. 오라클 12c 이상의 서버에서는 기본적으로 강화된 보안 인증을 요구하기 때문에, 최신 버전의 클라이언트와 서버를 사용하는 것이 가장 안전합니다.