Kendi imzasını taşıyan, özel kök CA ile Azure Application Gateway sertifikası oluşturma

Application Gateway v2 SKU'su, arka uç sunucularıyla TLS bağlantılarına izin vermek için Güvenilen Kök Sertifikaların kullanılmasını sağlar. Bu özellik, v1 SKU'da gerekli olan kimlik doğrulama sertifikalarının (tek tek Yaprak sertifikaları) kullanımını kaldırır. Kök sertifika, arka uç sertifika sunucusundan gelen, Base-64 ile kodlanmış X.509 (.CER) formatında bir kök sertifikadır. Sunucu sertifikasını veren kök sertifika yetkilisini (CA) tanımlar ve ardından sunucu sertifikası TLS/SSL iletişimi için kullanılır.

Application Gateway, iyi bilinen bir CA (örneğin, GoDaddy veya DigiCert) imzalarsa web sitenizin sertifikasına varsayılan olarak güvenir. Bu durumda kök sertifikanın açıkça karşıya yüklenmesi gerekli değildir. Daha fazla bilgi için bkz. Application Gateway ile TLS sonlandırma ve uçtan uca TLS'ye genel bakış. Ancak geliştirme/test ortamınız varsa ve doğrulanmış CA imzalı sertifika satın almak istemiyorsanız, kendi özel Kök CA'nızı ve bu Kök CA tarafından imzalanmış bir yaprak sertifika oluşturabilirsiniz.

Note

Kendi kendine oluşturulan sertifikalara varsayılan olarak güvenilmez ve bakımını yapmak zor olabilir. Ayrıca, güçsüz olan eski hash ve şifreleme paketlerini de kullanabilirler. Daha iyi güvenlik için, iyi bilinen bir sertifika yetkilisi tarafından imzalanan bir sertifika satın alın.

Arka uç TLS bağlantıları için özel sertifikanızı oluşturmak için aşağıdaki seçenekleri kullanın.

  1. Özel sertifika oluşturucu aracını kullanın. Sağladığınız etki alanı adını (Ortak Ad) kullanarak, bu araç Kök ve Sunucu sertifikaları oluşturmak için bu makalede belgelenen adımların aynısını gerçekleştirir. Oluşturulan sertifika dosyalarını kullanarak, Kök sertifika (.CER) dosyasını ağ geçidinizin Arka Uç Ayarına ve karşılık gelen sertifika zinciri (.PFX) dosyasını arka uç sunucusuna yükleyin. PFX dosyasının parolası da indirilen ZIP dosyasında sağlanır.

  2. Gereksinimlerinize göre sertifikaları özelleştirmek ve oluşturmak için OpenSSL komutlarını kullanın. Bu işlemi tamamen kendi başınıza yapmak istiyorsanız bu makaledeki yönergeleri izlemeye devam edin.

Bu makalede şunları öğreneceksiniz:

  • Kendi özel Sertifika Yetkilinizi oluşturma
  • Kendi CA'nız tarafından imzalanacak kendi kendine imzalı bir sertifika oluşturun.
  • Arka uç sunucusunun kimliğini doğrulamak için Application Gateway'e otomatik olarak imzalanan kök sertifika yükleme

Prerequisites

Kök CA sertifikası oluşturma

OpenSSL kullanarak kök CA sertifikanızı oluşturun.

Kök anahtarı oluşturma

  1. OpenSSL'nin yüklü olduğu bilgisayarınızda oturum açın ve aşağıdaki komutu çalıştırın. Bu komut, root özel anahtarı oluşturur. Anahtar şifrelenmemiş ve bir parolayla korunmuyor, bu nedenle contoso.key dosyasını güvenli bir yerde saklayın.

    openssl ecparam -out contoso.key -name prime256v1 -genkey
    

Kök sertifika oluştur ve kendi kendine imzala

  1. Sertifika İmzalama İsteği (CSR) oluşturmak için aşağıdaki komutu kullanın.

    openssl req -new -sha256 -key contoso.key -out contoso.csr
    
  2. Istendiğinde, özel CA için ülke/bölge, eyalet, kuruluş, OU ve tam nitelikli alan adı (bu alan adı veren kurumdur) gibi organizasyon bilgilerini yazın. Kök anahtar şifreyle korunmadığı için OpenSSL size şifre istemiyor.

    Kök sertifika oluşturma ekran görüntüsü.

  3. Kök sertifikayı oluşturmak için aşağıdaki komutu kullanın.

    openssl x509 -req -sha256 -days 365 -in contoso.csr -signkey contoso.key -out contoso.crt
    

    Önceki komutlar kök sertifikayı oluşturur. Sunucu sertifikanızı imzalamak için bu sertifikayı kullanırsınız.

Sunucu sertifikası oluşturma

Ardından, OpenSSL kullanarak bir sunucu sertifikası oluşturursunuz.

Sertifikanın anahtarını oluşturma

Sunucu sertifikasının anahtarını oluşturmak için aşağıdaki komutu kullanın.

openssl ecparam -out fabrikam.key -name prime256v1 -genkey

CSR Oluşturma (Sertifika İmzalama İsteği)

CSR, sertifika isteğinde bulunurken CA'ya verdiğiniz bir ortak anahtardır. CA, bu özel istek için sertifikayı oluşturur.

Note

Sunucu sertifikasının CN'si (Ortak Ad), verenin etki alanından farklı olmalıdır. Örneğin, bu durumda, verenin CN'si www.contoso.com ve sunucu sertifikasının CN'si www.fabrikam.com olur.

  1. CSR'yi oluşturmak için aşağıdaki komutu kullanın:

    openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr
    
  2. Istendiğinde, özel CA için organizasyon bilgilerini yazın: Ülke/Bölge, Eyalet, Kuruluş, OU ve tam nitelikli alan adı. Bu alan adı web sitesinin alan adıdır ve verenden farklı olmalıdır. Kök anahtar gibi, sunucu anahtarı da şifreyle korunmuyor, bu yüzden OpenSSL size şifre sormuyor.

    Sunucu sertifikasının ekran görüntüsü.

SERTIFIKAyı CSR ve anahtarla oluşturun ve CA'nın kök anahtarıyla imzalayın

  1. Sertifikayı oluşturmak için aşağıdaki komutu kullanın:

    openssl x509 -req -in fabrikam.csr -CA  contoso.crt -CAkey contoso.key -CAcreateserial -out fabrikam.crt -days 365 -sha256
    

Yeni oluşturulan sertifikayı doğrulama

  1. CRT dosyasının çıkışını yazdırmak ve içeriğini doğrulamak için aşağıdaki komutu kullanın:

    openssl x509 -in fabrikam.crt -text -noout
    

    Sertifika doğrulamanın ekran görüntüsü.

  2. Dizininizdeki dosyaları doğrulayın ve aşağıdaki dosyalara sahip olduğunuzdan emin olun:

    • contoso.crt
    • contoso.key
    • fabrikam.crt
    • fabrikam.key

Web sunucunuzun TLS ayarlarında sertifikayı yapılandırma

Web sunucunuzda fabrikam.crt ve fabrikam.key dosyalarını kullanarak TLS'yi yapılandırın. Web sunucunuz iki dosya alamıyorsa, OpenSSL komutlarını kullanarak bunları tek bir .pem veya .pfx dosyasında birleştirebilirsiniz.

IIS

Sertifikayı içeri aktarma ve IIS'de sunucu sertifikası olarak karşıya yükleme yönergeleri için bkz . NASıL YAPıLıR: Windows Server 2003'te Bir Web Sunucusuna İçeri Aktarılan Sertifikaları Yükleme.

TLS bağlama yönergeleri için bkz. IIS 7'de SSL'yi Ayarlama.

Apache

Aşağıdaki yapılandırma, Apache'de SSL için yapılandırılmış örnek bir sanal konaktır :

<VirtualHost www.fabrikam:443>
      DocumentRoot /var/www/fabrikam
      ServerName www.fabrikam.com
      SSLEngine on
      SSLCertificateFile /home/user/fabrikam.crt
      SSLCertificateKeyFile /home/user/fabrikam.key
</VirtualHost>

NGINX

Aşağıdaki yapılandırma, TLS yapılandırmasına sahip örnek bir NGINX sunucu bloğudur :

TLS ile NGINX'in ekran görüntüsü.

Otomatik olarak imzalanan sertifikayla sunucuya erişme

  1. Kök sertifikasını makinenizin güvenilir kök deposuna ekleyin. Web sitesine eriştiğinizde, sertifika zincirinin tamamının tarayıcıda göründüğünden emin olun.

    Güvenilen kök sertifikaların ekran görüntüsü.

    Note

    DNS, web sunucusu adını (bu örnekte, www.fabrikam.com) web sunucunuzun IP adresine işaret etmek üzere yapılandırılmalıdır. Aksi takdirde, adı çözümlemek için hosts dosyasını düzenleyebilirsiniz.

  2. Web sitenize göz atın ve tarayıcınızın adres kutusundaki kilit simgesine tıklayarak siteyi ve sertifika bilgilerini doğrulayın.

OpenSSL ile yapılandırmayı doğrulama

İsterseniz, sertifikayı doğrulamak için OpenSSL'yi de kullanabilirsiniz.

openssl s_client -connect localhost:443 -servername www.fabrikam.com -showcerts

OpenSSL sertifika doğrulamasının ekran görüntüsü.

Kök sertifikayı Application Gateway'in arka uç ayarlarına yükleyin

Application Gateway, güvenilir kök sertifikasını yalnızca .cer dosya uzantısını kullanan Base-64 kodlu X.509 sertifikası olarak kabul eder. Base-64 kodlu X.509 bir metin kodlamadır ve bu kodlama, openssl x509 bu makalenin başlarında contoso.crt dosyası için komutun zaten ürettiği kodlamadır.

contoso.crt zaten Base-64 kodlu formatta açık anahtarı içerdiğinden, dosya adını .crt'den.cer'a değiştirin. Bu isim değişikliği yalnızca dosya adı uzantısını değiştirir. Sertifikanın kodlamasını dönüştürmez ve burada dönüştürmeye gerek yoktur. Zaten Base-64 kodlanmamış bir sertifika, yeniden adlandırmak yerine gerçek bir kodlama dönüşümü gerektirir.

Azure portal

Güvenilir kök sertifikayı portaldan karşıya yüklemek için Arka Uç Ayarları'nı seçin ve Arka uç protokolündeHTTPS'yi seçin.

Portalı kullanarak sertifika ekleme işleminin ekran görüntüsü.

Azure PowerShell

Kök sertifikasını karşıya yüklemek için Azure CLI veya Azure PowerShell kullanabilirsiniz. Aşağıdaki Azure PowerShell adımları, uygulama geçidine güvenilir bir kök sertifikası eklemek, bir sağlık probu oluşturmak, arka uç ayarı oluşturmak, yönlendirme kuralı eklemek ve ardından değişiklikleri gateway'e uygulamaktır.

Note

Bu adımlar, rgOne kaynak grubundaki uygulama geçidi appgwv2, arka uç havuzu testbackendpool ve dinleyici basichttps'in zaten mevcut olduğunu varsayar. Adımları aynı PowerShell oturumunda sırayla çalıştırın, çünkü her adım, ilk adımın aldığı nesneyi kullanır $gw .

Adım 1: Güvenilir kök sertifikayı ekleyin

Bu adım, appgwv2 uygulama ağ geçidinin rgOne kaynak grubunda zaten bulunduğunu varsayar. Sonraki tüm adımların kullandığı ağ geçidini $gw değişkenine alır ve daha önce yeniden adlandırdığınız contoso.cer dosyasını yükler.

## Add the trusted root certificate to the Application Gateway

$gw=Get-AzApplicationGateway -Name appgwv2 -ResourceGroupName rgOne

Add-AzApplicationGatewayTrustedRootCertificate `
   -ApplicationGateway $gw `
   -Name CustomCARoot `
   -CertificateFile "C:\Users\surmb\Downloads\contoso.cer"

$trustedroot = Get-AzApplicationGatewayTrustedRootCertificate `
   -Name CustomCARoot `
   -ApplicationGateway $gw

Adım 2: Sağlık probunu oluşturun

Bu adım, 1. adımdaki değişkene sahip $gw olduğunuzu varsayar. www.fabrikam.com için bir HTTPS probu oluşturur ve bunu $probe değişkeninde depolar.

Add-AzApplicationGatewayProbeConfig `
  -ApplicationGateway $gw `
  -Name testprobe `
  -Protocol Https `
  -HostName "www.fabrikam.com" `
  -Path "/" `
  -Interval 15 `
  -Timeout 20 `
  -UnhealthyThreshold 3

$probe = Get-AzApplicationGatewayProbeConfig `
  -Name testprobe `
  -ApplicationGateway $gw

Adım 3: Arka uç ayarını oluşturun

Bu adım, önceki adımlardan , $trustedroot, ve $probe değişkenlere sahip $gwolduğunuzu varsayar. Güvenilir kök sertifikası ve probu kullanan arka uç ayarını oluşturur.

## Add the configuration to the HTTP Setting and don't forget to set the "hostname" field
## to the domain name of the server certificate as this will be set as the SNI header and
## will be used to verify the backend server's certificate. Note that TLS handshake will
## fail otherwise and might lead to backend servers being deemed as Unhealthy by the probes

Add-AzApplicationGatewayBackendHttpSettings `
  -ApplicationGateway $gw `
  -Name testbackend `
  -Port 443 `
  -Protocol Https `
  -Probe $probe `
  -TrustedRootCertificate $trustedroot `
  -CookieBasedAffinity Disabled `
  -RequestTimeout 20 `
  -HostName www.fabrikam.com

$backendhttp = Get-AzApplicationGatewayBackendHttpSettings `
  -Name testbackend `
  -ApplicationGateway $gw

Adım 4: Yönlendirme kuralını oluşturun

Bu adım, 1. adımdaki $backendhttp değişkenine ve 3. adımdaki değişkenine sahip olduğunuzu ve basichttps dinleyicisi ile $gw arka uç havuzunun ağ geçidinde zaten mevcut olduğunu varsayar.

$listener = Get-AzApplicationGatewayHttpListener `
   -Name basichttps `
   -ApplicationGateway $gw

$bepool = Get-AzApplicationGatewayBackendAddressPool `
  -Name testbackendpool `
  -ApplicationGateway $gw

Add-AzApplicationGatewayRequestRoutingRule `
  -ApplicationGateway $gw `
  -Name testrule `
  -RuleType Basic `
  -BackendHttpSettings $backendhttp `
  -HttpListener $listener `
  -BackendAddressPool $bepool

Adım 5: Uygulama geçitini güncelleyin

Önceki adımlar $gw nesneyi yalnızca bellekte değiştirir. Bu adım, 1. adımdan önceki tüm değişikliklerin uygulanmış olduğu $gw değişkenine sahip olduğunuzu varsayar ve bu değişiklikleri Azure'daki ağ geçidine işler.

Set-AzApplicationGateway -ApplicationGateway $gw

Uygulama ağ geçidi arka uç durumunu doğrulama

  1. Uygulama ağ geçidinizin Arka Uç Sağlığı görünümünü seçerek yoklamanın iyi durumda olup olmadığını denetleyin.
  2. HTTPS yoklaması için Durum'un Sağlıklı olduğunu görmeniz gerekir.

HTTPS yoklaması ekran görüntüsü.

Sonraki Adımlar

Application Gateway'de SSL\TLS hakkında daha fazla bilgi edinmek için bkz. Application Gateway ile TLS sonlandırma ve uçtan uca TLS'ye genel bakış.