통신 암호화

Tibero에서 통신 암호화 기능을 사용하고 관리하기 위한 방법을 설명합니다.

개요

Tibero는 서버와 클라이언트 간에 송수신되는 메시지에 대한 기밀성을 보장하기 위하여 통신 암호화 기능을 제공합니다. Tibero의 통신 암호화 기능은 Netscape사의 SSL 통신 프로토콜을 채택하였으며 Openssl Project에서 제공하는 라이브러리를 사용하여 개발되었습니다.

환경설정

통신 암호화 기능을 사용하기 위해서는 통신 양자 간에 보안 통신을 위한 설정이 필요합니다. 서버에서는 보 안 통신에 사용될 인증서와 개인 키를 미리 소지하고 있거나 없으면 새로 생성해야 합니다. 그 다음 인증서 와 개인 키의 위치를 환경설정 파일에 지정해주게 되면 보안 통신 전용 포트가 열리게 됩니다.

클라이언트에서는 보안 통신 사용 여부를 환경설정 파일에 지정해준다. 이에 따라 일반 또는 보안 접속이 이루어지게 됩니다.

개인 키 및 인증서 생성

개인 키 및 인증서 생성은 X.509 v3(PKI ITU-T 표준)을 따른다. 개인키 및 인증서를 생성할 때 입력하는 주요 정보는 다음과 같습니다.

  • password 해당 암호는 개인키 및 인증서를 생성하는 데에만 쓰인다.

  • basename to make a certificate and a private key 개인키 및 인증서 파일의 이름을 결정하는데 쓰이며, 이외의 용도는 없습니다.

  • the number of days to make a certificate valid for 해당 기간 만료 후에는 개인키 및 인증서를 사용할 수 없기 때문에 재생성해야 하며 재생성은 온라인 중 에도 가능합니다. 세션이 새로 로그인할 때 하나의 ssl 단위가 새로 생성되기 때문에, 온라인 중에 인증서 및 개인키를 갱신할 경우 기존과 동일한 파일명으로 갱신한 후 ssl 옵션으로 세션을 새로 붙이면 됩니다.

실제 개인 키 및 인증서를 생성하는 방법은 다음과 같습니다.

[예 1] 개인 키 및 인증서의 생성

$ cd $TB_HOME/bin
$ ./tb_cert_manager

Enter new password: tibero
Repeat: tibero

Enter basename to make a certificate and a private key.(default: $TB_SID): (enter)
TB
Enter the number of days to make a certificate valid for.(default: 3650): (enter)
3650

=== STEP 1. Generate private key ===
Generating RSA private key, 2048 bit long modulus (2 primes)
......+++++
.......................................................................................................................+++++
e is 65537 (0x010001)
... Done


=== STEP 2. Generate CSR(Certificate Signing Request) ===
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: 82
State or Province Name (full name) [Some-State]: Kyounggi
Locality Name (eg, city) []: Seongnam
Organization Name (eg, company) [Internet Widgits Pty Ltd]: TIBERO
Organizational Unit Name (eg, section) []: RnD
Common Name (eg, YOUR name) []: Hong Gil Dong
Email Address []: [email protected]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: (enter)
An optional company name []: (enter)
... Done


=== STEP 3. Generate certificate ===
... Done
circle-info

참고

OpenSSL 버전에 따라 기본 프롬프트의 예시 값([AU], [XX] 등)은 다를 수 있으나, 입력 항목과 동작에는 차이가 없습니다.

circle-info

참고

OpenSSL 3.x 이상에서는 인증서 생성 시 다음과 같은 warning 메시지가 출력될 수 있으나, 이는 OpenSSL 내부 정책 변경에 따른 안내 메시지이며 생성된 인증서는 정상적으로 사용 가능합니다.

Warning: Not placing -key in cert or request since request is used Warning: No -copy_extensions given; ignoring any extensions in the request

입력을 마치면 전자지갑 저장소($TB_HOME/config/tb_wallet/)에 다음과 같은 파일이 생성됩니다. 만약 원 하는 폴더에 개인 키 및 인증서를 생성하고 싶다면 다음과 같이 -p나 -P 옵션을 통해 생성 가능합니다.

이때, 경로는 절대경로를 입력합니다.

추가로 TAC인 경우는 노드별로 각각 개인키 및 인증서를 생성할 필요가 없고 한번 만든 개인키 및 인증서 를 공유해서 사용할 수 있습니다. 혹은 -p 또는 -P 옵션으로 개인키 및 인증서를 생성하여 다중 인스턴스에서 사용 가능합니다.

개인 키 및 인증서 위치 설정

$TB_SID.tip 환경설정 파일에 CERTIFICATE_FILE과 PRIVKEY_FILE 초기화 파라미터를 추가하고 인증 서와 개인 키의 위치를 절대경로로 설정합니다.

[예 2] 개인 키 및 인증서의 위치설정

<<$TB_SID.tip>>

클라이언트 설정

tbdsn.tbr 파일에서 통신 암호화 사용을 설정하는 방법은 다음과 같습니다.

[예 3] 클라이언트 설정

<<tbdsn.tbr>>

SID 내의 USE_SSL값을 'Y'로 설정하면 통신 암호화 기능을 사용할 수 있습니다. 반면에 USE_SSL 초기화 파 라미터가 없거나 'Y' 외의 다른 값을 입력하면 일반 접속이 됩니다.

PORT는 서버 포트(LISTENER_PORT)를 명시하면 되는데 내부적으로 SSL 전용 포트(_LSNR_SSL_PORT

= LISTENER_PORT + 2)가 추가 지정되게 됩니다. 일반 포트를 통한 통신으로 일단 SSL 소켓을 생성하기 위한 핸드쉐이킹을 수행하게 되고 SSL 소켓이 생성된 이후에는 내부적으로 지정된 SSL 전용 포트를 통해 보안통신을 하게 됩니다.

Last updated