wap-командлеты — ошибка добавления сертификата

Я делаю что-то не так, когда пытаюсь загрузить сертификат в Azure с помощью команды WAPPA, add- сертификат.

Это то, что я запускаю в powershell:

add-certificate -ServiceName myService -CertificateToDeploy ".\mycert.cer" -SubscriptionId 1234c88c-xxxx-xxxx-ad88-888c6ec5fc4a -Certificate (get-item cert:\CurrentUser\My\0E5A777B38724D85F415E011192D2EF888888884)

И эта ошибка продолжает появляться.

Add-Certificate: значение индекса недопустимо. В строке: 1 символ: 16 + добавить-сертификат ‹‹... (удалено повторение команды)... + CategoryInfo : CloseError: (:) [Добавить-сертификат], CryptographicException + FullyQualifiedErrorId : Microsoft.Samples.AzureManagementTools.PowerShell.Certificates.AddCertificateCommand

Мы уверены, что имя_службы и идентификатор подписки верны, и, глядя на все примеры, которые мы можем найти, похоже, что другие параметры также верны... но очевидно, что один (или оба) из них неверны. Мы просто не можем понять, почему.

Любые предложения приветствуются :-)


person wallismark    schedule 02.08.2011    source источник


Ответы (1)


Команда Add-Certificate предназначена для загрузки сертификата (обычно с закрытым ключом) в размещенную службу. IIRC, он попытается обернуть файл .cer оболочкой .pfx и загрузить его с помощью простого пароля. Это происходит потому, что портал требовал паролей с сертификатами (предполагалось, что люди загружали только сертификаты с закрытыми ключами). Что-то в этом пути кода может быть неправильным из-за криптографического исключения. Хотелось бы увидеть больше трассировки стека.

Если вы загрузите pfx (с экспортируемым ключом), это сработает? Это просто проблема из-за файла .cer и отсутствия пароля?

Еще одна мысль: параметр -ServiceName может быть чувствителен к регистру, поскольку он разрешается в DNS-имя (servicename.cloudapp.net). Можете ли вы убедиться, что используете все строчные буквы?

Изменить: еще одна мысль - попробуйте импортировать .cer в свою систему и использовать формат get-item cert:, чтобы снова обратиться к нему. Глядя на код, я не совсем уверен, что он будет работать правильно с указанным путем к файлу, если это не pfx. Я предполагаю, что импорт файла .cer с пустым паролем может завершиться ошибкой. Это только при запуске кода, который я вижу через свой внутренний (мысленный) отладчик:

    private byte[] GetCertificateData()
    {
        var cert = new X509Certificate2();
        byte[] certData = null;

        if (((this.CertificateToDeploy is PSObject) && ((PSObject)this.CertificateToDeploy).ImmediateBaseObject is X509Certificate) ||
            (this.CertificateToDeploy is X509Certificate))
        {
            cert = ((PSObject)this.CertificateToDeploy).ImmediateBaseObject as X509Certificate2;

            try
            {
                certData = cert.HasPrivateKey ? cert.Export(X509ContentType.Pfx) : cert.Export(X509ContentType.Pkcs12);
            }
            catch (CryptographicException)
            {
                certData = cert.HasPrivateKey ? cert.RawData : cert.Export(X509ContentType.Pkcs12);
            }
        }
        else
        {
            cert.Import(this.ResolvePath(this.CertificateToDeploy.ToString()), this.Password, X509KeyStorageFlags.Exportable);
            certData = cert.HasPrivateKey ? cert.Export(X509ContentType.Pfx, this.Password) : cert.Export(X509ContentType.Pkcs12);
        }

        return certData;
    }
person dunnry    schedule 02.08.2011
comment
Спасибо за ответ, все еще исследую, но я думаю, что проблема в том, что наш файл .cer не может быть экспортирован. При попытке сделать это вручную из плагина MMC опция экспорта «pfx» неактивна. Итак, мы сейчас проверяем у поставщика .cer, пометили ли они закрытый ключ как «экспортируемый». serverfault.com/questions/83143/convert-p7b-key-to-a-pfx< /а> - person wallismark; 08.08.2011
comment
Файл .cer является только открытым ключом. Иногда вам нужно импортировать их, но чаще вам нужен pfx, который является частью закрытого ключа. Если вам действительно нужен .cer, существует процесс его загрузки путем упаковки в контейнер pfx. - person dunnry; 08.08.2011