TLS-/SSL-tanúsítvány használata a kódban az Azure App Service-ben

Az alkalmazáskódban hozzáférhet az App Service-hez hozzáadott nyilvános vagy magántanúsítványokhoz. Az alkalmazáskód ügyfélként működhet, és hozzáférhet egy tanúsítványhitelesítést igénylő külső szolgáltatáshoz, vagy kriptográfiai feladatokat kell végrehajtania. Ez az útmutató bemutatja, hogyan használhat nyilvános vagy magántanúsítványokat az alkalmazáskódban.

A tanúsítványok kódban való használatának ez a megközelítése az App Service TLS funkcióját használja, amely megköveteli, hogy az alkalmazás alapszintű vagy magasabb szintű legyen. Ha az alkalmazás ingyenes vagy megosztott szinten van, felveheti a tanúsítványfájlt az alkalmazás adattárába.

Ha engedélyezi az App Service-nek a TLS/SSL-tanúsítványok kezelését, külön kezelheti a tanúsítványokat és az alkalmazáskódot, és megvédheti a bizalmas adatokat.

Előfeltételek

Az útmutató követéséhez kövesse az alábbi útmutatót:

Az ujjlenyomat megkeresése

Az Azure Portal bal oldali menüjében válassza az App Services><alkalmazásnevét.>

Az alkalmazás bal oldali navigációs sávjáról válassza a Tanúsítványok lehetőséget, majd válassza a Saját tanúsítványok (.pfx) vagy a Nyilvános kulcsú tanúsítványok (.cer) lehetőséget.

Keresse meg a használni kívánt tanúsítványt, és másolja ki az ujjlenyomatot.

Copy the certificate thumbprint

A tanúsítvány akadálymentesítése

Ha hozzá szeretne férni egy tanúsítványhoz az alkalmazás kódjában, adja hozzá az ujjlenyomatát az WEBSITE_LOAD_CERTIFICATES alkalmazás beállításához a Következő parancs futtatásával a Cloud Shellben:

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_CERTIFICATES=<comma-separated-certificate-thumbprints>

Ha az összes tanúsítványt elérhetővé szeretné tenni, állítsa az értéket a következőre *: .

Megjegyzés:

Ha WEBSITE_LOAD_CERTIFICATES be van állítva *, az összes korábban hozzáadott tanúsítvány elérhető az alkalmazáskód számára. Ha később hozzáad egy tanúsítványt az alkalmazáshoz, indítsa újra az alkalmazást, hogy az új tanúsítvány elérhető legyen az alkalmazás számára. További információ: Tanúsítvány frissítése (megújítása) esetén.

Tanúsítvány betöltése Windows-alkalmazásokban

Az WEBSITE_LOAD_CERTIFICATES alkalmazásbeállítás elérhetővé teszi a megadott tanúsítványokat a Windows-tanúsítványtárolóban található Windows-alapú alkalmazás számára az Aktuális felhasználó\Saját fájlban.

C#-kódban a tanúsítványt a tanúsítvány ujjlenyomatával érheti el. Az alábbi kód betölt egy ujjlenyomattal rendelkező tanúsítványt E661583E8FABEF4C0BEF694CBC41C28FB81CD870.

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
}

A Java-kódban a "Windows-MY" áruházból érheti el a tanúsítványt a Tulajdonos köznév mező használatával (lásd : Nyilvános kulcsú tanúsítvány). A következő kód bemutatja, hogyan tölthet be titkos kulcsú tanúsítványt:

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

Az olyan nyelvek esetében, amelyek nem támogatják vagy nem támogatják a Windows tanúsítványtárolót, tekintse meg a tanúsítvány fájlból való betöltése című témakört.

Tanúsítvány betöltése fájlból

Ha manuálisan kell feltöltenie egy tanúsítványfájlt, jobb, ha például a Git helyett FTPS használatával tölti fel a tanúsítványt. A bizalmas adatokat, például a magántanúsítványt nem szabad forráskontroll alá helyezni.

Megjegyzés:

ASP.NET és ASP.NET Core-nak Windows rendszeren akkor is hozzá kell férnie a tanúsítványtárolóhoz, ha egy fájlból tölt be tanúsítványt. Ha tanúsítványfájlt szeretne betölteni egy Windows .NET-alkalmazásban, töltse be az aktuális felhasználói profilt a Cloud Shellben a következő paranccsal:

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1

A tanúsítványok kódban való használatának ez a megközelítése az App Service TLS funkcióját használja, amely megköveteli, hogy az alkalmazás alapszintű vagy magasabb szintű legyen.

Az alábbi C#-példa betölt egy nyilvános tanúsítványt az alkalmazás relatív elérési útjáról:

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

A TLS/SSL-tanúsítvány Node.js- , PHP-, Python- vagy Java-fájlból való betöltésének módjáról a megfelelő nyelv vagy webplatform dokumentációjában olvashat.

Tanúsítvány betöltése Linux-/Windows-tárolókban

Az WEBSITE_LOAD_CERTIFICATES alkalmazásbeállítás fájlként elérhetővé teszi a megadott tanúsítványokat a Windows vagy a Linux egyéni tárolói számára (beleértve a beépített Linux-tárolókat is). A fájlok a következő könyvtárakban találhatók:

Tárolóplatform Nyilvános tanúsítványok Privát tanúsítványok
Windows-tárolók C:\appservice\certificates\public C:\appservice\certificates\private
Linux-tárolók /var/ssl/certs /var/ssl/private

A tanúsítványfájl nevei a tanúsítvány ujjlenyomatai.

Megjegyzés:

Az App Service a következő környezeti változókként injektálja a tanúsítvány elérési útját a Windows-tárolókba, WEBSITE_INTERMEDIATE_CERTS_PATHWEBSITE_PUBLIC_CERTS_PATHés WEBSITE_ROOT_CERTS_PATHa következő környezeti változókkéntWEBSITE_PRIVATE_CERTS_PATH. Jobb, ha a tanúsítvány elérési útját a környezeti változókkal együtt hivatkozik a tanúsítvány elérési útjának bekonfigurálása helyett arra az esetre, ha a tanúsítvány elérési útjai a jövőben megváltoznak.

Emellett a Windows Server Core-tárolók automatikusan betöltik a tanúsítványtárolóba a Tanúsítványtárba a LocalMachine\My fájlban. A tanúsítványok betöltéséhez kövesse ugyanazt a mintát, mint a Tanúsítvány betöltése a Windows-alkalmazásokban. Windows Nano-alapú tárolók esetén használja ezeket a fájlútvonalakat : Töltse be a tanúsítványt közvetlenül a fájlból.

Az alábbi C#-kód bemutatja, hogyan tölthető be nyilvános tanúsítvány linuxos alkalmazásba.

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

Az alábbi C#-kód bemutatja, hogyan tölthet be magántanúsítványokat Linux-alkalmazásokba.

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

A TLS/SSL-tanúsítvány Node.js- , PHP-, Python- vagy Java-fájlból való betöltésének módjáról a megfelelő nyelv vagy webplatform dokumentációjában olvashat.

Tanúsítvány frissítésekor (megújítása)

Amikor megújít egy tanúsítványt, és hozzáadja az alkalmazáshoz, egy új ujjlenyomatot kap, amelyet szintén elérhetővé kell tenni. A működés módja a tanúsítvány típusától függ.

Ha manuálisan tölti fel a nyilvános vagy magántanúsítványt:

  • Ha kifejezetten az WEBSITE_LOAD_CERTIFICATESujjlenyomatokat listázta, adja hozzá az új ujjlenyomatot az alkalmazásbeállításhoz.
  • Ha WEBSITE_LOAD_CERTIFICATES be van állítva *, indítsa újra az alkalmazást az új tanúsítvány akadálymentesítéséhez.

Ha megújít egy tanúsítványt a Key Vaultban, például egy App Service-tanúsítvánnyal, a Key Vault napi szinkronizálása automatikusan elvégzi a szükséges frissítést, amikor szinkronizálja az alkalmazást a megújított tanúsítvánnyal.

  • Ha WEBSITE_LOAD_CERTIFICATES a megújított tanúsítvány régi ujjlenyomatát tartalmazza, a napi szinkronizálás automatikusan frissíti a régi ujjlenyomatot az új ujjlenyomatra.
  • Ha WEBSITE_LOAD_CERTIFICATES be van állítva *, a napi szinkronizálás automatikusan elérhetővé teszi az új tanúsítványt.

More resources