【问题标题】:Get Nuget to pass a client certificate to a private ProGet server using SSL获取 Nuget 以使用 SSL 将客户端证书传递给私有 ProGet 服务器
【发布时间】:2017-02-07 17:47:29
【问题描述】:

我有一个 ProGet 服务器,它当前使用 SSL,需要客户端证书才能与其通信。我们希望能够直接从命令行或在 Visual Studio 包管理器中使用此服务器。

通过浏览器访问时,查看存储库没有问题。在命令行上使用 nuget.exe 时,结果为 403 Forbidden。我使用 Fiddler 监控请求,它突出显示服务器正在请求客户端证书,Fiddler 允许您注入所需的证书,然后 nuget 请求成功。

是否可以在使用 NuGet 时提供客户端证书:

nuget install PackageName -Source https://myhost -Cert ???

或者通过这样的设置,我们将不得不回退到使用 API 密钥来获得访问权限?

我们在使用 Visual Studio 时可以提供证书吗?

【问题讨论】:

  • 我也遇到了这个问题,有进展吗?

标签: ssl nuget ssl-certificate nuget-server


【解决方案1】:

从 NuGet 5.7.2 开始,您可以使用 client-cert feature

配置示例:

<configuration>
    ...
    <packageSources>
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
        <add key="Contoso" value="https://contoso.com/packages/" />
        <add key="Example" value="https://example.com/bar/packages/" />
    </packageSources>
    ...
    <clientCertificates>    
        <storeCert packageSource="Contoso"
                   storeLocation="currentUser"
                   storeName="my"
                   findBy="thumbprint" 
                   findValue="4894671ae5aa84840cc1079e89e82d426bc24ec6" />
        <fileCert packageSource="Example"
                  path=".\certificate.pfx" 
                  password="..." />
        <fileCert packageSource="Bar"
                  path=".\certificate.pfx" 
                  clearTextPassword="..." />
    </clientCertificates>
...
</configuration>

您也可以使用nuget client-certs CLI 命令进行配置。

【讨论】:

    【解决方案2】:

    我意识到几年后我从未发布过这个问题的答案。为了让 NuGet 使用证书,必须将证书作为基于证书的凭据添加到 Windows 中的凭据管理器中。然后,NuGet 在与匹配的 URL 通信时自动获取它。

    【讨论】:

      猜你喜欢
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多