Azure App Service'te kodunuzda TLS/SSL sertifikası kullanma
Uygulama kodunuzda, App Service'e eklediğiniz genel veya özel sertifikalara erişebilirsiniz. Uygulama kodunuz bir istemci işlevi görür ve sertifika kimlik doğrulaması gerektiren bir dış hizmete erişebilir veya şifreleme görevleri gerçekleştirmesi gerekebilir. Bu nasıl yapılır kılavuzu, uygulama kodunuzda genel veya özel sertifikaların nasıl kullanılacağını gösterir.
Kodunuzda sertifika kullanma yaklaşımı, App Service'teki TLS işlevselliğinden yararlanarak uygulamanızın Temel katmanda veya daha yüksek bir katmanda olmasını gerektirir. Uygulamanız Ücretsiz veya Paylaşılan katmanındaysa, sertifika dosyasını uygulama deponuza ekleyebilirsiniz.
App Service'in TLS/SSL sertifikalarınızı yönetmesine izin verdiğinizde sertifikaları ve uygulama kodunuzu ayrı ayrı koruyabilir ve hassas verilerinizi koruyabilirsiniz.
Önkoşullar
Bu nasıl yapılır kılavuzunu izlemek için:
Parmak izini bulma
Azure portalında, soldaki menüden App Services<>uygulama adı'nı> seçin.
Uygulamanızın sol gezinti bölmesinde Sertifikalar'ı ve ardından Kendi sertifikalarınızı getir (.pfx) veya Ortak anahtar sertifikaları (.cer) seçeneğini belirleyin.
Kullanmak istediğiniz sertifikayı bulun ve parmak izini kopyalayın.
Sertifikayı erişilebilir hale getirme
Uygulama kodunuzdaki bir sertifikaya WEBSITE_LOAD_CERTIFICATES
erişmek için Cloud Shell'de aşağıdaki komutu çalıştırarak sertifikanın parmak izini uygulama ayarına ekleyin:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_CERTIFICATES=<comma-separated-certificate-thumbprints>
Tüm sertifikalarınızın erişilebilir olmasını sağlamak için değerini olarak *
ayarlayın.
Not
WEBSITE_LOAD_CERTIFICATES
ayarlandığında*
, daha önce eklenen tüm sertifikalara uygulama kodu tarafından erişilebilir. Daha sonra uygulamanıza bir sertifika eklerseniz, yeni sertifikayı uygulamanız için erişilebilir hale getirmek için uygulamayı yeniden başlatın. Daha fazla bilgi için bkz . Sertifikayı güncelleştirirken (yenilerken).
Windows uygulamalarında sertifika yükleme
Uygulama WEBSITE_LOAD_CERTIFICATES
ayarı, belirtilen sertifikaları Geçerli Kullanıcı\My içindeki Windows sertifika deposundaki Windows barındırılan uygulamanız için erişilebilir hale getirir.
C# kodunda sertifikaya sertifika parmak iziyle erişirsiniz. Aşağıdaki kod parmak izi E661583E8FABEF4C0BEF694CBC41C28FB81CD870
olan bir sertifika yükler.
using System;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
string certThumbprint = "E661583E8FABEF4C0BEF694CBC41C28FB81CD870";
bool validOnly = false;
using (X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser))
{
certStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certCollection = certStore.Certificates.Find(
X509FindType.FindByThumbprint,
// Replace below with your certificate's thumbprint
certThumbprint,
validOnly);
// Get the first cert with the thumbprint
X509Certificate2 cert = certCollection.OfType<X509Certificate2>().FirstOrDefault();
if (cert is null)
throw new Exception($"Certificate with thumbprint {certThumbprint} was not found");
// Use certificate
Console.WriteLine(cert.FriendlyName);
// Consider to call Dispose() on the certificate after it's being used, available in .NET 4.6 and later
}
Java kodunda, Konu Ortak Adı alanını kullanarak sertifikaya "Windows-MY" deposundan erişirsiniz (bkz . Ortak anahtar sertifikası). Aşağıdaki kod, özel anahtar sertifikasının nasıl yükleneceklerini gösterir:
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.security.PrivateKey;
...
KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, null);
Certificate cert = ks.getCertificate("<subject-cn>");
PrivateKey privKey = (PrivateKey) ks.getKey("<subject-cn>", ("<password>").toCharArray());
// Use the certificate and key
...
Windows sertifika deposu için desteklemeyen veya yetersiz destek sunmayan diller için bkz . Dosyadan sertifika yükleme.
Dosyadan sertifika yükleme
El ile yüklediğiniz bir sertifika dosyasını yüklemeniz gerekiyorsa, örneğin Git yerine FTPS kullanarak sertifikayı karşıya yüklemek daha iyidir. Özel sertifika gibi hassas verileri kaynak denetiminin dışında tutmalısınız.
Not
Windows'da ASP.NET ve ASP.NET Core, bir dosyadan sertifika yükleseniz bile sertifika deposuna erişmelidir. Bir Windows .NET uygulamasına sertifika dosyası yüklemek için Cloud Shell'de aşağıdaki komutla geçerli kullanıcı profilini yükleyin:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1
Kodunuzda sertifika kullanma yaklaşımı, App Service'teki TLS işlevselliğinden yararlanarak uygulamanızın Temel katmanda veya daha yüksek bir katmanda olmasını gerektirir.
Aşağıdaki C# örneği, uygulamanızdaki göreli bir yoldan genel sertifika yükler:
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var bytes = File.ReadAllBytes("~/<relative-path-to-cert-file>");
var cert = new X509Certificate2(bytes);
// Use the loaded certificate
Node.js, PHP, Python veya Java'daki bir dosyadan TLS/SSL sertifikası yüklemeyi görmek için ilgili dil veya web platformunun belgelerine bakın.
Linux/Windows kapsayıcılarında sertifika yükleme
Uygulama WEBSITE_LOAD_CERTIFICATES
ayarı, belirtilen sertifikaları Windows veya Linux özel kapsayıcılarınız (yerleşik Linux kapsayıcıları dahil) için dosya olarak erişilebilir hale getirir. Dosyalar aşağıdaki dizinler altında bulunur:
Kapsayıcı platformu | Ortak sertifikalar | Özel sertifikalar |
---|---|---|
Windows kapsayıcısı | C:\appservice\certificates\public |
C:\appservice\certificates\private |
Linux kapsayıcısı | /var/ssl/certs |
/var/ssl/private |
Sertifika dosya adları, sertifika parmak izleridir.
Not
App Service, sertifika yollarını Windows kapsayıcılarına aşağıdaki ortam değişkenleri WEBSITE_PRIVATE_CERTS_PATH
, , WEBSITE_INTERMEDIATE_CERTS_PATH
WEBSITE_PUBLIC_CERTS_PATH
ve WEBSITE_ROOT_CERTS_PATH
olarak ekler. Sertifika yollarının gelecekte değişmesi durumunda sertifika yolunu sabit kodlamak yerine ortam değişkenleriyle sertifika yoluna başvurmak daha iyidir.
Ayrıca, Windows Server Core ve Windows Nano Server kapsayıcıları sertifikaları otomatik olarak LocalMachine\My konumundaki sertifika deposuna yükler. Sertifikaları yüklemek için Windows uygulamalarında Sertifika yükle ile aynı deseni izleyin. Windows Nano tabanlı kapsayıcılar için bu dosya yollarını kullanın Sertifikayı doğrudan dosyadan yükleyin.
Aşağıdaki C# kodu, Bir Linux uygulamasında genel sertifikanın nasıl yükleneceklerini gösterir.
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var bytes = File.ReadAllBytes("/var/ssl/certs/<thumbprint>.der");
var cert = new X509Certificate2(bytes);
// Use the loaded certificate
Aşağıdaki C# kodu, Linux uygulamasına özel sertifika yükleme işlemini gösterir.
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var bytes = File.ReadAllBytes("/var/ssl/private/<thumbprint>.p12");
var cert = new X509Certificate2(bytes);
// Use the loaded certificate
Node.js, PHP, Python veya Java'daki bir dosyadan TLS/SSL sertifikası yüklemeyi görmek için ilgili dil veya web platformunun belgelerine bakın.
Sertifikayı güncelleştirirken (yenilerken)
Bir sertifikayı yenileyip uygulamanıza eklediğinizde, yeni bir parmak izi alır ve bu parmak izi de erişilebilir hale getirilmelidir. Nasıl çalıştığı sertifika türüne bağlıdır.
Genel veya özel sertifikayı el ile karşıya yüklerseniz:
- parmak izlerini içinde
WEBSITE_LOAD_CERTIFICATES
açıkça listeliyorsanız, yeni parmak izini uygulama ayarına ekleyin. - olarak ayarlanırsa
WEBSITE_LOAD_CERTIFICATES
*
, yeni sertifikayı erişilebilir hale getirmek için uygulamayı yeniden başlatın.
Key Vault'ta app service sertifikası gibi bir sertifikayı yenilerseniz, Key Vault'tan yapılan günlük eşitleme, uygulamanızı yenilenen sertifikayla eşitlerken gerekli güncelleştirmeyi otomatik olarak yapar.
WEBSITE_LOAD_CERTIFICATES
Yenilenen sertifikanızın eski parmak izini içeriyorsa, günlük eşitleme eski parmak izini yeni parmak iziyle otomatik olarak güncelleştirir.- olarak ayarlanırsa
WEBSITE_LOAD_CERTIFICATES
*
, günlük eşitleme yeni sertifikanın otomatik olarak erişilebilir olmasını sağlar.