내보내기(0) 인쇄
모두 확장

HTTPS 끝점에 SSL 인증서 구성

업데이트 날짜: 2014년 2월

Windows Azure 서비스의 역할에 HTTPS 끝점을 추가하고 SSL 인증서와 연결하려면 다음 단계를 수행해야 합니다.

  1. 인증 기관에서 SSL 인증서를 가져옵니다. 자세한 내용은 SSL 인증서 가져오기를 참조하십시오.

  2. 호스팅된 서비스의 인증서 저장소에 인증서를 추가합니다. 자세한 내용은 Windows Azure에 인증서 업로드 섹션을 참조하십시오.

  3. 서비스 구성 파일에 인증서 지문을 추가합니다. 자세한 내용은 서비스 구성 파일에 인증서 지문 추가 섹션을 참조하십시오.

  4. 호스팅된 서비스의 인증서를 식별하기 위해 서비스 정의 파일을 업데이트합니다. 자세한 내용은 서비스 정의 파일에 인증서 추가 섹션을 참조하십시오.

  5. 서비스 정의 파일에 HTTPS 끝점을 구성한 후 인증서와 연결합니다. 자세한 내용은 HTTPS 끝점 구성 섹션을 참조하십시오.

  6. 서비스로 트래픽을 리디렉션하기 위해 SSL 인증서가 발행된 도메인 이름의 CNAME 레코드를 설정합니다. CNAME 구성에 대한 자세한 내용은 Windows Azure 클라우드 서비스에 대한 사용자 지정 도메인 이름 구성을 참조하십시오.

개발 환경에서 HTTPS 끝점을 테스트할 때 모든 인증은 127.0.0.1에 제공된 자체 서명된 인증서를 사용하여 이루어집니다. 자세한 내용은 이 항목의 뒷부분에 나오는 계산 에뮬레이터에서 HTTPS 끝점 테스트 섹션을 참조하십시오.

Windows Azure에서 HTTPS 끝점을 보호하는 데 사용되는 SSL 인증서는 다음과 같은 기능이 필요합니다.

  • 인증서에 개인 키가 포함되어 있어야 합니다.

  • 인증서의 목적은 서버 인증이어야 합니다.

  • 인증서의 주체 이름이 서비스에 액세스하는 데 사용되는 도메인 이름과 일치해야 합니다.

  • 암호화 키 크기가 2048비트 이상이어야 합니다.

note참고
Windows Azure Tools for Microsoft Visual Studio를 사용하여 서비스를 개발할 경우 역할의 속성 페이지를 사용하여 HTTPS 끝점을 구성할 수 있습니다.

Windows Azure는 호스팅된 서비스에 대한 인증서를 관리할 수 있는 보안 인증서 저장소를 제공합니다. 인증서를 서비스와 연결하고 저장소에 인증서를 업로드하면 자동으로 Windows Azure가 역할 인스턴스를 실행하고 있는 모든 VM에 인증서를 배포합니다. 인증서 저장소에 대한 자세한 내용은 인증서 관리를 참조하십시오.

인증서 저장소에 인증서를 업로드하려면 인증서 저장소에 새 인증서 추가에 나와 있는 단계를 수행하십시오.

서비스 구성 파일 쌍의 인증서 지문은 서비스 정의 파일에 제공한 인증서의 논리적 이름과 저장소에 있는 인증서를 연결합니다. 서비스 구성 파일에 지문을 추가하면 서비스 패키지와 별도로 인증서 데이터를 유지할 수 있습니다. 따라서 서비스를 다시 배포하지 않고도 사용자 또는 IT 관리자가 인증서를 업데이트할 수 있습니다.

서비스 구성 파일에서 인증서와 그 지문의 목록을 보려면 구성 파일을 수정하고 역할의 항목에 Certificates 컬렉션을 추가합니다. Certificate 요소를 Certificates 컬렉션에 추가하고 인증서의 논리적 이름을 지정합니다. 서비스 정의 파일에 지정된 이름과 동일한 이름을 사용해야 합니다. 마지막으로 아래 예에서와 같이 인증서의 지문과 지문을 생성하는 데 사용된 알고리즘을 지정합니다.


<ServiceConfiguration serviceName="MyService">
  <Role name=" MyWorkerRole">
    <Instances count="5" />    
    <ConfigurationSettings>
      . . .
    </ConfigurationSettings>
    <Certificates>
      <Certificate name="MySSLCert" thumbprint="8420C0773626D5137A820156EB5BD9D6FDB9BEE9" thumbprintAlgorithm="sha1"/>
    </Certificates>  
  </Role>
</ServiceConfiguration>

인증서의 지문을 가져오는 방법은 Windows Azure용 서비스 인증서 만들기의 "X.509 v3 인증서 만들기" 섹션을 참조하십시오.

HTTPS 끝점과 인증서를 연결하려면 서비스에서 인증서를 식별하는 데 사용할 인증서의 논리적 이름을 제공해야 합니다. 또한 역할 인스턴스를 실행 중인 가상 컴퓨터 중 인증서가 저장되어 있는 컴퓨터를 지정해야 합니다.

서비스 정의 파일에서 역할의 정의에 Certificates 요소를 추가합니다. Certificates 컬렉션에서 아래 예에서와 같이 인증서 항목을 추가합니다.


  <WorkerRole name="MyWorkerRole" vmsize="Small">
    <ConfigurationSettings>
      . . .
    </ConfigurationSettings>
    <LocalResources>
      . . .
    </LocalResources>
    <Endpoints>
      . . .
    </Endpoints>
    <Certificates>
      <Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
  </WorkerRole>
</ServiceDefinition>

이 예에서 저장소 위치는 LocalMachine로 설정되고 저장소 이름은 My로 설정됩니다. 이 두 특성은 인증서가 설치된 VM(이 예에서는 MySSLCert)을 나타냅니다.

인증서의 name 특성에 원하는 이름을 지정할 수 있습니다. HTTPS 끝점에 대한 정의 및 서비스 구성 파일에서 인증서를 참조할 때 이 이름만 사용합니다.

역할에 HTTPS 끝점을 추가하려면 서비스 정의 파일을 편집하고 역할의 Endpoints 컬렉션에 InputEndpoint 요소를 추가합니다. 끝점의 이름과 프로토콜(HTTPS), 포트를 지정합니다. 그런 다음 역할의 Certificates 컬렉션에서 정의한 인증서의 논리적 이름을 지정합니다.

다음 절차에 포트 80에서 수신하는 웹 역할에 대해 HTTP 입력 끝점을 추가하고 포트 443에서 수신하는 HTTPS 끝점을 정의하는 방법이 나와 있습니다.

  1. 텍스트 편집기에서 서비스의 ServiceDefinition.csdef 파일을 엽니다.

  2. SSL을 사용하여 보호할 역할에 대한 역할 요소에 Certificate 요소를 포함하는 Certificates 컬렉션 요소를 추가합니다. 인증서의 이름에 이름 특성을 설정합니다. storeLocationstoreName 특성을 설정하여 가상 컴퓨터에서 인증서의 위치를 지정합니다.

        
    <Certificates>
       <Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
    
    
  3. SSL을 사용하여 보호할 역할에 대한 역할 요소에 InputEndpoint 요소를 포함하는 Endpoints 컬렉션 요소를 추가합니다. 인증서 컬렉션에 지정된 인증서 이름과 일치하도록 HttpsIn 입력 끝점의 certificate 특성을 설정합니다.

       
    <Endpoints>
       <InputEndpoint name="HttpIn" protocol="http" port="80" />
       <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="MySSLCert" />
    </Endpoints>
    
    
  4. 파일을 저장합니다.

완료된 서비스 정의는 다음 예와 유사합니다.


<ServiceDefinition name="MyService">
  <WorkerRole name="MyWorkerRole">
    <ConfigurationSettings>
      . . .
    </ConfigurationSettings>
    <LocalResources>
      . . .
    </LocalResources>
    <Endpoints>
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
      <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="MySSLCert" />
    </Endpoints>
    <Certificates>
      <Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
  </WorkerRole>
</ServiceDefinition>

기본적으로 계산 에뮬레이터는 localhost에 해당하는 127.0.0.1 IP 주소에 대한 자체 서명 인증서를 사용합니다. 이전 단계에서 구성한 인증서를 설치 또는 구성하는 데 문제가 있을 경우 계산 에뮬레이터는 사용자 지정 인증서 대신 이 자체 서명 인증서를 사용하여 인증합니다. 정의된 다른 인증서가 있지만 배포에서 127.0.0.1에 대한 SSL 인증서를 사용한 경우 사용자 지정 인증서에 오류가 없으며 올바르게 설치되었는지 확인해 보십시오.

기본적으로 계산 에뮬레이터에서 사용하는 자체 서명 인증서는 신뢰할 수 있는 루트 인증 기관에서 발급된 것이 아닙니다. HTTPS를 탐색할 때 로컬 컴퓨터의 신뢰할 수 있는 루트 인증 기관 저장소에 인증서를 추가하지 않으면 인증서 오류가 발생합니다. 오류를 무시하거나 신뢰할 수 있는 루트 인증 기관 저장소에 인증서를 추가하여 오류를 해결할 수 있습니다.

Windows Azure 계산 에뮬레이터에서 호스팅된 서비스를 실행할 때 443이 아닌 다른 포트(예: 444 또는 445)로 SSL 포트를 설정할 수 있습니다. HTTPS 끝점 443과 같이 지정한 포트를 사용할 수 없을 경우 계산 에뮬레이터는 사용할 수 있는 포트를 찾을 때까지 포트 번호를 하나씩 올려 시도해 봅니다.

443 포트를 사용하려면 이 포트를 사용하는 응용 프로그램 또는 웹 사이트를 중지하고 종료한 후 계산 에뮬레이터를 다시 시작하여 사용할 수 있는 포트의 목록을 다시 로드합니다. 에뮬레이터를 종료하고 다시 시작하는 것으로는 사용 가능한 포트 목록을 다시 로드할 수 없습니다.

443 포트가 이미 사용 중인지 확인하려면 명령 프롬프트에서 NETSTAT 명령을 사용합니다. NETSTAT 명령에 대한 자세한 내용은 Netstat를 참조하십시오.

인증 기관에서 발급한 인증서가 없는 경우 Windows Azure 서비스에서 사용할 자체 서명 인증서를 생성할 수 있습니다.

note참고
이 자체 서명 인증서는 개발 환경에서 사용되는 것과 별개의 것입니다. 개발 환경의 인증서는 사용자에게 제공되어 개발 환경에서의 인증용으로만 사용됩니다.

Windows Azure에서 자체 서명 인증서와 연결된 HTTPS 끝점을 탐색하면 브라우저에 인증서 오류가 표시됩니다. 인증 기관에서 서명한 인증서를 사용해야 이 문제가 발생하지 않지만 그 때까지는 오류를 무시할 수 있습니다.

참고 항목

표시:
© 2014 Microsoft