금요일, 18 8월 2017 / Published in 클라우드 활용팁

최근 들어 구글, 모질라 등 많은 인터넷 관련 기업들이 로그인 기능을 갖춘 홈페이지는 반드시 HTTPS를 적용할 것을 권고하고 있다. 심지어 구글의 경우 홈페이지에 로그인 기능이 있음에도 HTTPS를 적용하지 않을 경우 검색 결과에서 하단으로 내리는 등의 패널티를 주고 있습니다.

HTTPS란 데이터를 주고받는 신호를 암호화하지 않는 http(일반 페이지)와 달리 인터넷 보안 표준인 TLS(Transport Layer Security) 통신 기술을 활용해 AES 128 또는 256 비트 수준으로 암호화된 HTTP를 의미한다. 홈페이지에 HTTPS를 적용하면 ’악의를 가진 제 3자(=해커)가 서버(홈페이지)와 클라이언트(사용자) 간의 통신을 중간에서 훔쳐보는 것(패킷 스니핑)’을 매우 어렵게 만들어줍니다.

오늘 필자는 Azure PaaS상의 웹 앱에 SSL 인증서를 등록하여 HTTPS 서비스를 하는 방법에 대해 소개하려고 합니다.

 

앱 서비스 SSL 인증서 생성 및 구성

Microsoft Azure Cloud에서는 GoDaddy와 파트너쉽을 맺고 앱 서비스 인증서(ASC, App Service Certificate)를 생성, 관리 및 서비스 기능을 제공하고 있습니다.

 

1단계 – Azure 포털에 로그인

우선, ASC를 생성하기 위해 Azure Portal에 접속합니다.

App Service Certificate 검색

 

2단계 – SSL 인증서 주문하기

Azure Portal의 상단 검색어 입력란에 ‘App Service Certificate’를 입력하고 검색합니다.
아래와 같은 결과 페이지에서 ‘App Service Certificate 만들기’ 버튼을 클릭합니다.

App Service Certificate 만들기

아래의 화면과 같은 첫 번째 생성단계에서는 적절한 인증서 이름과 도메인 호스트 이름을 입력하고 인증서 SKU를 선택합니다.

App Service Certificate 기본 정보 입력

S1 표준(Standard)
SSL 인증서를 root 도메인과 www 서브도메인에 대해서만 바인딩하려면 이 옵션을 선택합니다. 예를 들어 위 화면의 예에서는 devmaru.xyz와 www.devmaru.xyz가 SSL 바인딩이 가능합니다.

W1 와일드카드(Wildcard)
SSL 인증서를 root 도메인과 모든 1차 서브도메인과 바인딩하려면 이 옵션을 선택합니다.

주의 1)
ASC는 오직 1차 서브도메인에 대해서만 SSL 인증서를 지원하고 있다는 점입니다. 즉, demo.devmaru.xyz와 같은 서브도메인에 대해서는 이 옵션을 선택하면 바인딩이 가능하지만 groupware.demo.devmaru.xyz와 같이 2차 서브도메인에 대해서는 바인딩이 지원되지 않는다는 점입니다.

주의 2)
ASC는 동일한 구독 내의 다른 App Services에서만 사용할 수 있다. 물론, 구독이 동일하다면 SSL이 발급된 리소스 그룹과 다른 리소스 그룹에서 사용하는 것은 가능합니다.

적절한 인증서 SKU를 선택하고 난 후 약관에 동의하면 다음 단계로 진행할 수 있습니다.

 

3단계 – Azure Key Vault에 인증서 저장

SSL 인증서 구입 완료 후 App Service Certificate 리소스 블레이드를 열어보면 아래와 비슷한 화면을 볼 수 있을 것입니다.

ASC 인증서 속성

상태(Status) 필드를 보면 Pending Issuance(발급 보류 중)로 표기되어져 있는데 이 인증서를 사용하기 위해서는 몇 가지 추가 단계를 완료해야 합니다.
(위 그림은 발급 완료 후에 화면을 캡쳐한 관계로 ‘발급됨’으로 표기되어 있음)
참고) Key Vault는 클라우드 응용 프로그램 및 서비스에서 사용되는 암호화 키 및 비밀을 보호하는데 도움이 되는 Azure 서비스입니다.

단계 1 : 저장(Store)

ASC는 Azure Key Vault Secret을 이용하여 PFX 인증서를 안전하게 저장합니다.
인증서 속성 블레이드 내에서 인증서 구성을 클릭하고 1단계: 저장을 클릭하여 이 인증서를 Azure Key Vault에 저장합니다.
Key Vault 상태 블레이드에서 Key Vault 리포지토리를 클릭하여 이 인증서를 저장할 기존 Key Vault를 선택하거나 새 Key Vault 만들기로 동일한 구독 및 리소스 그룹 내에 새 Key Vault를 만들어야 합니다.
다만,  Azure Key Vault의 경우 이 인증서를 저장하는 데 약간의 별도 요금이 부과되는데 다행히 비용은 저렴한 편입니다. 자세한 비용에 대해서는 아래의 링크를 통해 확인해 보시기 바랍니다.

https://azure.microsoft.com/ko-kr/pricing/details/key-vault/

이 인증서를 저장할 Key Vault 리포지토리를 선택하면 저장 옵션이 표시됩니다.

인증서 저장

단계 2 : 확인(Verify)

ASC를 획득하기 위해서는 입력한 도메인에 대한 소유권 확인 과정을 거쳐야 합니다. 도메인 소유권을 확인하는 데에는 아래와 같이 3가지 방법이 제공되고 있습니다.

  1. Manual Verification
    a. HTML 웹 페이지 확인
    – ”starfield.html”이라는 HTML 파일 만들기
    – 이 파일의 내용은 도메인 확인 토큰의 이름과 정확히 같아야 합니다. (토큰은 도메인 확인 상태 블레이드에서 복사할 수 있음)
    – 이 파일을 도메인을 호스팅하는 웹 서버의 루트에서 업로드합니다. (/.well-known/pki-validation/starfield.html)
    – 확인이 끝났으면 새로 고침을 클릭하여 인증서 상태를 업데이트합니다. (확인을 완료하는 데 몇 분 정도 걸릴 수 있음)
    b. DNS TXT record 확인
    – DNS 관리자를 사용하여 @ 하위 도메인에 값이 도메인 확인 토큰과 같은 TXT 레코드를 만듭니다.
    – 확인이 끝났으면 “새로 고침”을 클릭하여 인증서 상태를 업데이트합니다.
  2. Mail Verification
    도메인 등록 대행 기관으로부터 도메인을 취득할 때 우리는 해당 도메인에 대한 관리용 email 주소를 등록 대행 기관에 제공합니다. ICANN은 인터넷상의 모든 사람이 공개적으로 액세스 할 수 있도록 자신의 데이터베이스에 이러한 전자 메일 주소를 게시합니다.
    ASC RP는 확인 메일을 이 메일 주소들로 보내는 우리는 이 블레이드에서 메일을 보낸 시간과 함께 전송된 메일 주소들의 목록을 확인할 수 있으므로 적절한 메일 주소를 확인해서 작업을 완료할 수 있습니다.
    메일로 도메인 소유권 확인
  3. App Service Verification
    이 방법은 해당 도메인이 하나 이상의 App Service 앱에 사용자 정의 도메인으로 할당되어 있는 경우 사용할 수 있습니다. 만일 지역 분산 앱이라면 하나 이상의 앱을 이 블레이드에서 확인할 수 있습니다.

 

4 단계 – App Service 앱에 인증서 할당

이 단계를 수행하기에 앞서 해당 앱에 사용자 지정 도메인이 이미 할당되어 있어야 합니다. 즉, 웹 앱 생성 후 기본 제공되는 <webappname>.azurewebsites.net 형식의 도메인에는 SSL 인증서를 할당할 수 없습니다.
Azure Portal에서 페이지 왼쪽의 App Service 옵션을 클릭하고 이 인증서를 할당하려는 앱의 이름을 클릭합니다.
설정에서 SSL 인증서를 클릭하고 App Service Certificate 가져오기를 클릭하고 방금 구입한 인증서를 선택합니다.

SSL 인증서 가져오기
할당된 App Service Certificate

SSL 바인딩 섹션에서 바인딩 추가를 클릭하고 드롭다운을 사용하여 SSL로 보안을 설정할 도메인 이름과 사용할 인증서를 선택합니다.
SNI(서버 이름 표시)를 사용할지 또는 IP 기반 SSL을 사용할지 선택할 수도 있습니다.

SSL 바인딩 추가하기

바인딩 추가를 클릭하여 변경 내용을 저장하고 SSL을 사용하도록 설정하면 이 후 해당 웹 앱에 HTTPS를 사용할 수 있습니다.

SSL 바인딩 완료

여기까지 우리는 Azure 웹 앱에 SSL을 적용하는 방법을 알아보았습니다.
다음 포스팅에서는 3rd Party 인증서를 등록하는 방법에 대해서 다루어 볼 예정입니다.

참조
https://docs.microsoft.com/ko-kr/azure/app-service-web/web-sites-purchase-ssl-web-site