Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

전송 계층 보안(TLS) 완벽 가이드: Oracle E-Business Suite R12에 TLS 적용하는 방법

이 글에서는 전송 계층 보안(Transport Layer Security, TLS)의 개념을 소개하고, 보안 소켓 계층(Secure Socket Layer, SSL)과의 차이점을 설명합니다. 나아가 Oracle® E-Business Suite®(EBS) R12 환경에서 TLS를 활성화하는 단계별 실무 지침까지 자세히 안내합니다.

TLS란 무엇인가?

TLS는 SSL의 업그레이드된 버전으로, 클라이언트와 서버 간의 안전한 통신 채널을 제공하는 프로토콜입니다. TLS는 대칭 암호화 알고리즘을 사용해 데이터를 암호화하기 때문에, 기존 SSL 방식보다 더 안전하고 안정적인 데이터 전송이 가능합니다.

EBS에서 TLS를 사용해야 하는 이유

EBS는 인바운드(inbound), 아웃바운드(outbound), 루프백(loopback) 연결을 통해 사용자들과 중요한 비즈니스 정보를 주고받습니다. 그만큼 데이터 도난, 데이터 변조, 메시지 위조 같은 보안 위협에 노출될 가능성도 커집니다. 하지만 EBS에서 TLS를 활성화하면 이러한 보안 문제를 효과적으로 차단할 수 있습니다.

다음 이미지는 EBS의 연결 흐름을 보여줍니다:

전송 계층 보안(TLS) 완벽 가이드: Oracle E-Business Suite R12에 TLS 적용하는 방법

이미지 출처: Enabling TLS in Oracle E-Business Suite Release 12.1 (Doc ID 376700.1)

EBS에 TLS 구현하기

EBS에서 TLS를 활성화하려면 다음 작업들을 순서대로 수행해야 합니다:

  • JDK(Java Development Kit®)와 Web Home 업그레이드
  • 필수 패치 적용
  • OpenSSL® 구성
  • .csr 파일 생성
  • 인증 기관(CA)으로부터 .csr 파일 인증서 발급
  • 인증서를 다운로드하여 EBS에 가져오기
  • 구성 파일 변경
  • AutoConfig 실행
  • URL 검증

1. JDK 및 Web Home 업그레이드

JDK를 7 이상 버전으로 업그레이드하고, Web Home은 10.1.3.5 버전으로 업그레이드합니다.

2. 필수 패치 적용

아래 패치들(또는 최신 릴리스 패치)을 설치합니다:

  • Oracle Opatch (6880880)
  • Oracle Critical Patch Updates (CPU)
  • Oracle HTTP Server (OHS) (27078378)
  • Oracle Process Manager and Notification Server (OPMN) (27208670)
  • EBS (22724663, 22922530, 22974534)

3. OpenSSL 구성

다음 명령어를 실행하여 OpenSSL 구성 파일을 생성합니다:

cd $INST_TOP/certs/Apache
mkdir WildcardCert
cd $INST_TOP/certs/Apache/WildcardCert

OpenSSL의 응답 파일로 사용할 new.cnf 파일을 아래와 같이 작성합니다:

cat new.cnf
[req]
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = ext
[dn]
CN = *. corp.aspentech.com
O = Aspen Technology Inc
OU = IT
L = Bedford
ST = Masachett
C = US
[ext]
subjectAltName = DNS:*. corp.aspentech.com

4. .csr 파일 생성

다음 단계에 따라 .csr 파일을 생성합니다:

  1. 아래 명령어를 실행하여 .csr 파일을 생성합니다:

     $ openssl req -newkey rsa:2048 -nodes -keyout server.key -sha256 -out new.csr -config new.cnf
      Generating a 2048 bit RSA private key
      ......................................+++
      ........................................................................................+++
      writing new private key to 'server.key'
    
  2. https://www.sslshopper.com/csr-decoder.html 사이트에서 .csr 파일의 내용을 검증합니다.

  3. 정보가 정확하다면 해당 .csr 파일을 인증 기관(CA)에 제출합니다.

5. CA로부터 인증서 발급받기

CA에서 서버 인증서와 인증서 체인(certificate chain) 파일을 보내줍니다.

6. 인증서 파일 다운로드 및 가져오기

CA로부터 서버 인증서와 인증서 체인 파일을 받은 후, 다음 단계를 수행합니다:

파일 다운로드

압축 파일을 데스크톱에 다운로드한 뒤 새 폴더에 압축을 해제하고, 월렛(wallet)을 생성합니다. 그러면 아래 이미지와 같이 두 개의 파일을 확인할 수 있습니다:

전송 계층 보안(TLS) 완벽 가이드: Oracle E-Business Suite R12에 TLS 적용하는 방법

a2e로 시작하는 파일이 메인(root) 파일이고, gd로 시작하는 파일은 중간(intermediate) 파일입니다.

메인 파일을 열어 root(메인) 인증서를 .crt 파일로 저장합니다. 마찬가지로 중간 파일도 열어 .crt 파일로 저장합니다. 이후 모든 파일을 서버에 업로드합니다.

Apache 디렉터리 생성

다음 명령어를 실행하여 Apache® 디렉터리를 생성합니다. Apache 디렉터리가 이미 존재한다면, 먼저 기존 디렉터리를 백업하세요.

cd $INST_TOP/certs/
mkdir Apache

월렛 디렉터리 생성

애플리케이션 노드에서 다음 명령어를 실행하여 빈 월렛 디렉터리를 생성합니다:

orapki wallet create -wallet /u01/app/TATII1/inst/apps/TATII1_nchlatiebsa01/certs/Apache -pwd WalletPasswd123 -auto_login

위 명령은 월렛 폴더(/u01/app/TATII1/inst/apps/TATII1_nchlatiebsa01/certs/Apache) 안에 ewallet.p12cwallet.sso 파일을 생성합니다.

인증서 복사

다음 명령어를 실행하여 root → server → intermediate 순서대로 인증서를 가져옵니다:

orapki wallet add -wallet /u01/app/TATII1/inst/apps/TATII1_nchlatiebsa01/certs/Apache -trusted_cert -cert  "/home/appti1/ITK1054693/root.crt" -pwd WalletPasswd123

orapki wallet add -wallet /u01/app/TATII1/inst/apps/TATII1_nchlatiebsa01/certs/Apache -trusted_cert -cert  "/home/appti1/ITK1054693/server.crt" -pwd WalletPasswd123

orapki wallet add -wallet /u01/app/TATII1/inst/apps/TATII1_nchlatiebsa01/certs/Apache -trusted_cert -cert  "/home/appti1/ITK1054693/intermediate.crt " -pwd WalletPasswd123

b64InternetCertificate.txt 생성

다음 단계에 따라 ca.crt의 내용을 b64InternetCertificate.txt에 추가합니다:

  1. 10.1.2 버전의 ORACLE_HOME/sysman/config/ 경로로 이동합니다.

  2. 아래 명령어를 실행합니다:

     Cat root.crt >> b64InternetCertificate.txt
    

OPMN으로 월렛 복사

다음 단계에 따라 월렛을 OPMN으로 복사합니다:

  1. $INST_TOP/certs/opmn 디렉터리로 이동합니다.
  2. BAK라는 이름의 새 디렉터리를 생성합니다.
  3. $INST_TOP/certs/Apache에 있는 ewallet.p12cwallet.sso 파일을 BAK로 이동시킵니다.
  4. BAK에서 $INST_TOP/certs/opmn으로 ewallet.p12cwallet.sso 파일을 복사합니다.

결과는 아래 예시와 유사해야 합니다:

[appti1@nchlatiebsa01 opmn]$ pwd
/u01/app/TATII1/inst/apps/TATII1_nchlatiebsa01/certs/opmn
[appti1@nchlatiebsa01 opmn]$ ls -ltr
drwxrwxr-x 2 appti1 appti1 4096 Nov 17 05:34 BAK
-rw------- 1 appti1 appti1 3993 Nov 20 00:05 cwallet.sso
-rw------- 1 appti1 appti1 3965 Nov 20 00:05 ewallet.p12
[appti1@nchlatiebsa01 opmn]$

cacerts 파일 업데이트

다음 단계에 따라 JDK의 cacerts 파일을 업데이트합니다:

  1. $OA_JRE_TOP/lib/security 경로로 이동합니다.

  2. 기존 cacerts 파일을 백업합니다.

  3. root.crtserver.crt 파일을 해당 디렉터리로 복사한 후, 아래 명령어로 cacerts에 쓰기 권한이 있는지 확인합니다:

    $ chmod u+w cacerts
    
  4. 아래 명령어를 실행하여 Apache의 ca.crtserver.crtcacerts에 추가합니다:

    $ keytool -import -alias ApacheRootCA -file root.crt -trustcacerts -v -keystore cacerts
    $ keytool -import -alias ApacheServer -file server.crt -trustcacerts -v -keystore cacerts
    
  5. 프롬프트가 표시되면 keystore 비밀번호를 입력합니다. 기본 비밀번호는 changeit입니다.

파라미터 업데이트

XML 파일에서 다음과 같이 TLS 관련 파라미터를 변경합니다:

전송 계층 보안(TLS) 완벽 가이드: Oracle E-Business Suite R12에 TLS 적용하는 방법

종단 간(end-to-end) TLS를 사용하는 경우에는 아래와 같이 변경합니다:

전송 계층 보안(TLS) 완벽 가이드: Oracle E-Business Suite R12에 TLS 적용하는 방법

7. 구성 파일 변경

아래 파일들을 수정합니다. (custom 폴더에 해당 파일이 없다면 custom 폴더를 생성한 후 원본 파일을 복사하세요.)

FND_TOP>/admin/template/custom/opmn_xml_1013.tmp

템플릿의 아래 줄을:

  <ssl enabled="true" wallet-file="%s_web_ssl_directory%/opmn"/>

다음과 같이 교체합니다:

 <ssl enabled="true" openssl-certfile="%s_web_ssl_directory%/Apache/opmn.crt" openssl-keyfile="%s_web_ssl_directory%/Apache/server.key" openssl-password="dummy" openssl-lib="%s_weboh_oh%/lib" ssl-versions="TLSv1.0,TLSv1.1,TLSv1.2" ssl-ciphers="AES128-SHA,AES256-SHA"/>

FND_TOP>/admin/template/custom/httpd_conf_1013.tmp

아래 섹션을:

<IfDefine SSL>
   LoadModule ossl_module libexec/mod_ossl.so
</IfDefine>

다음과 같이 수정합니다:

 <IfDefine SSL>
    #LoadModule ossl_module libexec/mod_ossl.so
    LoadModule ssl_module libexec/mod_ssl.so
 </IfDefine>

FND_TOP>/admin/template/custom/ssl_conf_1013.tmp

템플릿에서 아래 줄을 주석 처리합니다:

#SSLWallet file:%s_web_ssl_directory%/Apache

템플릿에 다음 줄들을 추가합니다:

SSLCertificateFile %s_web_ssl_directory%/Apache/server.crt
SSLCertificateKeyFile %s_web_ssl_directory%/Apache/server.key
SSLCertificateChainFile %s_web_ssl_directory%/Apache/intermediate.crt

아래 줄을:

SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM

다음과 같이 교체합니다:

SSLCipherSuite HIGH:MEDIUM:!aNULL:!RC4:!3DES:!SEED:!IDEA:!CAMELLIA:+HIGH:+MEDIUM

아래 줄을:

SSLProtocol    -all +TLSv1 +SSLv3

다음과 같이 교체합니다:

SSLProtocol all -SSLv2 -SSLv3

아래 세 개의 파일에 대해서:

  • <FND_TOP>/admin/template/custom/oc4j_properties_1013.tmp
  • <FND_TOP>/admin/template/custom/oafm_oc4j_properties_1013.tmp
  • <FND_TOP>/admin/template/custom/forms_oc4j_properties_1013.tmp

custom 디렉터리나 커스터마이징된 템플릿 파일이 아직 없다면, <FND_TOP>/admin/template의 원본 파일들을 <FND_TOP>/admin/template/custom으로 복사합니다.

그런 다음 이 커스텀 파일들에 아래 줄을 추가합니다:

 https.protocols=TLSv1,TLSv1.1,TLSv1.2

8. AutoConfig 실행

애플리케이션 티어의 $ADMIN_SCRIPTS_HOME 디렉터리에서 adautocfg.sh를 실행합니다.

9. 최종 검증 수행

URL을 검증합니다. 결과는 아래 예시와 같아야 합니다:

SQL> select home_url from icx_parameters;
HOME_URL
--------------------------------------------------------------------------------
https://ebstest1.corp.aspentech.com:4443/OA_HTML/AppsLogin

결론

EBS를 사용하면서 중요한 데이터를 전송할 계획이라면, 반드시 TLS를 활성화하여 서버와 클라이언트 간 인터넷 기반 통신이 안전하게 이루어지도록 해야 합니다. 이를 통해 통신 과정에서 데이터가 변조되거나 해킹당하는 일을 방지할 수 있습니다.

궁금한 점이나 의견이 있다면 피드백 탭을 활용해 주세요.

데이터베이스 서비스에 대해 더 자세히 알아보세요.

저희는 Oracle 제품 전문가입니다. Rackspace와 함께 Oracle 투자 가치를 극대화해 보세요.