Tanúsítványok beállítása az Azure CLI-hez az Azure Stack Hubon vagy az Azure Stack Development Kitben
A cikkben szereplő lépéseket követve állítsa be az Azure Command-Line Interface (CLI) szolgáltatást az Azure Stack Development Kit (ASDK) erőforrásainak Linux, Mac és Windows ügyfélplatformról történő kezeléséhez. Ezeket a lépéseket akkor is követheti, ha az Azure Stack Hub integrált rendszert használ leválasztott környezetben, vagy ha a tanúsítványokat nem egy hitelesítésszolgáltató bocsátotta ki a megbízható gyökérprogramban.
Ez a cikk a tanúsítványok lekéréséről és a távfelügyeleti gépen való megbízhatóságukról szól. Az Azure CLI telepítéséhez és a környezethez való csatlakozáshoz lásd: Az Azure CLI telepítése az Azure Stack Hubon.
Felkészülés az Azure CLI-re
Az Azure Stack Hub hitelesítésszolgáltatói főtanúsítványára van szükség az Azure CLI fejlesztői gépen való használatához. A tanúsítvány használatával kezelheti az erőforrásokat a parancssori felületen keresztül.
Az Azure Stack Hub hitelesítésszolgáltató főtanúsítványára akkor van szükség, ha a parancssori felületet az Azure Stack Hub-környezeten kívüli munkaállomásról használja.
A virtuálisgép-aliasok végpontja egy aliast biztosít, például "UbuntuLTS" vagy "Win2012Datacenter". Ez az alias egyetlen paraméterként hivatkozik egy lemezkép-közzétevőre, ajánlatra, termékváltozatra és verzióra a virtuális gépek üzembe helyezésekor.
Az alábbi szakaszok ismertetik, hogyan szerezheti be ezeket az értékeket.
Az Azure Stack Hub hitelesítésszolgáltató főtanúsítványának exportálása
Exportálja a hitelesítésszolgáltató főtanúsítványát. Az ASDK főtanúsítványának exportálása PEM formátumban:
Kérje le az Azure Stack Hub gyökértanúsítványának nevét:
- Jelentkezzen be az Azure Stack Hub felhasználói vagy az Azure Stack Hub felügyeleti portáljára.
- Válassza ki a zárolást a böngésző címsorában.
- Az előugró ablakban válassza a Kapcsolat biztonságos lehetőséget.
- A Tanúsítvány ablakban válassza a Tanúsítvány elérési útja lapot.
- Jegyezze fel az Azure Stack Hub gyökértanúsítványának nevét, például:
*.<locale>.<FQDN>
Hozzon létre egy Windows rendszerű virtuális gépet az Azure Stack Hubon.
Jelentkezzen be a virtuális gépre, nyisson meg egy emelt szintű PowerShell-parancssort, majd futtassa a következő szkriptet:
$label = "*.<locale>.<FQDN> from step 1" Write-Host "Getting certificate from the current user trusted store with subject CN=$label" $root = Get-ChildItem Cert:\CurrentUser\Root | Where-Object Subject -eq "CN=$label" | select -First 1 if (-not $root) { Write-Error "Certificate with subject CN=$label not found" return } Write-Host "Exporting certificate" Export-Certificate -Type CERT -FilePath root.cer -Cert $root
Linux esetén a következő parancsra is szükség van:
export REQUESTS_CA_BUNDLE=~/.local/lib/python3.9/site-packages/certifi/cacert.pem # RECOMMENDED: set the env var automatically for your subsequent sessions echo 'export REQUESTS_CA_BUNDLE=~/.local/lib/python3.9/site-packages/certifi/cacert.pem' >> ~/.bash_profile
Másolja a tanúsítványt a helyi gépre.
A virtuális gép aliasvégpontjának beállítása
Beállíthat egy nyilvánosan elérhető végpontot, amely egy virtuálisgép-aliasfájlt üzemeltet. A virtuálisgép-aliasfájl egy JSON-fájl, amely egy kép köznapi nevét adja meg. A nevet akkor használja, ha virtuális gépet helyez üzembe Azure CLI-paraméterként.
Ha egyéni rendszerképet tesz közzé, jegyezze fel a közzététel során megadott közzétevői, ajánlati, termékváltozati és verzióinformációkat. Ha a piactérről származó rendszerképről van szó, az információkat a
Get-AzureVMImage
parancsmaggal tekintheti meg.Töltse le a mintafájlt a GitHubról.
Hozzon létre egy tárfiókot az Azure Stack Hubban. Ha ez megtörtént, hozzon létre egy blobtárolót. Állítsa a hozzáférési szabályzatot "nyilvános" értékre.
Töltse fel a JSON-fájlt az új tárolóba. Ha ez megtörtént, megtekintheti a blob URL-címét. Válassza ki a blob nevét, majd válassza ki az URL-címet a blob tulajdonságai közül.
A tanúsítvány megbízhatósága
Az Azure CLI ASDK-val való használatához megbízhatónak kell lennie a hitelesítésszolgáltató főtanúsítványában a távoli gépen.
Keresse meg a tanúsítvány helyét a számítógépen. A hely a Python telepítésének helyétől függően változhat.
A hely megkereséséhez nyisson meg egy CMD-parancssort vagy egy emelt szintű PowerShell-parancssort, és írja be a következőt:
az --version
. A verzió és a Python helye megjelenik a parancssorban.azure-cli 2.30.0 core 2.30.0 telemetry 1.0.6 Python location 'C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe' Extensions directory 'C:\Users\username\.azure\cliextensions' Python (Windows) 3.8.9 (tags/v3.8.9:a743f81, Apr 6 2021, 13:22:56) [MSC v.1928 32 bit (Intel)] Legal docs and information: aka.ms/AzureCliLegal Your CLI is up-to-date. Please let us know how we are doing: https://aka.ms/azureclihats and let us know if you're interested in trying out our newest features: https://aka.ms/CLIUXstudy
Váltson arra a könyvtárra, ahol az Azure CLI telepítette a Pythont. Például használja a helyet a 2. lépésben.
cd "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\
Írja be a következő parancsot:
.\python -c "import certifi; print(certifi.where())"
Ez visszaadja a tanúsítvány helyének elérési útját a számítógépen. Az adott elérési út az operációs rendszertől és a Telepített Python-verziótól függ. Például:
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem
Jegyezze fel a tanúsítvány helyét. A következő lépésben az elérési utat fogja használni.
Bízzon meg az Azure Stack Hub hitelesítésszolgáltató főtanúsítványában úgy, hogy hozzáfűzi azt a meglévő Python-tanúsítványhoz.
$cerFile = "<Fully qualified path to the cer certificate exported from ` your Azure Stack Hub and saved. For example: C:\Users\user1\Downloads\root.cer" $pythonCertStore = <result from step 4> $cerDir = Split-Path -Parent $cerFile $pemFile = "$cerDir\root.pem" Write-Host "Converting certificate to PEM format at $pemFile" certutil -encode $cerFile $pemFile $root = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $root.Import($pemFile) # X509Certificate2.Thumbprint calculates SHA1 hash of the public key. You can get sha1 of the pem file by using openssl, # e.g. openssl x509 -noout -fingerprint -sha1 -inform pem -in ./root.pem # Alternatively, 'Get-FileHash' gives the same value (without ':') for the corresponding cer file # Since the thumbprint is a unique value for the certificate, it is commonly used to find a particular certificate in a certificate store Write-Host "Extracting required information from the cert file" $md5Hash = (Get-FileHash -Path $cerFile -Algorithm MD5).Hash.ToLower() $sha1Hash = (Get-FileHash -Path $cerFile -Algorithm SHA1).Hash.ToLower() $sha256Hash = (Get-FileHash -Path $cerFile -Algorithm SHA256).Hash.ToLower() $issuerEntry = [string]::Format("# Issuer: {0}", $root.Issuer) $subjectEntry = [string]::Format("# Subject: {0}", $root.Subject) $labelEntry = [string]::Format("# Label: {0}", $root.Subject.Split('=')[-1]) $serialEntry = [string]::Format("# Serial: {0}", $root.GetSerialNumberString().ToLower()) $md5Entry = [string]::Format("# MD5 Fingerprint: {0}", $md5Hash) $sha1Entry = [string]::Format("# SHA1 Fingerprint: {0}", $sha1Hash) $sha256Entry = [string]::Format("# SHA256 Fingerprint: {0}", $sha256Hash) $certText = (Get-Content -Path $pemFile -Raw).ToString().Replace("`r`n","`n") $rootCertEntry = "`n" + $issuerEntry + "`n" + $subjectEntry + "`n" + $labelEntry + "`n" + ` $serialEntry + "`n" + $md5Entry + "`n" + $sha1Entry + "`n" + $sha256Entry + "`n" + $certText Write-Host "Adding the certificate content to Python Cert store" Add-Content $pythonCertStore $rootCertEntry Write-Host "Python Cert store was updated to allow the Azure Stack Hub CA root certificate"
Az Azure CLI telepítésével és csatlakoztatásával kapcsolatos utasításokért lásd: Az Azure CLI telepítése az Azure Stack Hubon.