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.
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 *
: .
Feljegyzé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.
Feljegyzé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
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 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.
Feljegyzé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_PATH
WEBSITE_PUBLIC_CERTS_PATH
és WEBSITE_ROOT_CERTS_PATH
a 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 és a Windows Nano Server tárolók automatikusan betöltik 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
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é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_CERTIFICATES
ujjlenyomatokat 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.