Azure App Service에서 TLS/SSL 바인딩으로 사용자 지정 DNS 이름 보호

이 문서에서는 인증서 바인딩을 만들어 App Service 앱 또는 함수 앱에서 기본 사용자 지정 작업을 보호하는 방법을 보여 줍니다. 완료되면 사용자 지정 DNS 이름(예: https://www.contoso.com)의 https:// 엔드포인트에서 App Service 앱에 액세스할 수 있습니다.

Web app with custom TLS/SSL certificate

필수 조건

1. 바인딩 추가

Azure Portal에서 다음을 수행 합니다.

  1. 왼쪽 메뉴에서 App Services<>앱 이름을> 선택합니다.

  2. 앱의 왼쪽 탐색에서 사용자 지정 작업을 선택합니다기본

  3. 사용자 지정 do기본 옆에 있는 바인딩 추가를 선택합니다.

    A screenshot showing how to launch the Add TLS/SSL Binding dialog.

  4. 선택한 사용자 지정 작업에 대한 인증서가 이미 있는 경우기본 인증서에서 선택할 수 있습니다. 그렇지 않은 경우 원본에서 선택한 항목 중 하나를 사용하여 인증서를 추가해야 합니다.

    • App Service 관리 인증서 만들기 - App Service에서 선택한 작업에 대한 관리되는 인증서를 만들 수 있도록 합니다기본. 이 옵션은 가장 간단합니다. 자세한 내용은 무료 관리되는 인증서 만들기를 참조하세요.
    • App Service 인증서 가져오기 - App Service 인증서에서 선택한 작업에 대해 구입한 App Service 인증서를 선택합니다기본.
    • 인증서 업로드(.pfx) - 프라이빗 인증서 업로드의 워크플로에 따라 로컬 컴퓨터에서 PFX 인증서를 업로드하고 인증서 암호를 지정합니다.
    • Key Vault에서 가져오기 - 키 자격 증명 모음 인증서 선택을 선택하고 대화 상자에서 인증서를 선택합니다.
  5. TLS/SSL 형식에서 SNI SSLIP 기반 SSL에서 선택합니다.

    • SNI SSL: 여러 SNI SSL 바인딩을 추가할 수 있습니다. 이 옵션을 사용하면 여러 TLS/SSL 인증서가 동일한 IP 주소에서 여러 do기본를 보호할 수 있습니다. 최신 브라우저(Internet Explorer, Chrome, Firefox 및 Opera 포함)는 SNI를 지원합니다(자세한 내용은 서버 이름 표시 참조).
      • IP 기반 SSL: 하나의 IP SSL 바인딩만 추가할 수 있습니다. 이 옵션을 사용하면 하나의 TLS/SSL 인증서만 전용 공용 IP 주소를 보호할 수 있습니다. 바인딩을 구성한 후 2단계 를 수행합니다. IP 기반 SSL에 대한 레코드를 다시 매핑합니다.
        IP SSL은 기본 계층 이상에서만 지원됩니다.
  6. 새 인증서를 추가할 때 유효성 검사를 선택하여 새 인증서의 유효성을 검사합니다.

  7. 추가를 선택합니다.

    작업이 완료되면 사용자 지정 도메인의 TLS/SSL 상태가 보안으로 변경됩니다.

    A screenshot showing the custom domain secured by a certificate binding.

참고 항목

Custom do기본s의 보안 상태는 인증서로 보호되지만 인증서가 자체 서명되었거나 만료된 경우 App Service는 검사 않습니다. 예를 들어 브라우저에 오류 또는 경고가 표시될 수도 있습니다.

2. IP 기반 SSL에 대한 레코드 다시 매핑

이 단계는 IP 기반 SSL에만 필요합니다. SNI SSL 바인딩의 경우 사용자 지정 수행에 대한 테스트 HTTPS로 건너뜁니다기본.

다음과 같은 두 가지 변경이 필요할 수 있습니다.

  • 기본적으로 앱은 공유 공용 IP 주소를 사용합니다. IP SSL을 사용하여 인증서를 바인딩하는 경우 App Service는 앱에 대한 새 전용 IP 주소를 만듭니다. A 레코드를 앱에 매핑한 경우 이 새로운 전용 IP 주소로 do기본 레지스트리를 업데이트합니다.

    앱의 사용자 지정 할 일기본 페이지는 새로운 전용 IP 주소로 업데이트됩니다. 이 IP 주소를 복사한 다음 A 레코드 를 이 새 IP 주소에 다시 매핑합니다.

  • <app-name>.azurewebsites.net에 대한 SNI SSL 바인딩이 있는 경우 모든 CNAME 매핑을 다시 매핑하여 대신 sni.<app-name>.azurewebsites.net(sni 접두사 추가)을 가리킵니다.

3. HTTPS 테스트

다양한 브라우저에서 앱을 제공하는지 확인하려면 https://<your.custom.domain> 찾습니다.

Screenshot showing an example of browsing to your custom domain with the contoso.com URL highlighted.

애플리케이션 코드는 "x-appservice-proto" 헤더를 통해 프로토콜을 검사할 수 있습니다. 헤더의 http 값은 입니다 https.

참고 항목

앱에서 인증서 유효성 검사 오류가 발생한 경우 자체 서명된 인증서를 사용하고 있을 수도 있습니다.

그렇지 않은 경우 인증서를 PFX 파일로 내보낼 때 중간 인증서를 제외했을 수 있습니다.

자주 묻는 질문

인증서 바인딩을 변경할 때 앱의 IP 주소가 변경되지 않는지 어떻게 할까요??

바인딩이 IP SSL인 경우에도 바인딩을 삭제할 때 인바운드 IP 주소가 변경됩니다. 이것은 IP SSL 바인딩에 이미 있는 인증서를 갱신할 때 특히 중요합니다. 앱의 IP 주소가 변경되지 않도록 하려면 다음 단계를 순서대로 수행합니다.

  1. 새 인증서를 업로드합니다.
  2. 이전 인증서를 삭제하지 않고 원하는 사용자 지정 do기본 새 인증서를 바인딩합니다. 이 작업은 기존 인증서를 제거하지 않고 바인딩을 바꿉니다.
  3. 기존 인증서를 삭제합니다.

HTTP에서 HTTPS로 강제 리디렉션을 사용하지 않도록 설정할 수 있나요?

기본적으로 App Service는 HTTP 요청에서 HTTPS로의 리디렉션을 강제로 적용합니다. 이 동작을 사용하지 않도록 설정하려면 일반 설정 구성을 참조 하세요.

앱의 최소 TLS 버전을 변경하기 위해 어떻게 해야 하나요?

앱은 기본적으로 TLS 1.2를 허용하며 이는 PCI DSS와 같은 업계 표준에 따라 권장되는 TLS 수준입니다. 다른 TLS 버전을 적용하려면 일반 설정 구성을 참조 하세요.

App Service에서 TLS 종료를 처리할 어떻게 할까요? 있나요?

App Service에서, TLS 종료는 네트워크 부하 분산 장치에서 발생하므로 모든 HTTPS 요청은 암호화되지 않은 HTTP 요청으로 앱에 도달합니다. 앱 논리에서 사용자 요청의 암호화 여부를 확인해야 하는 경우 X-Forwarded-Proto 헤더를 검사합니다.

Linux Node.js 구성 가이드와 같은 언어별 구성 가이드에서는 애플리케이션 코드에서 HTTPS 세션을 검색하는 방법을 보여 줍니다.

스크립트를 사용하여 자동화

Azure CLI

웹앱에 사용자 지정 TLS/SSL 인증서 결합

PowerShell

$fqdn="<Replace with your custom domain name>"
$pfxPath="<Replace with path to your .PFX file>"
$pfxPassword="<Replace with your .PFX password>"
$webappname="mywebapp$(Get-Random)"
$location="West Europe"

# Create a resource group.
New-AzResourceGroup -Name $webappname -Location $location

# Create an App Service plan in Free tier.
New-AzAppServicePlan -Name $webappname -Location $location `
-ResourceGroupName $webappname -Tier Free

# Create a web app.
$webapp = New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname `
-ResourceGroupName $webappname

Write-Host "Sign in to your domain provider's website and configure the following records:"
Write-Host "A CNAME record that maps $fqdn to $webappname.azurewebsites.net"
Write-Host "A TXT record that maps asuid.$fqdn to the domain verification ID $($webapp.CustomDomainVerificationId)"
Read-Host "Press [Enter] key when ready ..."

# Before continuing, go to your DNS configuration UI for your custom domain and follow the 
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the 
# hostname "www" and point it your web app's default domain name.

# Upgrade App Service plan to Basic tier (minimum required by custom SSL certificates)
Set-AzAppServicePlan -Name $webappname -ResourceGroupName $webappname `
-Tier Basic

# Add a custom domain name to the web app. 
Set-AzWebApp -Name $webappname -ResourceGroupName $webappname `
-HostNames @($fqdn,"$webappname.azurewebsites.net")

# Upload and bind the SSL certificate to the web app.
New-AzWebAppSSLBinding -WebAppName $webappname -ResourceGroupName $webappname -Name $fqdn `
-CertificateFilePath $pfxPath -CertificatePassword $pfxPassword -SslState SniEnabled

추가 리소스