HTTP 환경에서 서비스를 제공하는건 여러모로 불안하다. 단순한 Packet sniffing에도 데이터가 탈취되니 말이다. 이렇게 말하지만 이 사이트 자체도 https를 사용하지 않으니 할말은 없다.
그럼에도 불구하고 회사를 통해 제공되는 서비스는 안전함을 우선해야 한다. 그렇기 때문에 HTTPS 방식으로 서비스를 제공해야하고. 개별 장비에 대한 인증서 생성을 위해서는 Certification 생성을 위해서는 CSR과 KEY 파일을 생성해야 한다. 한 도메인에 대한 생성은 아래 명령을 이용하면 간단히 만들 수 있다.
openssl req -newkey rsa:2048 -nodes -out your_domain_co_kr.csr -keyout your_domain_co_kr.key \ -subj "/C=KR/ST=Seoul/L=Seoul/O=Riot Games Inc./OU=Dev/CN=your.domain.co.kr"
주의할 점은 도메인 이름이 넘 길면 안된다. 아마 64글자까지만 지원하는 것으로 기억한다.
메인 도메인을 포함해 개발(dev) 및 QA(qa) 환경들에 대한 복수 도메인에 대한 발급하는 경우에는 설정 파일을 이용하는 방법을 사용한다. 왜 사용자들이 접하는 도메인도 아닌데 굳이 https를 사용하는지에 대해서는 다른 의견이 있을 수 있다. 하지만실제 환경과 동일한 조건에서 개발과 테스트가 이뤄지는 것이 합당하다. 환경이 차이가 존재하면 이를 맞춰주기 위한 차이가 존재한다. 이런 티끌들이 모여 결국에는 장애를 일으키니까.
복수 도메인에 대한 CSR 및 KEY 파일의 생성은 아래 명령을 참조한다.
openssl req -newkey rsa:2048 -nodes -out your_domain_co_kr.csr -keyout your_domain_co_kr.key \ -config your_domain_co_kr.cfg
your_domain_co_kr.cfg 파일의 내용은 아래와 같이 설정하면 된다.
[req] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext distinguished_name = dn [ dn ] C=KR ST=Seoul L=Seoul O=Riot Games Inc. OU=Dev emailAddress=owner@domain.co.kr CN = your.domain.co.kr [ req_ext ] subjectAltName = @alt_names [ alt_names ] DNS.1 = your.domain.co.kr DNS.2 = dev.your.domain.co.kr
여러 도메인을 사용할거면 차라리 와이드카드(*)를 쓰는게 더 좋지 않을까에 대한 의견도 있을 수 있다. 개인적으로 처음에 사용할 각 도메인을 모두 열거해야한다는 지침을 들었을 때 마찬가지 생각을 가졌다. 당장은 이 도메인만을 사용하지만 앞으로 더 많은 도메인들을 만들어 쓸 계획이었으니까.
하지만 곰곰히 생각해보니 보안적인 측면에서 이 방식이 주는 해로움이 더 크다고 생각했다. 만약 와일드카드 인증서가 탈취된 경우에 해커가 이걸 이용해서 다른 도메인을 만들어 피싱사이트를 만들 수 있으니 말이다. 번거롭더라도 사용할만큼 만들어서 쓰는게 올바른 방법인 것 같다.
그럼에도 불구하고 굳이 와이드카드 방식으로 사용하고 싶다면 CN = *.your.domain.co.kr로 설정하면 된다.
보안이라는건 보안 담당자에게 중요한게 아니라 믿고 써주는 사용자들을 지켜주는 것이니까 말이다.