Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

(시리즈 글이 6개 있습니다.)
개발 환경 구성: 284. "Let's Encrypt"에서 제공하는 무료 SSL 인증서를 IIS에 적용하는 방법 (1)
; https://www.sysnet.pe.kr/2/0/10958

개발 환경 구성: 287. Let's Encrypt 인증서 업데이트 주기: 90일
; https://www.sysnet.pe.kr/2/0/11005

개발 환경 구성: 288. SSL 인증서를 Azure Cloud Service에 적용하는 방법
; https://www.sysnet.pe.kr/2/0/11006

개발 환경 구성: 301. "Let's Encrypt" SSL 인증서를 Azure Cloud Services(classic)에 업데이트하는 방법
; https://www.sysnet.pe.kr/2/0/11054

개발 환경 구성: 358. "Let's Encrypt"에서 제공하는 무료 SSL 인증서를 IIS에 적용하는 방법 (2)
; https://www.sysnet.pe.kr/2/0/11483

개발 환경 구성: 370. Azure VM/App Services(Web Apps)에 Let's Encrypt 무료 인증서 적용 방법
; https://www.sysnet.pe.kr/2/0/11502




SSL 인증서를 Azure Cloud Service에 적용하는 방법

지난 글에 설명한 대로 했다면,

"Let's Encrypt"에서 제공하는 무료 SSL 인증서를 IIS에 적용하는 방법 (1)
; https://www.sysnet.pe.kr/2/0/10958

인증서가 생겼을 것입니다. 이것을 IIS에 적용해 보는 것은 다음의 글을 참고해 쉽게 하실 수 있습니다.

How to Import and Export SSL Certificates in IIS 7
; https://www.digicert.com/ssl-support/pfx-import-export-iis-7.htm

이 글에서는 Azure WebRole 웹 사이트에 SSL 인증서를 설치하는 방법을 알아보겠습니다. 물론, 다음과 같이 역시 문서가 이미 있지만. ^^

Configuring SSL for an application in Azure
; https://azure.microsoft.com/en-gb/documentation/articles/cloud-services-configure-ssl-certificate/




우선, "Let's Encrypt"로부터 구한 .pfx 파일을 Azure에 업로드하는 것부터 시작하면 됩니다.

Azure Portal에 연결해 "Cloud service (classic)" 유형의 서비스를 선택한 다음, "Settings" / "Certificates" 링크를 눌러,

ssl_azure_1.png

.pfx 파일을 "Upload" 버튼을 이용해 Azure에 등록합니다. 그럼 다음과 같은 결과를 볼 수 있습니다.

ssl_azure_2.png

이제 남은 작업은 여러분들의 배포 프로젝트만 변경해 주시면 됩니다. 먼저 Azure Cloud Service 배포 프로젝트에 포함된 .csdef 파일에 인증서 내용을 추가해야 하는데, 도움말에 써 있는 내용이 예사롭지 않습니다.

<WebRole name="CertificateTesting" vmsize="Small">
...
    <Certificates>
        <Certificate name="SampleCertificate" 
                     storeLocation="LocalMachine" 
                     storeName="My"
                     permissionLevel="limitedOrElevated" />
        <!-- IMPORTANT! Unless your certificate is either
        self-signed or signed directly by the CA root, you
        must include all the intermediate certificates
        here. You must list them here, even if they are
        not bound to any endpoints. Failing to list any of
        the intermediate certificates may cause hard-to-reproduce
        interoperability problems on some clients.-->
        <Certificate name="CAForSampleCertificate"
                     storeLocation="LocalMachine"
                     storeName="CA"
                     permissionLevel="limitedOrElevated" />
    </Certificates>
...
</WebRole>

예를 들어 "Let's encrypt"로부터 받은 SSL 인증서의 경로가 다음과 같은데,

letsencrypt_3.png

  • DST Root CA X3
  • Let's Encrypt Authority X3
  • ...[your cert]....

도움말에 의하면 여러분들의 인증서와 함께 "intermediate certificates"에 해당하는 "Let's Encrypt Authority X3"까지 포함해 2개의 항목을 기재해야 하는 것입니다. 다음은 제 sysnet 웹 사이트의 변경된 내용을 보여줍니다.

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition ...[생략]...>
    ...[생략]...

    <Certificates>
        <Certificate name="www.sysnet.pe.kr" 
                     storeLocation="LocalMachine" 
                     storeName="My"
                     permissionLevel="limitedOrElevated" />
        <Certificate name="Let's Encrypt Authority X3"
                     storeLocation="LocalMachine"
                     storeName="CA"
                     permissionLevel="limitedOrElevated" />
    </Certificates>


  </WebRole>
</ServiceDefinition>

그런 다음 역시 동일한 .csdef 파일에 https 접근을 위한 Endpoints와 Binding을 추가해 줍니다.

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition ...[생략]...>
    ...[생략]...

    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
          <Binding name="HttpsIn" endpointName="HttpsIn" />
        </Bindings>
      </Site>
    </Sites>

    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
      <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="www.sysnet.pe.kr" />
    </Endpoints>

    <Certificates>
        <Certificate name="www.sysnet.pe.kr" 
                     storeLocation="LocalMachine" 
                     storeName="My"
                     permissionLevel="limitedOrElevated" />
        <Certificate name="LetsEncryptAuthorityX3"
                     storeLocation="LocalMachine"
                     storeName="CA"
                     permissionLevel="limitedOrElevated" />
    </Certificates>


  </WebRole>
</ServiceDefinition>

마지막으로 .csdef 파일이 포함된 배포 프로젝트에 .cscfg 파일을 열어 .csdef에 명시했던 인증서를 추가해줍니다. (thumbprintAlgorithm 값은 인증서의 속성창에서 구할 수 있고, thumbprint 값은 인증서 속성 창뿐만 아니라 Azure Portal에 등록된 인증서 목록에서도 구할 수 있습니다.)

<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration  ...[생략]...>
    <Role ...[생략]...>
        ...[생략]...
        <ConfigurationSettings>
            ...[생략]...
        </ConfigurationSettings>
        <Certificates>
            <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" ...[생략]... />

            <Certificate name="www.sysnet.pe.kr"
                thumbprint="CC5D8A0EBA4C72BB42308A851261A3FBFCBC115E"
                thumbprintAlgorithm="sha1" />
            <Certificate name="LetsEncryptAuthorityX3"
                thumbprint="E6A3B45B062D509B3382282D196EFE97D5956CCB"
                thumbprintAlgorithm="sha1" />"'"

        </Certificates>
    </Role>
</ServiceConfiguration>

여기까지 마치고, 다시 웹 사이트를 Azure에 배포해 주면 끝!!!

확인을 위해 "https://www.sysnet.pe.kr"로 접속해 보세요. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 7/23/2016]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... [106]  107  108  109  110  111  112  113  114  115  116  117  118  119  120  ...
NoWriterDateCnt.TitleFile(s)
11313정성태9/25/201721504디버깅 기술: 97. windbg - 메모리 덤프로부터 DateTime 형식의 값을 알아내는 방법파일 다운로드1
11312정성태9/25/201724624.NET Framework: 685. C# - 구조체(값 형식)의 필드를 리플렉션을 이용해 값을 바꾸는 방법파일 다운로드1
11311정성태9/20/201717782.NET Framework: 684. System.Diagnostics.Process 객체의 명시적인 해제 권장
11310정성태9/19/201722339.NET Framework: 683. WPF의 Window 객체를 생성했는데 GC 수집 대상이 안 되는 이유 [3]
11309정성태9/13/201719609개발 환경 구성: 335. Octave의 명령 창에서 실행한 결과를 복사하는 방법
11308정성태9/13/201721491VS.NET IDE: 121. 비주얼 스튜디오에서 일부 텍스트 파일을 무조건 메모장으로만 여는 문제파일 다운로드1
11307정성태9/13/201724028오류 유형: 421. System.Runtime.InteropServices.SEHException - 0x80004005
11306정성태9/12/201722148.NET Framework: 682. 아웃룩 사용자를 위한 중국어 스팸 필터 Add-in
11305정성태9/12/201723547개발 환경 구성: 334. 기존 프로젝트를 Visual Studio를 이용해 Github의 신규 생성된 repo에 올리는 방법 [1]
11304정성태9/11/201720436개발 환경 구성: 333. 3ds Max를 Hyper-V VM에서 실행하는 방법
11303정성태9/11/201724117개발 환경 구성: 332. Inno Setup 파일의 관리자 권한을 제거하는 방법
11302정성태9/11/201719871개발 환경 구성: 331. SQL Server Express를 위한 방화벽 설정
11301정성태9/11/201718018오류 유형: 420. SQL Server Express 연결 오류 - A network-related or instance-specific error occurred while establishing a connection to SQL Server.
11300정성태9/10/201723104.NET Framework: 681. dotnet.exe - run, exec, build, restore, publish 차이점 [3]
11299정성태9/9/201721842개발 환경 구성: 330. Hyper-V VM의 Internal Network를 Private 유형으로 만드는 방법
11298정성태9/8/201725341VC++: 119. EnumProcesses / EnumProcessModules API 사용 시 주의점 [1]
11297정성태9/8/201721670디버깅 기술: 96. windbg - 풀 덤프에 포함된 모든 닷넷 모듈을 파일로 저장하는 방법
11296정성태9/8/201724304웹: 36. Edge - "이 웹 사이트는 이전 기술에서 실행되며 Internet Explorer에서만 작동합니다." 끄는 방법
11295정성태9/7/201722381디버깅 기술: 95. Windbg - .foreach 사용법
11294정성태9/4/201721942개발 환경 구성: 329. 마이크로소프트의 CoreCLR 프로파일러 예제 빌드 방법 [1]
11293정성태9/4/201722723개발 환경 구성: 328. Visual Studio(devenv.exe)를 배치 파일(.bat)을 통해 실행하는 방법
11292정성태9/4/201720920오류 유형: 419. Cannot connect to WMI provider - Invalid class [0x80041010]
11291정성태9/3/201721838개발 환경 구성: 327. 아파치 서버 2.4를 위한 mod_aspdotnet 마이그레이션
11290정성태9/3/201725903개발 환경 구성: 326. 아파치 서버에서 ASP.NET을 실행하는 mod_aspdotnet 모듈 [2]
11289정성태9/3/201723580개발 환경 구성: 325. GAC에 어셈블리 등록을 위해 gacutil.exe을 사용하는 경우 주의 사항
11288정성태9/3/201720202개발 환경 구성: 324. 윈도우용 XAMPP의 아파치 서버 구성 방법
... [106]  107  108  109  110  111  112  113  114  115  116  117  118  119  120  ...