首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wap cmdlets添加证书错误

wap cmdlets添加证书错误
EN

Stack Overflow用户
提问于 2011-08-02 06:29:38
回答 1查看 750关注 0票数 1

当我试图使用add-certificate.命令将证书上传到Azure时,我做错了一些事情

这就是我在powershell中运行的内容:

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

这就是不断出现的错误。

附加证书:索引值无效.行:1字符:16+附加证书<<.(删除命令重复).+ CategoryInfo : CloseError:(:)加-证书,CryptographicException + FullyQualifiedErrorId :FullyQualifiedErrorId

我们确信serviceName和subscriptionId是正确的,查看所有的示例,我们可以发现其他参数看起来都是正确的,因为well...but显然不是其中一个(或两者都是)。我们只是不明白为什么。

如有任何建议,不胜感激:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-02 16:02:34

“添加证书”命令用于将证书(通常带有私钥)上载到托管服务。它将尝试将.cer文件包装成一个.pfx包装器,并使用一个简单的密码上传该文件。它这样做是因为门户过去需要有证书的密码(它假设用户只上传带有私钥的证书)。基于密码异常,该代码路径中的某些内容可能是错误的。我希望有更多的堆栈跟踪可以看到。

如果你上传一个pfx (带有可出口的密钥),这起作用吗?这仅仅是因为.cer文件和密码的缺乏而造成的问题吗?

另一个想法是:-ServiceName参数可能是区分大小写的,因为它解析为DNS名称(servicename.cloudapp.net)。你能确保你使用的都是小写吗?

编辑:另一个想法-尝试将.cer导入您的系统,并使用get-item cert: format再次引用它。在查看代码时,我不完全确定当它不是pfx时指定的文件路径是否能正确工作。我猜导入带有空白密码的.cer文件可能会失败。这只是通过运行我通过内部(心智)调试器看到的代码:

代码语言:javascript
复制
    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;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6908093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档