Linux

CentOS Stream 9에서 Let's Encrypt 인증서 권한 관리하기 (root:root 권한 시 읽기 문제 해결)

Ryan's Tech Note 2025. 5. 20. 10:49

CentOS Stream 9에서 Let's Encrypt 인증서 권한 관리하기

Let's Encrypt 인증서는 기본적으로 /etc/letsencrypt 디렉토리에 저장되고 root:root 소유권을 가지는데 이로 인해 웹 서버 같은 다른 앱이 인증서에 접근할 때 권한 문제가 발생한다. 이 글에서는 CentOS Stream 9 환경에서 Let's Encrypt 인증서 권한을 적절히 설정하는 방법을 알아보겠다.

 

apache, ngix, docker 등에서 모두 접근 가능하게 된다.

 

OS 버전이 맞다면 아래 스크립트를 Copy & Paste 해도 된다.

#!/bin/bash
# 1. ssl-cert 그룹 생성 (없는 경우)
sudo groupadd ssl-cert

# 2. 웹 서버 사용자를 ssl-cert 그룹에 추가
# Apache(httpd)를 사용하는 경우
sudo usermod -a -G ssl-cert apache

# Nginx를 사용하는 경우
sudo usermod -a -G ssl-cert nginx

# 3. /etc/letsencrypt 디렉토리 권한 변경
sudo chown -R root:ssl-cert /etc/letsencrypt
sudo chmod -R 750 /etc/letsencrypt

# 4. certbot 갱신 후 권한을 유지하기 위한 갱신 후크 생성
sudo mkdir -p /etc/letsencrypt/renewal-hooks/post
sudo tee /etc/letsencrypt/renewal-hooks/post/permissions.sh > /dev/null << 'EOT'
#!/bin/bash
chown -R root:ssl-cert /etc/letsencrypt
chmod -R 750 /etc/letsencrypt
EOT

# 5. 후크 스크립트에 실행 권한 부여
sudo chmod +x /etc/letsencrypt/renewal-hooks/post/permissions.sh

# 6. 변경사항 확인
ls -la /etc/letsencrypt

이 설정을 해야 권한 오류가 없어진다. (403 에러, 500 에러 등)

설정 내용 설명

  1. ssl-cert 그룹을 생성하여 인증서에 접근해야 하는 서비스 사용자들을 위한 그룹을 만든다.
  2. 웹 서버 사용자(apache 또는 nginx)를 ssl-cert 그룹에 추가한다.
  3. /etc/letsencrypt 디렉토리의 소유권을 root:ssl-cert로 변경하고, 그룹에 읽기/실행 권한을 부여한다.
  4. certbot이 인증서를 갱신할 때마다 권한을 올바르게 복원하는 후크 스크립트를 설정한다.

주의사항

  • 서버 환경에 따라 웹 서버 사용자 이름이 다를 수 있다 (예: httpd 대신 apache)
  • 변경 후 서비스를 재시작해야 새로운 권한 설정이 적용된다
  • 인증서 갱신 프로세스가 계속 정상 작동하는지 확인해야 한다

2025-05-20 보완사항

만약 SSL 인증서 관련하여 다음과 같은 오류가 발생한다면:

SSL_CTX_use_PrivateKey_file("/etc/letsencrypt/live/mydomain.com/privkey.pem") failed

아래와 같이 SELinux 보안 컨텍스트도 설정해 주는 것이 좋다:

sudo chcon -R -t httpd_sys_rw_content_t /etc/letsencrypt

Eclipse 또는 다른 IDE에서 HTTPS로 SVN 연동됨을 확인하였다.

도움이 되었다면 좋아요, 댓글, 비밀 댓글로 커피한잔 사주심 감사히 먹겠습니다.