TlS/SSL bağlaması ile özel bir DNS adının güvenliğini Azure App Service

Bu makalede, sertifika bağlaması oluşturarak uygulama veya işlev App Service uygulamanıza özel etki alanının güvenliğini sağlamayı gösterir. Bitirdikten sonra, özel DNS adınız için uç App Service uç noktada uygulama uygulamanıza https:// erişebilirsiniz (örneğin, https://www.contoso.com ).

Özel TLS/SSL sertifikasına sahip web uygulaması

Özel etki alanının sertifika ile güvenliğini sağlamak için iki adım gerekir:

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Uygulamanızın fiyatlandırma katmanını yükseltme
  • Sertifika ile özel etki alanının güvenliğini sağlama
  • HTTPS'yi zorunlu tutma
  • TLS 1.1/1.2 zorlama
  • TLS yönetimini betiklerle otomatikleştirme

Önkoşullar

Bu nasıl sıyrı kılavuzu takip etmek için:

Not

Özel sertifika eklemenin en kolay yolu, yönetilen bir sertifika için ücretsiz App Service oluşturmaktır.

Web uygulamanızı hazırlama

Özel TLS/SSL bağlamaları oluşturmak veya App Service uygulamanız için istemci sertifikalarını etkinleştirmek üzere App Service planınız temel, Standart, Premium veya yalıtılmış katmanda olmalıdır. Bu adımda, web uygulamanızın desteklenen bir fiyatlandırma katmanında olduğundan emin olacaksınız.

Azure'da oturum açma

Azure portalını açın.

Uygulama hizmetleri' ni arayıp seçin.

Uygulama hizmetlerini seçin

Uygulama hizmetleri sayfasında, Web uygulamanızın adını seçin.

Listedeki ilk uygulamayla vurgulanan tüm Web uygulamalarının listesini gösteren Azure portal App Services sayfasının ekran görüntüsü.

Web uygulamanızın yönetim sayfasına ulaştınız.

Fiyatlandırma katmanını denetleme

Web uygulaması sayfasının sol gezinti bölmesinde Ayarlar bölümüne kaydırın ve Ölçeği artır (App Service planı) öğesini seçin.

Ölçeği artır menüsü

Web uygulamanızın F1 veya D1 katmanında olmadığından emin olun. Web uygulamanızın geçerli katmanı koyu mavi bir kutuyla vurgulanır.

Fiyatlandırma katmanını denetleyin

F1 veya D1 katmanında özel SSL desteklenmez. Ölçeği artırmanız gerekirse sonraki bölümde verilen adımları izleyin. Aksi takdirde, Ölçek artırma sayfasını kapatın ve App Service planınızı ölçeği büyütme bölümünü atlayın.

App Service planınızın ölçeğini artırma

Ücretsiz olmayan katmanlardan birini seçin (B1, B2, B3, veya Üretim kategorisindeki herhangi bir katmanı). Ek seçenekler için Ek seçeneklere bakın’a tıklayın.

Uygula’ya tıklayın.

Fiyatlandırma katmanı seçme

Aşağıdaki bildirimi gördüğünüzde, ölçeklendirme işlemi tamamlanmıştır.

Ölçek artırma bildirimi

Özel etki alanının güvenliğini sağlama

Aşağıdaki adımları uygulayın:

Uygulama Azure portalmenüsünden Uygulama Hizmetleri'ne > <app-name> tıklayın.

Uygulamanın sol gezinti bölmesinden TLS/SSL Bağlama iletişim kutusunu şu şekilde başlatabilirsiniz:

  • Özel etki alanları Bağlama > ekle'yi seçme
  • TLS/SSL ayarlarını seçme > TLS/SSL bağlaması ekleme

Etki alanına bağlama ekleme

Bu Custom Domain, bağlama eklemek istediğiniz özel etki alanını seçin.

Uygulamanız seçili özel etki alanı için zaten bir sertifikaya sahipse Doğrudan bağlama oluştur'a gidin. Aksi takdirde devam etmek.

Özel etki alanı için sertifika ekleme

Uygulamanıza seçili özel etki alanı için sertifika yoksa iki seçeneğiniz vardır:

  • Upload PFX Sertifikası - Özel bir sertifika Uploadiş akışını izleyin ve burada bu seçeneği belirleyin.
  • İçeri App Service Sertifikası - Bir sertifikayı içeri aktarma App Service iş akışını izleyin,ardından burada bu seçeneği belirleyin.

Not

Ayrıca Ücretsiz bir sertifika oluşturabilir veya Bir Key Vault sertifikasını içeri aktarabilirsiniz,ancak bunu ayrı ayrı yapmalı ve ardından TLS/SSL Bağlama iletişim kutusuna geri dönebilirsiniz.

Bağlama oluşturma

TLS/SSL Bağlama iletişim kutusunda TLS bağlamasını yapılandırmanıza yardımcı olması için aşağıdaki tabloyu kullanın ve Bağlama Ekle'ye tıklayın.

Ayar Açıklama
Özel etki alanı TLS/SSL bağlaması eklemek için etki alanı adı.
Özel Sertifika Parmak Izi Bağlan verilecek sertifika.
TLS/SSL Türü
  • SNI SSL - SNI SSL bağlama eklenebilir. Bu seçenek, birden çok TLS/SSL sertifikasının aynı IP adresi üzerinde birden çok etki alanının güvenliğini sağlamasını sağlar. Çoğu modern tarayıcı (Internet Explorer, Chrome, Firefox ve Opera dahil) SNI'yi destekler (daha fazla bilgi için bkz. Sunucu Adı Belirtme).
  • IP SSL - Yalnızca IP SSL bağlama eklenebilir. Bu seçenek, ayrılmış bir genel IP adresinin güvenliğini sağlamak için yalnızca bir TLS/SSL sertifikasına izin verir. Bağlamayı yapılandırdikten sonra, IP SSL için kayıtları yeniden eşleme IP SSL.
    IP SSL yalnızca Standart katmanda veya üzerinde de desteklemektedir.

İşlem tamamlandıktan sonra özel etki alanının TLS/SSL durumu Güvenli olarak değiştirilir.

TLS/SSL bağlaması başarılı

Not

Özel etki alanlarındaki Güvenli durum, sertifikanın bir sertifika ile güvenli olduğu anlamına gelir, ancak App Service sertifikanın otomatik olarak imzalanan veya süresi dolmuş olup olmadığını denetlemez. Bu durum tarayıcıların hata veya uyarı göstermelerini de sağlar.

IP SSL için kayıtları yeniden eşleme

Uygulamanıza uygulamanıza IP SSL özel etki alanınız için HTTPS'yi test etme adımına atlayabilirsiniz.

İki değişiklik yapmak gerekir, potansiyel olarak:

  • Varsayılan olarak, uygulamanız paylaşılan bir genel IP adresi kullanır. Bir sertifikayı IP SSL App Service için yeni, ayrılmış bir IP adresi oluşturur. Uygulamanıza bir A kaydı eşledıysanız, etki alanı kayıt defterinizi bu yeni, ayrılmış IP adresiyle güncelleştirin.

    Uygulamanın Özel etki alanı sayfası yeni, ayrılmış IP adresiyle güncelleştirilir. Bu IP adresini kopyalayın, ardından bu yeni IP adresine A kaydını yeniden eşleyin.

  • için bir SNI SSL <app-name>.azurewebsites.net varsa, herhangi bir CNAME eşlemesini bunun yerine işaret edecek şekilde sni.<app-name>.azurewebsites.net yeniden eşler (ön eki sni ekleyin).

HTTPS’yi test etme

Çeşitli tarayıcılarda, https://<your.custom.domain> uygulamanıza hizmet ettiği doğrulamak için göz atabilirsiniz.

Url'si vurgulanmış şekilde özel etki alanınıza göz atma contoso.com ekran görüntüsü.

Uygulama kodunuz protokolü "x-appservice-proto" üst bilgisi aracılığıyla inceler. Üst bilgi veya değerine http sahip https olur.

Not

Uygulamanız size sertifika doğrulama hataları veriyorsa, büyük olasılıkla otomatik olarak imzalanan bir sertifika kullanıyorsanız.

Böyle bir durum söz konusu değilse, sertifikanızı PFX dosyasına aktardığınızda ara sertifikaları dışarıda bırakmış olabilirsiniz.

IP değişikliklerini önleme

Bağlama silinse bile gelen IP adresiniz IP SSL. Bu özellikle, zaten bir sertifika bağlaması içinde olan bir sertifikayı yenilerken IP SSL önemlidir. Uygulamanızın IP adresinin değişmesini önlemek için şu adımları sırasıyla izleyin:

  1. Yeni sertifikayı karşıya yükleyin.
  2. Eskisini silmeden yeni sertifikayı istediğiniz özel etki alanına bağlayın. Bu eylem, eskisini kaldırmak yerine bağlamayı değiştirir.
  3. Eski sertifikayı silin.

HTTPS'yi zorunlu tutma

Varsayılan olarak, herkes http kullanarak uygulamanıza erişmeye devam ediyor. Tüm HTTPS isteklerini HTTP bağlantı noktasına yeniden yönlendirebilirsiniz.

Uygulama sayfasının sol gezinti bölmesinde TLS/SSL ayarları'na tıklayın. Ardından Yalnızca HTTPS menüsünde Açık’ı seçin.

HTTPS'yi zorunlu tutma

İşlem tamamlandığında, uygulamanıza işaret eden HTTP URL'lerinden herhangi birine gidin. Örnek:

  • http://<app_name>.azurewebsites.net
  • http://contoso.com
  • http://www.contoso.com

TLS sürümlerini zorlama

Uygulamanız varsayılan olarak TLS 1.2 sürümüne izin verir. Bu, PCI DSS gibi endüstri standartlarınca önerilen TLS düzeyidir. Farklı TLS sürümlerini zorlamak için aşağıdaki adımları uygulayın:

Uygulama sayfasının sol gezinti bölmesinde TLS/SSL ayarları'na tıklayın. Ardından TLS sürümü’nde istediğiniz en düşük TLS sürümünü seçin. Bu ayar yalnızca gelen çağrıları denetler.

TLS 1.1 veya 1.2’yi zorlama

İşlem tamamlandığında, uygulamanız daha düşük TLS sürümleriyle tüm bağlantıları reddeder.

TLS sonlandırmayı işleme

Bu App Service, ağ yük dengecilerde TLS sonlandırması gerçekleşir, bu nedenle tüm HTTPS istekleri şifrelenmemiş HTTP istekleri olarak uygulamanıza erişer. Uygulama mantığının kullanıcı isteklerinin şifrelenir olup olmadığını denetlemesi gerekirse üst bilgisi X-Forwarded-Proto incelenir.

Linux Node.js yapılandırma kılavuzu gibi dile özgü yapılandırma kılavuzları, uygulama kodunda bir HTTPS oturumunu algılamayı gösterir.

Sertifika bağlamayı yenileme

Not

Satın aldığınız bir App Service yenilemek için bkz. Dışarı aktarma (App Service) sertifikası. App Service sertifikaları otomatik olarak yenilenir ve bağlama otomatik olarak eşitlenir.

Süresi dolan bir sertifikayı değiştirmek için, sertifika bağlamasını yeni sertifikayla güncelleştirmeniz kullanıcı deneyimini olumsuz etkileyebilir. Örneğin, bağlama IP tabanlı olsa bile bir bağlamayı silebilirsiniz. Bu, zaten IP tabanlı bağlamada yer alan bir sertifikayı yenilerken özellikle önemlidir. Uygulamanın IP adresi değişikliğini önlemek ve uygulamanın kapalı kalma süresini önlemek için şu adımları sırasıyla izleyin:

  1. Yeni sertifikayı karşıya yükleyin.
  2. Mevcut (süresi dolan) sertifikayı silmeden yeni sertifikayı aynı özel etki alanına bağlayın. Bu eylem, mevcut sertifikayı kaldırmak yerine bağlamanın yerini almaktadır.
  3. Mevcut sertifikayı silin.

Betiklerle otomatikleştirme

Azure CLI

#!/bin/bash

fqdn=<replace-with-www.{yourdomain}>
pfxPath=<replace-with-path-to-your-.PFX-file>
pfxPassword=<replace-with-your=.PFX-password>
resourceGroup=myResourceGroup
webappname=mywebapp$RANDOM

# Create a resource group.
az group create --location westeurope --name $resourceGroup

# Create an App Service plan in Basic tier (minimum required by custom domains).
az appservice plan create --name $webappname --resource-group $resourceGroup --sku B1

# Create a web app.
az webapp create --name $webappname --resource-group $resourceGroup \
--plan $webappname

echo "Configure a CNAME record that maps $fqdn to $webappname.azurewebsites.net"
read -p "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.

# Map your prepared custom domain name to the web app.
az webapp config hostname add --webapp-name $webappname --resource-group $resourceGroup \
--hostname $fqdn

# Upload the SSL certificate and get the thumbprint.
thumbprint=$(az webapp config ssl upload --certificate-file $pfxPath \
--certificate-password $pfxPassword --name $webappname --resource-group $resourceGroup \
--query thumbprint --output tsv)

# Binds the uploaded SSL certificate to the web app.
az webapp config ssl bind --certificate-thumbprint $thumbprint --ssl-type SNI \
--name $webappname --resource-group $resourceGroup

echo "You can now browse to https://$fqdn"

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.
New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname `
-ResourceGroupName $webappname

Write-Host "Configure a CNAME record that maps $fqdn to $webappname.azurewebsites.net"
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

Diğer kaynaklar