当前位置: 首页 > 知识库问答 >
问题:

pip:cert失败,但是curl可以工作

赵锐
2023-03-14

我们在客户端上安装了我们的根证书,https连接适用于curl

但是如果我们尝试使用pip,它会失败:

Could not fetch URL https://installserver:40443/pypi/simple/pep8/:
There was a problem confirming the ssl certificate: 
<urlopen error [Errno 1] _ssl.c:499: error:14090086:SSL
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>

证书在客户端上。见:

(foo_fm_qti)foo_fm_qti@vis-work:~$ curl -v https://installserver:40443/pypi/simple/pep8/
* About to connect() to installserver port 40443 (#0)
*   Trying 127.0.0.1... connected
* Connected to installserver (127.0.0.1) port 40443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs/
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS alert, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using DHE-RSA-AES256-SHA
* Server certificate:
*    subject: C=DE; ST=Sachsen; L=Chemnitz; O=FOO-COM GmbH; OU=DV; CN=gray.foo-com.lan; emailAddress=info@foo-com.de
*    start date: 2013-09-09 10:47:50 GMT
*    expire date: 2019-05-24 10:47:50 GMT
*    subjectAltName: installserver matched
*    issuer: C=DE; ST=Sachsen; L=Chemnitz; O=FOO-COM GmbH; CN=FOO-COM Root CA; emailAddress=info@foo-com.de
*    SSL certificate verify ok.
> GET /pypi/simple/pep8/ HTTP/1.1

版本:PIP1.4。1.

共有3个答案

田硕
2023-03-14

对我来说,配置文件的解决方案都不起作用。我正在使用PIP1.5。Ubuntu 14.04上的4

@arjenve发布的命令在我的系统上也不起作用。我得到:/usr/bin/python:No-module-named\u-vendor。请求

使现代化

一个比我的第一个解决方案更好的解决方案是首先在系统上安装证书(对于我在ubuntu上这将是)

sudo cp ~/my_cert.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

上一个自动更新捆绑文件(检查/etc/ssl/certs/ca certificates.crt的底部,您现在应该看到与my_cert.crt中相同的证书)

现在将该路径导出到PIP\u CERT并将其添加到中。bashrc

echo export PIP_CERT=/etc/ssl/certs/ca-certificates.crt >> ~/.bashrc

旧的解决方法

我的解决方法是从/etc/ssl/certs/ca证书创建一个捆绑文件。crt和我公司的crt(只是连接了两个文件)。然后导出一个变量(放在my.bashrc上),如下所示:

export PIP_CERT=/my/path/to/the/bundle.crt
岑毅庵
2023-03-14

我的解决方案是下载cacert。pem来自http://curl.haxx.se/ca/cacert.pem并为cacert添加路径。pem~/。皮普/皮普。conf如guettli所建议

[global]
cert = /path/to/cacert.pem
羊舌志
2023-03-14

不幸的是pip不使用系统证书,但curl使用。

我找到了一个解决办法:

pip --cert /etc/ssl/certs/FOO_Root_CA.pem install pep8

这并不好(curl和其他库在没有添加参数的情况下找到证书),但是有效。

如果不想使用命令行参数,可以在~/中设置证书。皮普/皮普。形态:

[global]
cert = /etc/ssl/certs/Foo_Root_CA.pem
 类似资料:
  • 问题内容: 我们在客户端上安装了根证书,并且https连接适用于。 但是,如果我们尝试使用,它将失败: 证书在客户端上。看到: 版本:pip 1.4.1 问题答案: 不幸的是,pip不使用系统证书,但是curl使用。 我找到了解决方案: 这不是很好(curl和其他库在不添加参数的情况下找到证书),但是可以工作。 如果您不想使用命令行参数,可以在〜/ .pip / pip.conf中设置证书:

  • 我有一个JDK1.7项目,在我的maven repo中有一个本地jar的maven依赖项。 我无法使用Intellij构建项目,错误是找不到一个符号(该符号是一个从本地jar导入包的类) 但是我可以使用'mvn包‘成功地构建项目。 我花了很多时间寻找解决办法,我已经做了很多事情: 无效缓存 “mvn clean install”本地jar依赖项 在IntelliJ的maven配置中标记为“自动加载

  • 我可以做这个卷发: 从我正在处理的防火墙应用编程接口获取访问令牌。但是我试图让它在Python中使用请求工作: 我还拿到了401。我还尝试将负载转换为json,并在请求中执行。发布,但得到相同的结果。我做错了什么?curl是否发送一些我没有包含在请求中的默认头信息?谢谢

  • 问题内容: 我试图在HashMap中找到一个键。我可以使用’get’打印选定的键,但是在if语句中使用’containsKey’时,找不到该键。 我知道该键存在于Map中,但它一直返回false。有什么想法的人吗? 我的代码: 这是Location类的代码: 问题答案: 您必须确保该类已正确实现其和方法(文档)。也就是说,如果两个对象实际上相等,则它们应该共享一个公共哈希码,并且它们的方法应该返回

  • 我需要能够使用不同的eclipse项目运行同一个项目。我们需要将项目从jdk1.6升级到jdk1.8。所以我有jdk1.6版本的Eclipse Luna和1.8版本的Eclipse Neon。 我已经建立并运行了1.8版本。但是,当我尝试在Luna中构建1.6版本时,出现了以下错误: do project taskproxy:[ant]ant:无法将输出设置为${DIR\u LOC\u BUILD

  • 我能够登录我的本地(和远程服务器)与以下curl(我用Postman生成)...我可以登录成功使用另一个API客户端(Rest)与我试图在Postman中使用相同的参数/头/体。我已经关闭了SSL证书验证和发送邮递员令牌头设置(每其他堆栈溢出答案)... 卷曲: Curl-X POST\http://localhost:8080/api/user/login\-H'接受:应用程序/json'\-H