Özel kök CA ile Azure Application Gateway otomatik olarak imzalanan sertifika 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 sağlama, v1 SKU'da gerekli olan kimlik doğrulama sertifikalarının (tek tek Yaprak sertifikaları) kullanımını kaldırır. Kök sertifika , Base-64 ile kodlanmış X.509() şeklindedir. CER) arka uç sertifika sunucusundan kök sertifikayı biçimlendirin. 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) tarafından imzalandıysa web sitenizin sertifikasına varsayılan olarak güvenir. Bu durumda kök sertifikayı açıkça karşıya yüklemeniz gerekmez. 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.

Not

Kendi kendine oluşturulan sertifikalara varsayılan olarak güvenilmez ve bakımını yapmak zor olabilir. Ayrıca, güçlü olmayan eski karma 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 kullanabilirsiniz.

  1. Tek tıklamayla ö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ıyla, Kök sertifikayı (. CER) dosyasını ağ geçidinizin Arka Uç Ayarına ve karşılık gelen sertifika zincirine (. PFX) ile arka uç sunucusuna gidin. 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. Bunu tamamen kendi başınıza yapmak istiyorsanız bu makaledeki yönergeleri izlemeye devam edin.

Bu makalede şunları nasıl yapacağınızı öğreneceksiniz:

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

Önkoşullar

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, şifrelenmiş bir anahtar oluşturur.

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

Kök Sertifika oluşturma ve otomatik olarak imzalama

  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. İstendiğinde, kök anahtarın parolasını ve özel CA'nın Ülke/Bölge, Eyalet, Kuruluş, OU gibi kuruluş bilgilerini ve tam etki alanı adını yazın (bu, verenin etki alanıdır).

    create root certificate

  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. Bunu sunucu sertifikanızı imzalamak için kullanacaksınız.

Sunucu sertifikası oluşturma

Ardından OpenSSL kullanarak bir sunucu sertifikası oluşturacaksınız.

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 istenirken CA'ya verilen bir ortak anahtardır. CA, bu özel istek için sertifikayı oluşturur.

Not

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

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

    openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr
    
  2. İstendiğinde kök anahtarın parolasını ve özel CA'nın kuruluş bilgilerini yazın: Ülke/Bölge, Eyalet, Kuruluş, OU ve tam etki alanı adı. Bu, web sitesinin etki alanıdır ve verenden farklı olmalıdır.

    Server certificate

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
    

    Certificate verification

  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ıyla 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 :

NGINX with TLS

Yapılandırmayı doğrulamak için sunucuya erişme

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

    Trusted root certificates

    Not

    DNS'nin web sunucusu adını (bu örnekte) www.fabrikam.comweb sunucunuzun IP adresine işaret etmek üzere yapılandırıldığı varsayılı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 certificate verification

Kök sertifikayı Application Gateway'in HTTP Ayarlar yükleyin

Sertifikayı Application Gateway'e yüklemek için .crt sertifikasını Base-64 kodlanmış .cer biçiminde dışarı aktarmanız gerekir. .crt zaten base-64 kodlanmış biçiminde ortak anahtarı içerdiğinden, dosya uzantısını .crt olan .cer olarak yeniden adlandırmanız yeter.

Azure portal

Güvenilir kök sertifikayı portaldan karşıya yüklemek için Arka uç Ayarlar seçin ve Arka uç protokolünde HTTPS'yiseçin.

Screenshot of adding a certificate using the portal.

Azure PowerShell

Kök sertifikayı karşıya yüklemek için Azure CLI veya Azure PowerShell de kullanabilirsiniz. Aşağıdaki kod bir Azure PowerShell örneğidir.

Not

Aşağıdaki örnek, uygulama ağ geçidine güvenilir bir kök sertifika ekler, yeni bir HTTP ayarı oluşturur ve arka uç havuzunun ve dinleyicinin zaten var olduğunu varsayarak yeni bir kural ekler.

## 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

## Get the listener, backend pool and probe

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

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

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

## 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

## Get the configuration and update the Application Gateway

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

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

Set-AzApplicationGateway -ApplicationGateway $gw

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

  1. Yoklamanın iyi durumda olup olmadığını denetlemek için uygulama ağ geçidinizin Arka Uç Sistem Durumu görünümüne tıklayın.
  2. HTTPS yoklaması için Durum'un Sağlıklı olduğunu görmeniz gerekir.

HTTPS probe

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ış.