
얼마 전 하위도메인 열두 개를 운영하는 곳에서 와일드카드SSL을 사야 하느냐는 질문을 받았다. 서비스를 세어 보니 외부에 공개된 것은 네 개였고, 나머지는 내부망에서만 쓰고 있었다. 이런 경우에는 인증서가 덮어야 할 이름부터 적는 게 순서다. 하위도메인이 많다는 이유만으로 와일드카드 인증서가 필요한 건 아니다.
보호할 이름의 범위를 먼저 적는다
와일드카드SSL은 같은 기본 도메인 아래 한 단계의 하위도메인을 묶어 보호하는 인증서다. 예를 들어 블로그, 쇼핑몰, 관리자 화면이 각각 한 단계 아래에 있다면 한 장으로 묶을 수 있다. 하지만 기본 도메인 자체와 두 단계 아래의 이름은 자동으로 포함되지 않는다. 기본 도메인도 쓴다면 인증서 신청 시 그 이름을 별도로 넣었는지 확인해야 한다.
여기서 자주 헷갈리는 게 DNS 설정이다. 와일드카드 인증서를 발급받아도 새 하위도메인의 DNS 레코드나 웹서버 설정이 저절로 생기지는 않는다. 인증서는 접속한 이름을 확인하는 수단이고, 요청을 어느 서버로 보낼지는 DNS와 서버 설정이 결정한다. 인증서 한 장을 설치했다고 여러 서비스가 자동으로 연결되지는 않는다는 뜻이다.
판단할 때는 실제로 접속하는 이름을 목록으로 만든다. 기본 도메인, 한 단계 아래의 이름, 두 단계 아래의 이름을 구분하고 각 이름이 어느 서버에서 응답하는지도 적는다. 이 목록이 있어야 인증서에 빠진 이름이 있는지, 한 장을 여러 서버로 배포해야 하는지 보인다.
발급보다 갱신 경로가 중요하다
렛츠인크립트에서 와일드카드 인증서를 발급하려면 DNS를 통한 소유권 확인이 필요하다. 지정된 TXT 레코드를 DNS에 넣어 확인받는 방식이다. 웹서버 파일만 바꿔서 확인받는 절차와 달리, DNS를 수정할 권한과 갱신 방법을 먼저 확보해야 한다.
수동으로 TXT 레코드를 넣어 한 번 발급받는 것은 어렵지 않다. 문제는 다음 갱신이다. 담당자가 바뀌거나 알림을 놓치면 서비스 여러 개가 같은 날 인증서 오류를 낼 수 있다. DNS 제공업체가 API를 지원하고 발급 도구와 연동할 수 있는지, 갱신 후 웹서버가 새 인증서를 다시 읽는지까지 확인해야 자동화가 끝난다.
- DNS 변경 권한을 누가 갖고 있으며 갱신 작업을 어디서 실행하는지 기록한다.
- 자동화에 쓰는 DNS API 권한은 필요한 범위로 제한하고 접근 정보를 별도로 보관한다.
- 갱신 뒤에는 인증서 파일의 날짜만 보지 말고 실제 접속에서 제공되는 인증서의 이름과 만료일을 확인한다.
DNS 레코드가 외부에서 보이기까지 시간이 걸릴 수도 있다. 발급 도구가 너무 빨리 검증을 시도해 실패한다면 DNS 반영 시간을 확인하고 재시도 간격을 조정한다. 서버를 옮길 때는 새 서버에서도 갱신 작업과 DNS 권한이 이어지는지 확인해야 한다.
무료 인증서로 충분한 구간이 많다
와일드카드SSL을 유료 상품으로 먼저 비교할 필요는 없다. 무료로 발급할 수 있는 선택지가 있고, 비용보다 DNS 자동화와 운영 방식이 더 큰 차이를 만든다. 공개 서비스가 두세 개이고 이름도 거의 바뀌지 않는다면 각 서비스에 개별 인증서를 두는 편이 단순할 수 있다. 반대로 짧은 주기로 하위도메인이 늘고 같은 운영팀이 관리한다면 와일드카드가 편하다.
여러 서버에서 인증서 한 장을 공유할 때는 배포 방식도 비용에 넣어야 한다. 개인키를 서버마다 복사하면 한 곳의 침해가 다른 서비스에도 영향을 준다. 한 서버에서 TLS 접속을 받고 뒤쪽 서비스로 요청을 보내는 구성이라면 키를 두는 곳을 줄일 수 있지만, 그 서버의 장애 대응까지 함께 설계해야 한다. 어느 쪽이든 인증서 파일의 접근 권한과 배포 기록은 남겨 두는 게 좋다.
트래픽이 크다고 와일드카드 인증서가 필요한 것도 아니다. 인증서 종류는 접속 이름의 범위와 관리 방식으로 고른다. 서버 사양이나 대역폭 문제를 해결해 주지는 않는다. 요금제를 비교한다면 인증서 가격에 앞서 실제 하위도메인 수, DNS 자동화 가능 여부, 키 배포에 드는 작업 시간을 따져보는 편이 정확하다.
적용한 뒤에는 접속 경로별로 확인한다
설치가 끝나면 대표 하위도메인 하나만 열어 보고 끝내기 쉽다. 실제로는 기본 도메인과 각 서비스 이름을 따로 확인해야 한다. 브라우저에서 정상으로 보여도 다른 서버나 로드밸런서가 이전 인증서를 내보내는 경우가 있다. 서비스마다 접속 지점이 다르면 그 지점별로 확인한다.
- 접속한 이름이 인증서에 포함되는지 확인한다. 기본 도메인은 별도 항목으로 점검한다.
- 인증서 체인이 빠지지 않았는지, 실제 접속에서 보이는 만료일이 예상한 값인지 확인한다.
- 자동 갱신을 시험하고 갱신 실패 알림이 담당자에게 도착하는지 확인한다.
- 서버 이전이나 DNS 제공업체 변경 시 TXT 레코드 생성 권한과 갱신 작업을 다시 점검한다.
인증서 오류가 나면 먼저 접속한 이름과 실제로 응답한 서버를 확인한다. 그다음 그 서버가 내보내는 인증서의 이름과 날짜를 보면 원인을 좁히기 쉽다. 와일드카드SSL은 하위도메인이 많을 때 관리할 인증서 수를 줄여 주지만, 갱신과 키 배포까지 묶어서 운영할 수 있을 때 제값을 한다. 저는 발급 버튼보다 다음 갱신이 사람 손을 거치지 않고 끝나는지부터 확인한다.
