SAS 9.4 에서 인증서를 교체할 때는 세 가지를 같이 본다. 하나만 바꾸면 화면은 열리는데 일부 기능만 실패하는 상태가 된다.
| 대상 | 역할 |
|---|---|
| SAS Web Server | 외부 HTTPS 종단 |
| SAS 신뢰 저장소 | SAS 내부 Java 서비스가 신뢰하는 CA 모음 |
| 서비스 구성 | 변경된 인증서를 참조하도록 재구성 |
교체 범위도 먼저 정한다. 서버 인증서만 바꾸는지, 중간 CA 까지 바뀌는지, 루트 CA 가 바뀌는지에 따라 작업량이 다르다. 루트 CA 가 바뀌면 신뢰 저장소를 반드시 다시 구성해야 한다.
받아야 할 파일은 서버 인증서, 개인키, 중간 CA, 루트 CA 다. 체인이 맞는지 먼저 확인한다.
openssl verify -CAfile root.crt -untrusted intermediate.crt server.crt
openssl x509 -in server.crt -noout -subject -dates -ext subjectAltName
CN 과 SAN 이 실제 접속 호스트명과 일치해야 한다.
작업 전에 기존 인증서 파일과 신뢰 저장소를 백업한다.
SAS Web Server 는 Apache 기반이다. 설정과 인증서는 구성 디렉터리 아래에 있다.
<SASConfig>/Lev1/Web/WebServer/conf
체인 파일은 중간 CA 와 루트 CA 를 합쳐 만든다.
cat intermediate.crt root.crt > server-ca.crt
SSLCertificateFile conf/server.crt
SSLCertificateKeyFile conf/server.key
SSLCertificateChainFile conf/server-ca.crt
개인키 파일은 SAS 서비스 계정만 읽을 수 있게 권한을 좁힌다.
SAS 내부 Java 서비스는 별도의 신뢰 저장소를 쓴다. 새 CA 를 추가한다.
keytool -importcert \
-alias new_root_ca \
-keystore <cacerts-path> \
-file root.crt
중간 CA 도 같은 방식으로 추가한다. 신뢰 저장소의 정확한 경로는 설치 구성에 따라 다르므로 환경에서 확인한다 (확인 필요).
수동으로 파일만 바꾸는 것보다 SAS Deployment Manager 의 인증서·신뢰 저장소 관련 작업을 쓰는 편이 안전하다. 구성 파일에 흩어진 참조를 함께 갱신해 주기 때문이다.
cd <SASHome>/SASDeploymentManager/9.4
./sasdm.sh
의존 순서를 지켜 올린다.
1. SAS Metadata Server
2. SAS Object Spawner
3. SAS Web Server
4. 나머지 SAS 서비스
<SASConfig>/Lev1/sas.servers restart
openssl s_client -connect <sas-host>:443 -showcerts </dev/null
로그에서 다음 키워드를 찾는다. 나오면 신뢰 체인이 완성되지 않은 것이다.
SSLHandshakeException
PKIX path building failed
<SASConfig>/Lev1/Web/Logs
<SASConfig>/Lev1/SASMeta/MetadataServer/Logs
| 증상 | 원인 |
|---|---|
| 로그인 페이지가 열리지 않는다 | 체인 파일 누락 |
| SAS Studio 접속 오류 | 신뢰 저장소 미갱신 |
| Object Spawner 오류 | 개인키 파일 권한 |
| 간헐적 SSL 오류 | 중간 CA 누락 |