제12장 통신 암호화

내용 목차

12.1. 개요
12.2. 환경설정
12.2.1. 개인 키 및 인증서 생성
12.2.2. 개인 키 및 인증서 위치 설정
12.2.3. 클라이언트 설정

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

12.1. 개요

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

12.2. 환경설정

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

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

12.2.1. 개인 키 및 인증서 생성

개인 키 및 인증서 생성은 X.509 v3(PKI ITU-T 표준)을 따른다. 개인 키 및 인증서를 생성하는 방법은 다음과 같다.

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

$ ./tb_cert_manager
Enter WALLET_HOME: $TB_HOME/config/tb_wallet
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, 1024 bit long modulus
....++++++
..........++++++
e is 65537 (0x10001)


=== 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 []: gdhong@tibero.com

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


=== STEP 3. Generate certificate ===

입력을 마치면 전자지갑 저장소($TB_HOME/config/tb_wallet/)에 다음과 같은 파일이 생성된다.

공개 키 기반 개인 키: [$TB_SID].key
인증서 생성 요청서: [$TB_SID].csr
인증서: [$TB_SID].crt      

12.2.2. 개인 키 및 인증서 위치 설정

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

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

<$TB_SID.tip>

CERTIFICATE_FILE=$TB_HOME/config/tb_wallet/[$TB_SID].crt
PRIVKEY_FILE=$TB_HOME/config/tb_wallet/[$TB_SID].key

12.2.3. 클라이언트 설정

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

[예 12.3] 클라이언트 설정

<tbdsn.tbr>

TB=(
    (INSTANCE=(HOST=서버 IP)
              (PORT=서버 포트)
              (DB_NAME=데이터베이스 이름)
              (USE_SSL=Y)
    )
)      

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

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