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

Oracle WebLogic Server 12c에서 SSL 구성하기: 단계별 완벽 가이드

이 글에서는 Oracle® WebLogic® Server 12c(12.1.2) 환경에서 SSL을 구성하는 방법을 단계별로 자세히 설명합니다.

개요

오늘날 데이터와 정보의 보안은 가장 중요한 관심사 중 하나입니다. 수많은 애플리케이션이 네트워크를 통한 안전한 통신을 위해 SSL(Secure Socket Layer) 프로토콜을 사용하고 있으며, 실제로 SSL은 현재 가장 널리 사용되는 네트워크 통신 프로토콜 중 하나입니다.

SSL을 사용하도록 구성된 WebLogic Server는 두 애플리케이션 간의 연결에 대해 신원 인증(identity authentication)전송 중 데이터 암호화(in-transit data encryption)를 모두 제공합니다. 따라서 SSL을 통해 상호 작용하는 두 애플리케이션은 다음과 같은 보안 연결상의 이점을 얻게 됩니다:

  • 각자 보유한 SSL 인증서를 사용해 서로의 신원을 검증합니다.
  • 애플리케이션 간에 주고받는 데이터를 암호화하여 전송합니다.

SSL 연결 요청 및 응답 메커니즘은 인증에 필요한 추가 데이터를 처리하는 계산 오버헤드와 복잡한 암호화 알고리즘 연산을 수반합니다. 따라서 고도로 보안된 네트워크 인프라 내에서 개발 모드(development mode)로 운영되는 WebLogic 서버 인스턴스에는 SSL을 적용하지 않는 경우가 많습니다. 반면 운영 모드(production mode)로 실행되는 서버 인스턴스에는 SSL 구성이 필수적이라고 할 수 있습니다.

구성 시연

이 글에서는 사전 설치된 WebLogic Server의 MYPROD_DOMAIN 도메인 내 MYPROD_AdminServer, 관리 서버(Managed Server) 인스턴스, 그리고 Node Manager에 SSL을 구성하는 절차를 다룹니다.

이를 위해 새로 서명한 인증서를 저장할 신규 ID 키스토어(identity keystore)와 신뢰 키스토어(trust keystore)를 생성합니다. 구성이 완료되면 WebLogic 관리 서버, 모든 관리 서버 인스턴스, Node Manager가 커스텀 키스토어 기반의 SSL 프로토콜로 통신하게 됩니다.

다음 단계에 따라 기존 WebLogic 서버 인스턴스에 SSL을 구성합니다:

1단계: ID 키스토어 생성

myprodserver.mydomain.local 서버에서 ID 키스토어 MYPRODIdentity.jks를 생성하려면 다음 절차를 수행합니다:

(a) WebLogic 애플리케이션 소유 계정(예: oracle)으로 WebLogic Server Linux® 서버 셸에 로그인한 뒤, 아래 명령으로 새 폴더 <middleware_home>/user_projects/domains/<domain_home>/keystores를 생성합니다:

[oracle@myprodserver]$ mkdir -p /u01/Middleware/user_projects/domains/MYPROD_DOMAIN/keystores

(b) MYPROD_DOMAIN 환경을 설정하고 새 키스토어를 생성합니다:

[oracle@myprodserver]$ cd /u01/Middleware/user_projects/domains/MYPROD_DOMAIN/bin
[oracle@myprodserver]$ . ./setDomainEnv.sh
[oracle@myprodserver]$ cd keystores
[oracle@myprodserver]$ keytool -genkeypair -alias mywlsprodcert -keyalg RSA -keysize 1024 -dname "CN=*.mydomain.local,OU=<Organization>,O=<Company>,L=<City>,S=<State>,C=<US>" -keystore MYPRODIdentity.jks
Enter keystore password: <Type a new keyStorePass>
Re-enter new password: <Re-type the keyStorePass>
Enter key password for <mywlsprodcert> (RETURN if same as keystore password): <ENTER>

2단계: CSR 생성

MYPRODIdentity.jks를 사용하여 새로운 CSR(Certificate Signing Request, 인증서 서명 요청)을 생성하려면 다음 절차를 수행합니다:

(a) keytool 유틸리티로 CSR을 생성합니다:

[oracle@myprodserver]$ keytool -certreq -v -alias prodcert -file MYWLSPRODCert.csr -keystore MYPRODIdentity.jks
Enter keystore password: <KeyStorePass>
Certification request stored in file <MYWLSPRODCert.csr>

(b) 새로 생성한 CSR을 인증 기관(CA, Certificate Authority)에 제출합니다. CA가 CSR에 서명하면 디지털 인증서와 개인 키를 발급해 줍니다.

참고: 이 글에서는 WebLogic에 기본 포함된 데모 CA(CertGenCA.der)로 인증서에 서명합니다. 이 자체 서명 기능은 WebLogic Server에서 제공하는 것으로, 데모 목적으로만 사용해야 합니다. 실제 운영 환경에서는 반드시 조직이 지정한 신뢰할 수 있는 CA로 서버 인증서에 서명받아야 합니다.

3단계: CSR 자체 서명

WebLogic 데모 CA(CertGenCA.der)를 사용해 CSR에 자체 서명하고, 이를 새로 생성한 ID 키스토어에 가져오려면 다음 절차를 수행합니다:

(a) 아래 명령으로 인증서에 자체 서명합니다:

[oracle@myprodserver]$ java utils.CertGen -keyfile MYPRODCertPrivateKey -keyfilepass password -certfile mywlsprodcert -cn "*.my.local"
Generating a certificate with wildcard *.domain.local and key strength 1024
/u01/Middlewaree/wlserver_12.1/server/lib/CertGenCA.der file and key from /u01/Middlewaree/wlserver_12.1/server/lib/CertGenCAKey.der file
[oracle@myprodserver]$

(b) 새로 생성한 서버 인증서와 개인 키를 앞서 만든 키스토어에 가져옵니다:

[oracle@myprodserver]$ java utils.ImportPrivateKey -keystore MYPRODIdentity.jks -keyfile MYPRODCertPrivateKey.pem -keyfilepass <password> -certfile MYPRODCert.pem -storepass <keyStorePass> -alias mywlsprodcert

4단계: 신뢰 키스토어 생성

myprodserver.mydomain.local 머신에 커스텀 신뢰 키스토어를 생성하려면 다음 절차를 수행합니다:

(a) 표준 Java 신뢰 저장소를 복사하여 MYPRODTrust.jks 키스토어를 생성합니다:

[oracle@myprodserver]$ cp /u01/java/jre/lib/security/cacerts 
/u01/Middleware/user_projects/domains/MYPROD_DOMAIN/keystores/MYPRODTrust.jks

(b) 기본 cacerts 비밀번호(changeit)를 원하는 새 비밀번호로 변경합니다:

[oracle@myprodserver]$ keytool -storepasswd -keystore MYPRODTrust.jks
Enter keystore password: <defaultKeyStorePass>
New keystore password: <NewKeyStorePass>
Re-enter new keystore password: <Re-type NewKeyStorePass>

(c) 새로 생성한 자체 서명 인증서를 신뢰 키스토어에 가져옵니다:

[oracle@myprodserver]$ keytool -import -v -trustcacerts -alias rootCA -file /u01/Middleware/wlserver_12.1/server/lib/CertGenCA.der -keystore MYPRODTrust.jks

5단계: 도메인 내 모든 서버로 SSL 인증서 복사

SSL 인증서를 특정 서버 이름이 아닌 와일드카드(*) 기반으로 발급했기 때문에, MYPROD_DOMAIN의 모든 서버가 동일한 인증서를 사용할 수 있습니다.

따라서 앞서 생성한 키스토어 디렉터리인 /u01/Middleware/user_projects/domains/MYPROD_DOMAIN/keystoresMYPROD_DOMAIN이 공유하는 모든 WebLogic 서버에 복사합니다.

6단계: WebLogic Node Manager 구성

새로 생성한 SSL 인증서를 사용하도록 WebLogic Node Manager를 구성하려면 다음 절차를 수행합니다:

(a) $WL_HOME/common/nodemanager/nodemanager.properties 파일에서 아래 변수들을 업데이트합니다:

KeyStores=CustomIdentityAndCustomTrust
CustomIdentityKeyStoreFileName=/u01/Middleware/user_projects/domains/MYPROD_DOMAIN/keystores/MYPRODIdentity.jks
CustomIdentityKeyStorePassPhrase=<NewKeyStorePass>
CustomIdentityAlias=mywlsprodcert
CustomIdentityPrivateKeyPassPhrase=<PrivateKeyPassword>

(b) Node Manager를 종료한 후 다시 시작합니다.

7단계: WebLogic 관리 서버(Admin Server) 구성

새로 만든 커스텀 키스토어와 인증서를 SSL 연결에 사용하도록 WebLogic 관리 서버를 구성하려면 다음 절차를 수행합니다:

(a) WebLogic 관리자 계정으로 WebLogic Server 콘솔에 로그인합니다.

(b) Home 페이지에서 Domain Configurations → Environments 아래의 Servers를 클릭합니다. 아래 스크린샷을 참고하세요:

Oracle WebLogic Server 12c에서 SSL 구성하기: 단계별 완벽 가이드

(c) Summary of Servers 페이지에서 AdminServer (admin)를 클릭합니다:

Oracle WebLogic Server 12c에서 SSL 구성하기: 단계별 완벽 가이드

(d) 화면 좌측 상단의 Change Center → View changes and restarts에서 Lock & Edit을 클릭하여 키스토어 설정을 변경할 수 있는 편집 모드로 전환합니다.

(e) Settings for AdminServerConfiguration에서 keystores 탭을 클릭한 후 change를 클릭합니다. 아래 이미지처럼 SSL 연결에 새로 생성한 커스텀 키스토어를 사용하도록 관리 서버 설정을 변경합니다:

Oracle WebLogic Server 12c에서 SSL 구성하기: 단계별 완벽 가이드 Oracle WebLogic Server 12c에서 SSL 구성하기: 단계별 완벽 가이드

(f) Keystores 드롭다운 목록에서 Custom Identity and Custom Trust를 선택하고 변경 사항을 저장합니다:

Oracle WebLogic Server 12c에서 SSL 구성하기: 단계별 완벽 가이드

(g) Custom Identity Keystore 입력란에 ./keystores/MYPRODIdentity.jks를 입력하고, 키스토어 비밀번호를 설정한 후 저장합니다.

(h) Custom Trust Keystore 입력란에 ./keystores/MYPRODTrust.jks를 입력하고, 신뢰 키스토어 비밀번호를 설정한 후 저장합니다.

(i) Configuration 상위 탭 아래의 SSL 탭을 열고 다음 항목들을 업데이트합니다:
(i) Private Key Alias 값을 mywlsprodcert로 입력합니다.
(ii) Private Key Passphrase에 개인 키 비밀번호를 입력합니다.
(iii) Advanced 메뉴에서 Hostname Verification 값을 드롭다운 목록에서 Custom Hostname Verifier로 변경합니다. 아래 이미지를 참고하세요:

Oracle WebLogic Server 12c에서 SSL 구성하기: 단계별 완벽 가이드

(iv) Custom Hostname Verifier 값으로 weblogic.security.utils.SSLWLSWildcardHostnameVerifier를 입력합니다. 모든 서버에 하나의 와일드카드 인증서(CN=*.mydomain.local)를 사용하기 때문에 이 설정이 필요합니다.
(v) 변경 사항을 저장합니다.

(j) Configuration → General 탭으로 이동하여 아래 이미지처럼 SSL Listen Port Enabled 옵션의 체크박스를 선택합니다:

Oracle WebLogic Server 12c에서 SSL 구성하기: 단계별 완벽 가이드

(k) WebLogic 관리 서버의 기본 SSL 포트는 7002이며, 다른 포트로도 SSL 서비스를 구성할 수 있습니다. 여기서는 데모를 위해 기본값 7002를 그대로 사용합니다. 아래 이미지처럼 SSL Listen Port7002로 설정하고 저장합니다:

Oracle WebLogic Server 12c에서 SSL 구성하기: 단계별 완벽 가이드

8단계: WebLogic 관리 서버(Managed Servers) 구성

모든 WebLogic 관리 서버가 새로 만든 커스텀 키스토어와 인증서를 SSL 연결에 사용하도록 하려면 7단계의 (a)~(k) 과정을 각 관리 서버마다 반복 수행합니다. 이때 각 관리 서버마다 서로 다른 SSL 포트를 지정해야 합니다. 예를 들어 ManagedServer01: SSL 포트 9001, ManagedServer02: SSL 포트 9002, ManagedServer03: SSL 포트 9003과 같이 순차적으로 할당하면 됩니다.

9단계: 구성 파일에 변경 사항 적용

화면 좌측 상단 메뉴에서 Release Configuration을 클릭하여 모든 변경 사항을 WebLogic 구성 파일에 적용합니다.

10단계: WebLogic 재시작

WebLogic 관리 서버와 모든 관리 서버를 Node Manager와 함께 재시작합니다.

결론

이 글에서는 WebLogic Server에 SSL 보안 프로토콜을 구성하여 웹사이트가 민감한 정보를 암호화된 형태로 안전하게 전송할 수 있도록 하는 전체 절차를 살펴보았습니다. SSL 인증서와 RSA 데이터 보안 암호화 메커니즘을 활용하면 사용자는 데이터와 정보를 안전하게 교환하고 처리할 수 있습니다.

이 문서를 통해 관리 서버와 관리 대상 서버 모두에 SSL을 활성화했으므로, 데이터와 WebLogic 서버를 사이버 공격 및 데이터 유출로부터 안전하게 보호할 수 있습니다.

궁금한 점이나 의견이 있다면 피드백 탭을 이용해 남겨 주세요. 또한 Sales Chat을 클릭해 지금 바로 상담을 시작할 수도 있습니다.