SSL 웹 사이트 - 주체 대체 이름, Subject Alternative Name (SAN)

요즘들어 웹 사이트를 운영하는 관리자분이나 호스팅 업계에 계신 분들을 만나뵈면, 정통부에서 발표한 웹 서버 보안 의무화에 관련된 이야기들을 종종 나눌 수 있습니다. 이를 어길 경우, 과태료가 꽤 많다는 이야기와 함께 말입니다.

이와 관련된 기사입니다.

웹 사이트 보안 서버 내달부터 구축 의무화

보안서버 인증서 '가격 전쟁'

'이달부터 벌금?' 보안 서버 구축 의무화

고객 정보를 다루는 웹 사이트에서 HTTPS를 사용하여 연결에 대한 보안을 강화한다는 소식은 환영할만한 이야기며, 이를 통해 보안의 강화를 꾀할 수 있음을 예상할 수 있습니다.

그러나, 여기서 관리자들은, 특히 하나의 웹 서버에서 여러 사이트를 운영하는 관리자 분들은 걱정 거리가 생기게 됩니다.

HTTP 통신, 다시 말해 TCP 포트 80번으로 교신하는 방식에서는 호스트 헤더(Host Header)를 통해, 하나의 포트로 여러 웹 사이트를 운영할 수 있게 해줍니다. 호스트 헤더를 이용하게 되면, HTTP 헤더내 들어있는 호스트 이름을 웹 서버가 파악하여, 이를 서비스하고 있는 사이트로 요청을 보내주는 것이 가능해집니다. Microsoft내 관련 도움말

생각해봐야 할 문제는 HTTPS 통신(SSL, 포트 443)은 호스트 헤더를 지원하지 않는다는 것입니다. 링크해 놓았던 도움말에도 SSL 교신시에는 호스트 헤더를 지원하지 않는다는 구문이 포함되어져 있습니다. (암호화되어져 있기 때문에, 헤더내 호스트 헤더를 파악할 수 없습니다. 그러므로 당연히 해당 사이트로 리디렉션할 수도 없게 된다는 의미입니다.)

그럼 결국 HTTPS를 운영하기 위해서는 IP 1개당 인증서 1개가 필요하다는 생각이 먼저 드실 것입니다. 기본적인 방향은 맞습니다. 다만 문제는 하나의 웹 서버에서 여러 사이트를 운영한다거나, 호스팅을 하고 있는 업계에선 하나의 웹 서버에서 여러 웹 사이트를 운영하고 있고, 이 경우 상당히 곤욕스러워집니다. (웹 사이트 한개당 하나의 IP를 부여하는 자체가 어렵기 때문에)

해결책은 몇가지가 제시됩니다. 첫번째가 와일드 카드 인증서(Wildcard Server Certificate)입니다.
HTTPS를 위해서는 서버 사이드에 서버 인증을 위한 공인 인증서가 필요합니다. 클라이언트가 서버에 접근하여, 서버의 인증서에 대한 유효성 여부를 검사할 때, 몇가지 체크하는 사항이 있습니다.

1. 접속하는 URL과 서버 인증서의 주체 이름(Subject Name)이 일치하느냐..
2. 서버 인증서의 유효 기간이 남아있는가..
3. 서버 인증서의 발급 기관을 신뢰하고 있는가..

1번에서 체크하는 서버 인증서의 주체 이름과 클라이언트가 접속하는 URL을 비교하는 작업에서 와일드 카드 인증서를 사용하실 수 있습니다.
예를 들어 서비스하고자 하는 웹 사이트가 (www.angel.com)이라면.. 인증서의 주체 이름에도 www.angel.com이 명시되게 됩니다. 원칙적으론 1 URL : 1 인증서가 되어야 하나, 와일드 카드가 포함된 주체 이름을 가진 인증서(예를 들어 *.angel.com)을 사용하게 되면, www.angel.com, ftp.angel.com, mail.angel.com에 대한 이름이 모두 와일드 카드 인증서에 의해 HTTPS 사이트로 처리될 수 있습니다.

역시나 와일드 카드 인증서에 대한 한계도 존재합니다. 하부 도메인이 틀린 경우엔, 활용할 수 없다는 문제점이 있습니다. 이 경우에 많은 관리자분들께서 답을 찾지 못하시고 계십니다. KISA에서 제공하고 있는 보안 서버 구축 가이드에도 부록에 멀티 도메인 SSL 인증서라고 포함되어져 있는 내용입니다.

정확한 기술적 정의로는 Subject Alternative Name - RFC2459를 활용하는 것입니다. RFC2459의 4.2.1.7을 살펴보면 Subject Alternative Name을 이용하여 인증서의 Subject를 추가로 사용할 수 있다고 되어져 있습니다.

Windows Server에서 테스트를 위해 Subject Alternative Name 속성을 가지고 있는 인증서를 배포할 수 있습니다.

How to add a Subject Alternative Name to a secure LDAP certificate

실제 상용 인증 기관에서도 해당 속성을 사용하여 다중 도메인용 인증서를 배포하고 있는 업체도 있습니다. IIS 5.0에서는 해당 기능을 사용할 수 없다는 문제점이 있습니다만, Windows Server 2003내 IIS 6.0과 Apache 웹 서버에서 모두 사용할 수 있는 방법입니다. Subject Alternative Name을 지원하는 인증서를 사용하시게 되면, 1개의 IP에서 여러 웹 사이트를 HTTPS로 운영하기 위한 기본적인 인증서 문제 해결의 한 방법으로 활용할 수 있습니다.

IIS 6.0의 경우, 인증서뿐만 아니라, 개개별 SSL 웹 사이트 별로 호스트 헤더를 인식시키기 위해 SecureBinding 메타베이스 속성내에 호스트 헤더를 포함하도록 추가해줘야 합니다.

SSL 호스트 헤더의 서버 바인딩 구성 (IIS 6.0)

이러한 Subject Alternative Name을 사용하게 되면 KISA의 보안 서버 구축 가이드에서 제시한데로 몇가지 문제점이 있습니다.

기술과 비용, 효율성등 많은 부분들 고려해서 모든 기업체들은 솔루션을 선택하게 됩니다. 1 IP에 1 인증서를 매핑할 수 있는 환경이라면, 이에 맞는 최적의 솔루션, 하나의 도메인내 상위 호스트 이름만 변경할 수 있는 와일드 카드 인증서, 마지막으로 다중의 URL을 가진 하나의 웹 서버의 경우 현재의 인증서 관련 기술을 사용하면서 비용대비 가장 적절한 SSL 구축을 위해서라면 Subject Alternative Name을 가진 인증서도 괜찮아 보입니다.