SAP PSE (Personal Security Environment) 는 디지털 인증서를 저장 및 관리하여, SAP 시스템 간 또는 외부 시스템과의 신뢰관계를 설정할때 사용된다.
PSE 를 사용하여 SAP 내 SSL/TLS 통신을 지원하며, SSO 기능도 지원한다.
여기서는 Web Dispatcher 에서 인증서 기간 만료에 따른, PSE 인증서 갱신에 대하여 기술한다.
PSE 를 생성할때는 자체 서명 인증서(Self-signed) 또는 신뢰할 수 있는 CA 인증서를 활용하여 생성이 가능한데, 이번 케이스는 신뢰할수 있는 CA 인증서를 받아, PSE 를 신규 생성하여 교체(갱신)한다.
SAPCRYPTOLIB 는 SAP 에서 제공하는 암호화 라이브러리이다.
PSE 는 해당 라이브러리 내 sapgenpse 프로그램을 사용하여 생성할 수 있으며, SAP Software Download Center 에서 다운로드 받을 수 있다.
◼ SAP Software Download Center
-> SUPPORT PACKAGES & PATCHES
-> By Alphabetical Index (A-Z)
-> S
-> SAPCRYPTOLIB
-> COMMONCRYPTOLIB 8
-> <최신버전의 SAPCRYPTOLIB 다운로드>
다운로드 후, SAPCAR 를 사용하여 압축을 풀어주면 된다.
이 후, 환경변수 Path 에 sapgenpse 프로그램 폴더 경로를 추가하여 cmd 에서 바로 호출이 가능하고, 환경변수 SECUDIR 을 신규로 생성하여 작업 결과물이 위치할 폴더를 지정해줄 수 있다. (옵션)
Openssl 은 대칭/비대칭 암호화 프로토콜을 구현한 오픈 소스 라이브러리이다.
대표적으로 SSL 과 TLS 프로토콜을 지원하며, 가장 폭넓게 사용되는 표준 라이브러리라고 볼 수 있다.
Openssl 공식 홈페이지 또는 Github 에서 설치파일을 다운로드 받을 수 있다.
설치 후, 설치 디렉토리의 bin 경로를 환경변수 Path 에 추가해주면, cmd 에서 바로 openssl 명령어 호출이 가능하다. (옵션)
우선 보안팀 또는 인증서 관리 부서로 부터 전달받은 인증서 를 확인한다.
보통 다음과 같은 형태로 인증서 세트를 전달 받게 된다.
3번 형태로 인증서를 전달 받았다면은 아래 3번 스탭으로 바로 진행하면 된다.
2번 형태로 인증서를 전달 받았다면, chain 인증서에 Root CA 인증서가 포함되어있는지 확인 후, Root 인증서가 포함되어 있다면, 바로 pfx 로 변환하면 되기에 2-2 스탭으로 진행하면 된다.
전달 받은 Chain 인증서에 Root 인증서가 포함되어있는지는 다음 openssl 명령어를 통해서 확인할 수 있다. (윈도우 기준, cmd 수행)
openssl x509 -in <Chain 인증서> -noout -issuer -subject
1번 형태로 인증서를 전달 받았다면 중간에 Root 인증서를 Chain 인증서로 추가하여 pfx 로 변환해야하므로, 2-1 스탭으로 진행하면 된다.
Chain 인증서가 없을 경우, 상황에 따라서 Root 인증서를 추가해야 할 수 있다.
기존의 인증서에 Root 인증서가 있는지 확인하여, 필요한 Root 인증서가 어떤건지 확인해 다운로드 받는다.
기존 인증서를 확인하는 방법은, 크롬 기준으로 해당 서비스 URL 에 접속한 다음, F12 -> Security -> View Certificate 의 세부정보 -> 인증서 계층의 최상단 인증서를 확인하면 된다.
운영 환경에 따라 Root 인증서 외, 여러 중간 인증서가 포함되어야 한다면,
다운로드 받은 Root 인증서를 메모장으로 열어, 기존 Root 인증서 위쪽에 차례대로 붙여넣기 해주면 된다.
여기서, 원본 Root 인증서 내용은 제일 마지막에 위치해야 한다.
예를 들어, 중간 인증서1, 중간 인증서2, Root 인증서, 3개의 인증서를 하나의 Chain 인증서로 병합하기 위해서는 아래와 같이 메모장으로 인증서들을 이어 붙이면 된다.
-----BEGIN CERTIFICATE-----
(중간 인증서 1 내용)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(중간 인증서 2 내용)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Root 인증서 내용)
-----END CERTIFICATE-----
여기서 서버 인증서와 중간 인증서는 다르다. 경우에 따라 중간 인증서가 필요한곳도 있으며, 만약 중간 인증서가 따로 없다면, Root 인증서가 Chain 인증서가 된다라고 생각하면 된다.
즉, Chain 인증서는 "중간 인증서들 + Root 인증서" 라 생각하면 된다.
아래와 같이 인증서들이 준비되었다면, 이제 openssl 을 사용하여 pfx 파일로 변환이 가능하다.
윈도우 cmd 를 열어, 다음 명령어를 통해 pfx 인증서 변환을 수행한다.
openssl pkcs12 -export -out <생성될 pfx 인증서 이름> -in <서버 인증서 crt 파일> -inkey <개인 키 key 파일> -certfile <Chain 인증서 crt 파일> -passout pass:"<인증서 패스워드>"
<인증서 패스워드>는 pfx 파일을 보호하는 비밀번호이다.
<인증서 패스워드> 항목을 공란으로 두면, 비밀번호 없이도 생성할 수 있다. (보안상 권장되지는 않음)
pfx 인증서 파일이 정상적으로 생성되었다면, 다음 명령어를 통해서 해당 인증서에 포함된 정보를 확인할 수 있다.
openssl pkcs12 -info -in <pfx 인증서 파일> -nodes
해당 명령어로 pfx 인증서 파일 내부의 정보를 다음 순서로 표시한다.
모두 정상적으로 포함되어있다면, 다음 차례로 진행하면 된다.
생성된 .pfx 인증서 파일을 SAP 에 Import 하기 위해서는 PSE 파일로 변환해줘야 한다.
cmd 에서 다음 명령어로 PSE 파일 변환을 수행한다.
sapgenpse import_p12 -p <생성될 PSE 파일 이름> <.pfx 인증서 파일>
명령어를 수행하면, 총 두번 패스워드를 묻는 프롬프트가 뜬다.
1. pfx 인증서 패스워드 입력
2. 생성될 PSE 파일에 대한 비밀번호(PIN) 입력
입력 완료 후, pfx 인증서에 별다른 문제가 없다면 성공적으로 PSE 파일이 생성된다.
이제 마무리 단계이다.
기존 PSE 파일을 신규로 생성한 PSE 파일로 교체하면 된다.
이를 위해서는 OS 상에서 SAP Secure 디렉토리(SECUDIR)로 이동해야 한다.
SAP Web Dispatcher Secure 디렉토리의 기본 경로는 다음과 같다.
/usr/sap/<SID>/W<Instance number>/sec/
해당 포스트의 시나리오는 Web Dispathcer 이기에
W<Instance number>
이며, 적용 SAP 솔루션에 따라 알맞게 들어가면 된다.
sec/ 디렉토리 내부에는 기존의 여러 PSE 파일들이 존재하며, 목적에 따라 PSE 파일의 이름이 정해진다.
운영 환경에 따라 이 외에 다른 PSE 파일이 존재할 수 있는데, 우리가 교체해야할 PSE 파일은 SAPSSLS.pse 파일이다.
기존 SAPSSLS.pse 파일을 백업받은 다음,
신규 생성 PSE 파일을 Secure 디렉토리로 업로드 하고, 이름을 SAPSSLS.pse 로 변경한다.
Linux 서버라면, 권한을 600 으로 설정한다.
교체한 신규 SAPSSLS.pse 파일은 시스템상에서 자동으로 불러와 적용된다.
SAPSSLS.pse 파일을 확인하는 방법은 다음과 같다.
◼ SAP Web Dispathcer WEB 화면 (webadm 로그인)
-> SSL and Trust Configuration
-> PSE Management
-> 신규 적용된 SAPSSLS.pse 확인
만약 적용이 안되었다면 수동으로 Reload 를 해주고, Web Dispatcher 서비스를 재시작해주면 적용된다.
◼ SAP Web Dispathcer WEB 화면 (webadm 로그인)
-> Core System
-> Monitor
-> Status - running 클릭
-> Reload Configuration
◼ SAP Web Dispathcer WEB 화면 (webadm 로그인)
-> Core System
-> Monitor
-> Status - running 클릭
-> Shutdown SAP Web Dispatcher
As ABAP 시스템에서도 방법은 크게 다르지 않다.
◼ Tcode : STRUST
-> SSL server Standard
-> System Host 활성 상태 확인
-> 만약, 비활성화 상태라면, SSL server Standard 우클릭
-> Distribute
◼ Tcode : SMICM
-> 상단 메뉴 Administration
-> ICM
-> Exit Soft -> Global
ICM 은 종료되면, Dispatcher 에 의해 자동으로 재시작된다.