네트워크·보안
시놀로지 인증서는 갱신됐는데 한 사이트만 만료로 뜨는 Web Station 문제
DSM에서 Let's Encrypt 인증서가 갱신됐는데도 Web Station 사이트 하나가 옛 인증서를 내보낸 원인(보관함과 배포 사본의 불일치)과 수동 재배포, 재발 대비 방법입니다.
모니터링 도구에 certificate has expired가 떴습니다. NAS에서 돌리는 서브도메인 사이트 하나의 인증서가 만료됐다는 겁니다. 이상했습니다. 시놀로지 DSM은 Let's Encrypt 인증서를 알아서 갱신하고, 다른 사이트들은 멀쩡했거든요.
DSM 제어판의 인증서 화면에서 보면 이 사이트 인증서도 9월 7일에 갱신돼 있었고 만료일은 12월 7일이었습니다. 그런데 브라우저로 접속하면 7월 26일에 만료된 인증서가 나왔습니다. 갱신은 됐는데 웹 서버가 옛 파일을 계속 읽고 있던 상황입니다.
먼저 실제로 나가는 인증서를 확인합니다
DSM 화면에 뜨는 날짜는 "보관된 인증서"의 날짜입니다. 방문자가 받는 인증서는 따로 확인해야 합니다.
echo | openssl s_client -connect sub.example.com:443 -servername sub.example.com 2>/dev/null \
| openssl x509 -noout -dates -subject
-servername을 빠뜨리면 NAS가 기본 인증서를 내줘서 엉뚱한 결과가 나옵니다. 한 IP로 여러 사이트를 돌리는 NAS에서는 꼭 넣어야 합니다.
인증서가 두 군데에 있습니다
DSM 7에서 인증서 파일은 두 단계로 나뉘어 있습니다.
| 위치 | 역할 | 이번 상태 |
|---|---|---|
/usr/syno/etc/certificate/_archive/<ID>/ | DSM이 보관·갱신하는 원본 | 9월 7일 갱신본(12월 7일 만료) |
/usr/syno/etc/www/certificate/WebStation_<UUID>/ | Web Station 포털별로 배포된 사본. nginx가 실제로 읽음 | 5월 29일 배포본(7월 26일 만료) |
DSM은 인증서를 갱신하면 보관함을 바꾼 뒤, 그 인증서가 연결된 서비스마다 사본을 다시 배포합니다. 이번에는 보관함 갱신도, 서비스 연결도 정상이었는데 이 한 서비스에만 재배포가 안 됐습니다. 두 폴더 모두 root만 읽을 수 있어서 일반 계정으로는 확인이 안 됩니다.
nginx가 어느 파일을 읽는지는 설정에서 찾습니다.
grep -rn "ssl_certificate" /usr/local/etc/nginx/sites-enabled/ | grep WebStation
수동으로 다시 배포했습니다
보관함의 갱신본을 배포 폴더에 덮어쓰는 방식으로 고쳤습니다. 이 폴더에는 RSA와 ECC 두 종류가 있어서 파일이 네 개(각각 fullchain, privkey)입니다.
# root 권한 필요. 먼저 기존 파일 백업
cp -a /usr/syno/etc/www/certificate/WebStation_<UUID> ~/cert_backup_$(date +%Y%m%d)/
# 보관함 갱신본을 배포 폴더의 같은 이름 파일에 덮어쓰기 (RSA, ECC 각각)
cp /usr/syno/etc/certificate/_archive/<ID>/fullchain.pem .../WebStation_<UUID>/<같은 이름>
cp /usr/syno/etc/certificate/_archive/<ID>/privkey.pem .../WebStation_<UUID>/<같은 이름>
# 문법 확인 후 재시작 없이 설정만 다시 읽기
nginx -t && nginx -s reload
nginx -t를 먼저 돌리는 이유는, 인증서와 키 짝이 안 맞으면 다시 읽기에 실패하면서 다른 사이트까지 영향을 줄 수 있어서입니다. nginx -s reload는 HUP 신호를 보내 연결을 끊지 않고 설정만 새로 읽게 합니다.
GUI로 하는 방법도 있습니다. DSM 제어판 → 보안 → 인증서 → 설정에서 해당 서비스에 인증서를 다시 지정하면 재배포가 일어납니다. 저는 파일을 직접 덮어쓰는 쪽으로 했습니다.
결과와 남은 것
덮어쓴 뒤에는 새 인증서가 나갑니다. 오늘(9월 27일) openssl s_client로 다시 확인한 값입니다.
notBefore=Sep 7 19:04:29 2026 GMT
notAfter=Dec 6 19:04:28 2026 GMT
왜 이 서비스만 재배포가 빠졌는지는 끝내 확인하지 못했습니다. 그래서 두 가지를 해 뒀습니다.
- 다음 갱신(12월) 뒤에 같은 확인을 다시 합니다. 또 빠지면 같은 절차로 덮어씁니다.
- NAS의 사이트들을 매시간 점검하는 스크립트에 "인증서 남은 날짜"와 "인증서 이름이 도메인과 맞는지"를 넣었습니다. 갱신 누락이 생기면 만료 전에 알 수 있습니다.
정리하면, DSM에서 인증서가 갱신됐다고 방문자에게도 새 인증서가 나간다는 보장은 없습니다. 갱신 뒤에는 openssl s_client로 실제로 나가는 인증서를 한 번 확인하는 게 확실합니다.
확인한 공식 자료
구현 과정에서 판단 기준을 교차 확인한 공식 문서입니다. 글의 사례와 결론은 운영자가 직접 겪은 작업을 바탕으로 작성했습니다.