我有一台ProGet服务器,当前使用SSL并需要客户端证书才能与之通信。我们希望能够直接从命令行或Visual Studio包管理器中使用此服务器。
通过浏览器访问时,查看存储库没有问题。在命令行上使用nuget.exe时,结果为403 Forbidden。我使用Fiddler来监控请求,它突出显示服务器要求提供客户端证书,Fiddler允许您注入所需的证书,然后nuget请求成功。
使用NuGet时是否可以提供客户端证书:
nuget install PackageName -Source https://myhost -Cert ???
或者使用这样的设置我们将不得不回到使用API密钥来获取访问权限?
我们是否可以在使用Visual Studio时提供证书?
答案 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命令进行配置。