Настройка сертификатов для Azure CLI в Azure Stack Hub или пакете средств разработки Azure Stack
Следуйте приведенным здесь инструкциям, чтобы настроить интерфейс командной строки Azure (CLI) для управления ресурсами Пакета средств разработки Azure Stack (ASDK) на клиентских платформах Linux, Mac и Windows. Эти действия также можно выполнить, если вы используете интегрированную систему Azure Stack Hub в отключенной среде или если сертификаты не выдаются центром сертификации в программе доверенных корневых компонентов.
В этой статье рассматриваются получение сертификатов и их доверие на компьютере удаленного управления. Сведения об установке Azure CLI и подключении к среде см. в статье "Установка Azure CLI в Azure Stack Hub".
Подготовка к использованию Azure CLI
Чтобы использовать Azure CLI на компьютере разработки, вам потребуется корневой сертификат ЦС для Azure Stack Hub. Этот сертификат используется для управления ресурсами с помощью CLI.
Корневой сертификат ЦС Azure Stack Hub требуется, если вы используете ИНТЕРФЕЙС командной строки с рабочей станции за пределами среды Azure Stack Hub.
Конечная точка псевдонимов виртуальной машины предоставляет псевдоним, например UbuntuLTS или Win2012Datacenter. Этот псевдоним ссылается на издателя образа, предложение, номер SKU и версию как один параметр при развертывании виртуальных машин.
В разделах ниже описано, как получить эти значения.
Экспорт корневого сертификата ЦС Azure Stack Hub
Экспортируйте корневой сертификат ЦС. Чтобы экспортировать корневой сертификат ASDK в формате PEM:
Получите имя корневого сертификата Azure Stack Hub, выполнив следующее.
- Войдите на портал администрирования Azure Stack Hub или пользователя Azure Stack Hub.
- Выберите блокировку в адресной строке браузера.
- Во всплывающем окне выберите "Подключение безопасно".
- В окне "Сертификат" выберите вкладку "Путь сертификации ".
- Запишите имя корневого сертификата Azure Stack Hub, например
*.<locale>.<FQDN>

Войдите на виртуальную машину, откройте командную строку PowerShell с повышенными правами и выполните следующий скрипт:
$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 Write-Host "Converting certificate to PEM format" certutil -encode root.cer root.pemСкопируйте сертификат на локальный компьютер.
Настройка конечной точки псевдонима виртуальной машины
Вы можете настроить общедоступную конечную точку с файлом псевдонимов виртуальных машин. В файле псевдонимов виртуальных машин хранится общее имя образа в JSON-формате. Имя будет использоваться при развертывании виртуальной машины в качестве параметра Azure CLI.
Когда вы публикуете пользовательский образ, запишите сведения об издателе, предложении, номере SKU и версии, которые указываете во время публикации. Если используется образ из Marketplace, вы можете просмотреть эти сведения с помощью командлета
Get-AzureVMImage.Скачайте образец файла с сайта GitHub.
Создайте учетную запись хранения в Azure Stack Hub. Затем создайте контейнер BLOB-объектов. Установите для политики доступа значение public.
Отправьте JSON-файл в только что созданный контейнер. После этого просмотрите URL-адрес большого двоичного объекта. Выберите имя большого двоичного объекта, затем из панели свойств большого двоичного объекта — URL-адрес.
Доверие сертификату
Чтобы использовать Azure CLI с ASDK, необходимо доверять корневому сертификату ЦС на удаленном компьютере.
Найдите расположение сертификата на своем компьютере. Это расположение зависит от того, куда вы установили Python.
Чтобы найти расположение, откройте командную строку CMD или запрос PowerShell с повышенными привилегиями и введите:
az --versionВ командной строке появится расположение версии и Python.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Перейдите в каталог, в котором Azure CLI установил Python. Например, использование расположения на шаге 2.
cd "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Введите следующую команду:
.\python -c "import certifi; print(certifi.where())"Будет возвращен путь к расположению сертификата на компьютере. Конкретный путь зависит от операционной системы и установленной версии Python. Пример:
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pemЗапомните расположение сертификата. Вы будете использовать путь на следующем шаге.
Чтобы настроить доверие для корневого сертификата ЦС Azure Stack Hub, добавьте его к существующему сертификату Python.
$pemFile = "<Fully qualified path to the PEM certificate exported from ` your Azure Stack Hub and saved. For example: C:\Users\user1\Downloads\root.pem." $pythonCertStore = <result from step 4> $root = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $root.Import($pemFile) Write-Host "Extracting required information from the cert file" $md5Hash = (Get-FileHash -Path $pemFile -Algorithm MD5).Hash.ToLower() $sha1Hash = (Get-FileHash -Path $pemFile -Algorithm SHA1).Hash.ToLower() $sha256Hash = (Get-FileHash -Path $pemFile -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"
Инструкции по установке и подключению с помощью Azure CLI см. в статье "Установка Azure CLI в Azure Stack Hub".