워크플로우 통신의 보안을 강화하려면 Oracle® 애플리케이션 서버에 SSL(Secure Sockets Layer)을 구성할 수 있습니다.
개요
이 글에서는 SSL이 활성화된 SMTP/IMAP 서버에 워크플로우 Java 메일러(Workflow Java Mailer)를 연결하는 테스트 케이스를 설정하기 위한 명령어와 도구 사용 예시를 소개합니다.
아래의 세부 단계를 따라 워크플로우 Java 메일러를 구성해 보세요.
1단계: 포트 개방
네트워크 담당 팀과 협의하여 Concurrent Manager 티어에서 다음 포트를 개방합니다: SMTP/SSL 포트: 465, IMAP/SSL 포트: 993.
Protocol: SMTP/SSL Port: 465
Protocol: IMAP/SSL Port: 993
PROD [<user>@servername ~]$ telnet <SMTP Server Name> 465
Trying XXXXXX...
Connected to SMTP Server Name.
Escape character is '^]'
PROD [<user>@servername ~]$ telnet <IMAP Server Name> 993
Trying XXXXXX...
Connected to IMAP Server Name.
Escape character is '^]'
2단계: 이메일 서버에서 인증서 내보내기
DBA이자 블로거인 Goraknath Rathod가 2018년 게시글에서 이 단계를 다음과 같이 설명했습니다.
"보안 통신 채널을 구축하려면 이메일 서버의 인증서(인증 기관에서 발급)를 Concurrent Manager 티어에 가져와야(import) 합니다."
"신뢰할 수 있는 인증 기관(예: Verisign)이 발급한 이메일 서버 인증서는 시스템 관리자에게 요청하거나, 아래 절차를 통해 직접 다운로드할 수 있습니다."
Rathod가 안내하는 절차는 다음과 같습니다.
A. 웹 브라우저에서 https://host.domain:port 형식의 메인 웹 페이지에 접속합니다.
B. 페이지 하단의 자물쇠 아이콘을 더블클릭하여 인증서를 확인합니다. 자물쇠 아이콘이 없는 경우 상단 도구 모음에서 파일 → 속성 → 인증서를 선택합니다.
C. 인증 경로(Certification Path) 탭을 선택한 후:
a. 첫 번째 항목을 클릭하고 인증서 보기를 선택합니다. 이것이 루트 인증 기관(CA)의 인증서입니다.
b. 자세히(Details) 탭에서 파일로 복사(Copy to File)를 클릭하여 내보내기 마법사를 실행합니다.
c. 다음을 클릭해 계속 진행합니다.
d. Base-64 encoded X.509 (.CER)를 선택하고 다음을 클릭합니다.
e. 파일 이름으로 ca1을 입력하고 확인을 클릭해 인증서를 내보냅니다.
f. 인증 경로 탭의 각 항목마다 위 과정을 반복하되, 파일 이름을 매번 1씩 증가시킵니다(예: ca2, ca3).
3단계: 키스토어(Keystore) 생성
Rathod는 이어서 "Concurrent Manager 티어에 키스토어를 생성하고, 그곳에 인증서를 가져옵니다"라고 설명합니다.
다음은 Rathod의 절차에 샘플 코드를 추가한 것입니다.
A. 기본 위치(예: /home/applmgr)에 인증서를 보관할 키스토어를 생성합니다.
B. FTP 도구를 사용해 인증서를 Concurrent Manager 티어에 업로드합니다.
[<user>@servername ~]$ ls -lrt ca1.cer ca2.cer ca3.cer ca4.cer
-rw-rw-r-- 1 applmgr applmgr 1472 Jul 17 00:40 ca1.cer
-rw-rw-r-- 1 applmgr applmgr 1646 Jul 17 00:41 ca2.cer
-rw-rw-r-- 1 applmgr applmgr 1756 Jul 17 00:41 ca3.cer
-rw-rw-r-- 1 applmgr applmgr 2800 Jul 17 00:41 ca4.cer
[<user>@servername ~]$ pwd
/home/applmgr
[<user>@servername ~]$ keytool -genkey -alias -keystore -storetype JKS
Enter keystore password:
Re-enter new password:
What is your first and last name?
What is the name of your organizational unit?
What is the name of your organization?
What is the name of your city or locality?
What is the name of your state or province?
What is the two-letter country code for this unit?
Is CN=XXX, OU=XXX, O=XXX, L=XXX, ST=XXX, C=XXX correct?
[no]: yes
Enter key password for <-keystore>
(RETURN if same as keystore password):
Re-enter new password: changeit
C. 생성된 키스토어에 인증서를 가져옵니다.
[<user>@servername ~]$ ls -la .keystore
-rw-rw-r-- 1 applmgr applmgr 1332 Jul 17 01:04 .keystore
keytool -import -alias my_cert1 -file ca1.cer -keystore .keystore -storepass <keystore password>
keytool -import -alias my_cert2 -file ca2.cer -keystore .keystore -storepass <keystore password>
keytool -import -alias my_cert3 -file ca3.cer -keystore .keystore -storepass <keystore password>
keytool -import -alias my_cert4 -file ca4.cer -keystore .keystore -storepass <keystore password>
D. 인증서가 정상적으로 등록되었는지 확인합니다.
[<user>@servername~]$ keytool -list -keystore .keystore
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 5 entries
my_cert4, Jul 17, 2020, trustedCertEntry,
Certificate fingerprint (SHA1): 1E:5D:EA:8C:79:E1:89:85:1B:31:62:16:1F:D9:27:6A:56:FD:AB:37
my_cert3, Jul 17, 2020, trustedCertEntry,
Certificate fingerprint (SHA1): 27:AC:93:69:FA:F2:52:07:BB:26:27:CE:FA:CC:BE:4E:F9:C3:19:B8
my_cert2, Jul 17, 2020, trustedCertEntry,
Certificate fingerprint (SHA1): 34:0B:28:80:F4:46:FC:C0:4E:59:ED:33:F5:2B:3D:08:D6:24:29:64
my_cert1, Jul 17, 2020, trustedCertEntry,
Certificate fingerprint (SHA1): 27:96:BA:E6:3F:18:01:E2:77:26:1B:A0:D7:77:70:02:8F:20:EE:E4
-keystore, Jul 17, 2020, PrivateKeyEntry,
Certificate fingerprint (SHA1): E0:DA:C8:95:4F:FB:A2:82:40:9E:6A:02:A0:82:0F:35:5E:B1:FE:08
E. MAILER_SSL_TRUSTSTORE 파라미터를 설정합니다(예: /home/applmgr/.keystore).
SQL *Plus에서 실행:
[<user>@servername~]$ sqlplus apps/XXXXX @$FND_TOP/sql/afsvcpup.sql
10006 Workflow Notification Mailer DEACTIVATED_SYST WF_MAILER
GSM
Enter Component Id: 10006
10243 SSL Trust store NONE NONE N
N
Enter the Comp Param Id to update: 10243
You have selected parameter: SSL Trust store
Current value of parameter: NONE
Enter a value for the parameter: /home/applmgr/.keystore
4단계: IMAPSSL/SMTPSSL 연동을 위한 메일러 구성
Rathod가 안내하는 절차는 다음과 같습니다.
탐색 경로: OAM → System Administrator → Workflow Manager → Notification Mailer 링크에 로그인합니다.
A. Outbound Server Name을 입력하고 Outbound SSL Enable 체크박스를 활성화합니다.
B. Inbound Server Name, Username, Password, Reply-to Address를 입력하고 Inbound SSL Enable 체크박스를 활성화합니다.
5단계: R12 인스턴스 디버깅 절차
Rathod가 설명하는 디버깅 절차는 다음과 같습니다.
A. SMTP 테스트
$AFJVAPRG -classpath $AF_CLASSPATH -Dprotocol=smtp \
-Ddbcfile=$FND_SECURE/TEST.dbc \
-Dport=465 -Dssl=Y \
-Dtruststore=/home/applmgr/.keystore \
-Dserver=email.yourdomain.com \
-Daccount=youremail@yourdomain.com -Dpassword=xxxxx \
-Dconnect_timeout=120 -Ddebug=Y \
-DdebugMailSession=Y oracle.apps.fnd.wf.mailer.Mailer
B. IMAP 테스트
$AFJVAPRG -classpath $AF_CLASSPATH -Dprotocol=imap \
-Ddbcfile=$FND_SECURE/TEST.dbc \
-Dport=993 -Dssl=Y \
-Dtruststore=/home/applmgr/.keystore \
-Dserver=email.yourdomain.com \
-Daccount=youremail@yourdomain.com -Dpassword=xxxxx\
-Dconnect_timeout=120 -Ddebug=Y \
-DdebugMailSession=Y oracle.apps.fnd.wf.mailer.Mailer
6단계: 메일러 인증 설정
R12.1.3 버전부터 Oracle Workflow Notification Mailer는 SMTP 인증을 지원하므로, SMTP 인증이 구성된 엔터프라이즈 SMTP 서버와 함께 Notification Mailer를 사용할 수 있습니다.
2014년 Oracle R12.1.3 기능 발표 자료에 따르면:
"SMTP 인증은 발신자가 메일 서버에 자신을 식별함으로써 인증을 수행하는 방식입니다. 인증에 성공하면 메일 서버는 해당 발신자의 이메일 전송을 허용합니다. SMTP 인증을 활용하면 정상적인 사용자의 메일 릴레이는 허용하면서, 스패머와 같은 비인가 사용자에게는 릴레이 서비스를 차단할 수 있습니다."
"현재 Oracle Workflow는 PLAIN, LOGIN, DIGEST-MD5 인증 메커니즘을 지원합니다."
7단계: 서비스 재시작
구성을 완료하려면 필요에 따라 모든 서비스를 중지한 후 다시 시작합니다.
마무리
SSL은 메시지 암호화, 무결성 검증, 인증을 제공함으로써 통신 보안을 확보합니다. 위에서 안내한 단계를 순서대로 구현하면 워크플로우 통신을 손쉽게 보호할 수 있습니다.
데이터 서비스에 대해 더 자세히 알아보세요.
피드백 탭을 통해 의견을 남기거나 질문을 보내실 수 있으며, 언제든 저희와 대화를 시작하실 수 있습니다.