Megosztás a következőn keresztül:


TLS/SSL-tanúsítványok használata az alkalmazáskódban

Az alkalmazáskódban hozzáférhet az Azure 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. Előfordulhat, hogy titkosítási feladatokat is el kell végeznie. Ez a cikk 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 ezen megközelítése az App Service Transport Layer Security (TLS) funkcióját használja, amely megköveteli, hogy az alkalmazás alapszintű vagy magasabb szintű legyen. Ha az alkalmazás az Ingyenes vagy a Megosztott szinten van, a tanúsítványfájlt belefoglalhatja az alkalmazás adattárába.

Ha engedélyezi, hogy az App Service kezelje a TLS/Secure Sockets Layer (SSL) tanúsítványokat, külön kezelheti a tanúsítványokat és az alkalmazáskódot, és megvédheti a bizalmas adatokat.

Előfeltételek

A cikk követéséhez lásd:

Az ujjlenyomat megkeresése

  1. Az Azure Portal bal oldali ablaktábláján válassza az App Services><alkalmazásnevét>.

  2. Az alkalmazás bal oldali ablaktábláján válassza a Tanúsítványok lehetőséget. Ezután válassza a Hozd magaddal a tanúsítványokat (.pfx) vagy a nyilvános kulcsú tanúsítványok (.cer) lehetőséget.

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

A tanúsítvány ujjlenyomatának másolását bemutató képernyőkép.

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ásbeállításhoz. Futtassa a következő parancsot az Azure Cloud Shell-ban:

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

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 vagy megújítása.

Tanúsítványok 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.

A C#-kódban a tanúsítvány ujjlenyomatával érheti el a tanúsítványt. 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
}

Java kódban a tanúsítványt az Windows-MY áruházból a Subject Common Name mezőjével érheti el. További információ: 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, olvassa el a Tanúsítvány betöltése fájlból 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 a File Transfer Protocol Secure (FTPS) használatával tölti fel a tanúsítványt. Bizalmas adatok, például magántanúsítványok forráskontrollon kívül tartása.

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ásba, töltse be az aktuális felhasználói profilt a Következő paranccsal a Cloud Shellben:

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 az Alapszintű vagy magasabb szinten 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

Ha tudni szeretné, hogyan tölthet be TLS/SSL-tanúsítványt egy fájlból Node.js, PHP, Python vagy Java nyelven, tekintse meg a megfelelő nyelv vagy webplatform dokumentációját.

Tanúsítványok 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:

Konténerplatform Nyilvános tanúsítványok Magántanúsítványok
Windows-tároló C:\appservice\certificates\public C:\appservice\certificates\private
Linux-tároló /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_PRIVATE_CERTS_PATH, WEBSITE_INTERMEDIATE_CERTS_PATH, WEBSITE_PUBLIC_CERTS_PATHés WEBSITE_ROOT_CERTS_PATH. Jobb, ha a tanúsítványok elérési útját környezeti változókkal hivatkozzuk a tanúsítvány elérési útjának kódba írá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 és a Windows Nano Server tárolók automatikusan betöltik a tanúsítványtárolóba a tanúsítványokat a következő helyen LocalMachine\My: . A tanúsítványok betöltéséhez kövesse a Windows-alkalmazások tanúsítványainak betöltése című témakörben látható mintát. Windows Nano-alapú tárolók esetén használja a fájl elérési útját a tanúsítvány fájlból való betöltése című témakörben látható módon.

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

Ha tudni szeretné, hogyan tölthet be TLS/SSL-tanúsítványt egy fájlból Node.js, PHP, Python vagy Java nyelven, tekintse meg a megfelelő nyelv vagy webplatform dokumentációját.

Tanúsítvány frissítése vagy megújítása

Amikor megújít egy tanúsítványt, és hozzáadja az alkalmazáshoz, ú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 elérhetőségéhez.

Ha megújít egy tanúsítványt az Azure 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 az alkalmazás szinkronizálódik 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.