이 문서에서는 인증서 바인딩을 만들어 Azure App Service 앱 또는 함수 앱에서 사용자 지정 도메인에 대한 보안을 제공하는 방법을 보여 줍니다. 완료되면 사용자 지정 DNS(도메인 이름 시스템) 이름의 엔드포인트에서 https://
App Service 앱에 액세스할 수 있습니다. 예제는 https://www.contoso.com
입니다.
필수 구성 요소
- App Service 앱을 지원되는 가격 책정 계층 중 하나인 Basic, Standard 또는 Premium으로 확장합니다.
- 도메인 이름을 앱에 매핑하거나 Azure에서 구입하여 구성합니다.
바인딩 추가
Azure portal에서:
왼쪽 창에서 App Services><앱 이름을> 선택합니다.
앱의 왼쪽 창에서 사용자 지정 도메인을 선택합니다.
사용자 지정 도메인 옆에 있는 바인딩 추가를 선택합니다.
앱에 선택한 사용자 지정 도메인에 대한 인증서가 이미 있는 경우 인증서에서 선택할 수 있습니다. 그렇지 않은 경우 원본에서 선택한 항목 중 하나를 사용하여 인증서를 추가해야 합니다.
- App Service 관리 인증서 만들기: App Service에서 선택한 도메인에 대한 관리되는 인증서를 만들 수 있습니다. 이 옵션이 가장 쉬운 옵션입니다. 자세한 내용은 무료 관리형 인증서 만들기를 참조하세요.
- App Service 인증서 가져오기: App Service 인증서에서 선택한 도메인에 대해 구매한 App Service 인증서 를 선택합니다.
- 인증서 업로드(.pfx): 프라이빗 인증서 업로드 의 워크플로에 따라 로컬 컴퓨터에서 PFX(개인 정보 교환 파일) 인증서를 업로드하고 인증서 암호를 지정합니다.
- Key Vault에서 가져오기: 키 자격 증명 모음 인증서 선택을 선택하고 대화 상자에서 인증서를 선택합니다.
TLS/SSL 형식에서 SNI SSL 또는 IP 기반 SSL을 선택합니다.
- SNI SSL: 여러 SNI(서버 이름 표시) SSL(Secure Sockets Layer) 바인딩을 추가할 수 있습니다. 이 옵션을 사용하면 여러 TLS(전송 계층 보안)/SSL 인증서를 사용하여 동일한 IP 주소에서 여러 도메인을 보호할 수 있습니다. Microsoft Edge, Chrome, Firefox 및 Opera를 비롯한 대부분의 최신 브라우저는 SNI를 지원합니다. (SNI에 대한 자세한 내용은 서버 이름 표시를 참조하세요.)
- IP 기반 SSL: 하나의 IP SSL 바인딩만 추가할 수 있습니다. 이 옵션을 사용하면 전용 공용 IP 주소를 보호하는 데 하나의 TLS/SSL 인증서만 사용할 수 있습니다. 바인딩을 구성한 후에 IP 기반 SSL에 대한 레코드 다시 매핑의 단계를 따릅니다. IP 기반 SSL은 표준 계층 이상에서만 지원됩니다.
새 인증서를 추가할 때 유효성 검사를 선택하여 새 인증서의 유효성을 검사합니다.
추가를 선택합니다.
작업이 완료되면 사용자 지정 도메인의 TLS/SSL 상태가 보안으로 변경 됩니다.
사용자 지정 도메인의 보안 상태는 인증서가 보안을 제공한다는 것을 의미합니다. App Service는 인증서가 자체 서명되었는지 또는 만료되었는지 확인하지 않으므로 브라우저에 오류 또는 경고가 표시될 수도 있습니다.
IP 기반 SSL에 대한 레코드 다시 매핑
이 단계는 IP 기반 SSL에만 필요합니다. SNI SSL 바인딩의 경우 HTTPS 테스트로 건너뜁니다.
다음과 같은 두 가지 변경이 필요할 수 있습니다.
기본적으로 앱에서는 공유 공용 IP 주소를 사용합니다. IP SSL을 사용하여 인증서를 바인딩하면 App Service에서 앱에 대한 새로운 전용 IP 주소를 만듭니다. A 레코드를 앱에 매핑한 경우 이 새로운 전용 IP 주소로 도메인 레지스트리를 업데이트합니다.
앱의 사용자 지정 도메인 페이지가 새로운 전용 IP 주소로 업데이트됩니다. 이 IP 주소를 복사한 다음 A 레코드를 이 새 IP 주소에 다시 매핑합니다.
<app-name>.azurewebsites.net
에 대한 SNI SSL 바인딩이 있는 경우 모든 CNAME 매핑을 다시 매핑하여 대신sni.<app-name>.azurewebsites.net
을 가리킵니다. (sni
접두사를 추가합니다.)
HTTPS 테스트
다양한 브라우저에서 https://<your.custom.___domain>
으로 이동하여 앱이 나타나는지 확인합니다.
애플리케이션 코드는 x-appservice-proto
헤더를 통해 프로토콜을 검사할 수 있습니다. 헤더의 값은 http
또는 https
입니다.
앱에서 인증서 유효성 검사 오류가 발생한 경우 자체 서명된 인증서를 사용하고 있을 수도 있습니다. 그렇지 않은 경우 인증서를 .pfx 파일로 내보낼 때 중간 인증서를 제외했을 수 있습니다.
질문과 대답
인증서 바인딩을 변경할 때 앱의 IP 주소가 변경되지 않도록 하려면 어떻게 해야 하나요?
바인딩이 IP SSL이더라도 바인딩을 삭제하면 인바운드 IP 주소가 변경될 수 있습니다. 이 동작은 IP SSL 바인딩에 이미 있는 인증서를 갱신할 때 특히 중요합니다. 앱의 IP 주소가 변경되지 않도록 하려면 다음 단계를 수행합니다.
- 새 인증서 업로드
- 이전 인증서를 삭제하지 않고 원하는 사용자 지정 도메인에 새 인증서를 바인딩합니다. 이 작업은 기존 인증서를 제거하지 않고 바인딩을 바꿉니다.
- 기존 인증서를 삭제합니다.
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)
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