让Nuget使用SSL

时间:2017-02-07 17:47:29

标签: ssl nuget ssl-certificate nuget-server

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

我意识到几年后,我从未发布过该问题的答案。为了使NuGet使用证书,必须将证书作为基于证书的证书添加到Windows中的证书管理器中。然后,当与匹配的URL通信时,NuGet会自动选择它。

答案 1 :(得分:0)

从NuGet 5.7.2开始,您可以使用客户端证书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命令进行配置。