我安装了 python-certifi-win32 包,之后,当我导入任何内容或 pip install 任何内容时,出现以下错误,失败并出现 PermissionError 的最终错误。
我尝试重新启动盒子。它不起作用。我无法卸载该软件包,因为 pip 也出错了。
我无法弄清楚发生此错误的确切原因。它似乎不是特定于代码的,似乎与我安装的库有关
PS C:\Users\visha\PycharmProjects\master_test_runner> pip install python-certifi-win32
Traceback (most recent call last):
File "C:\Users\visha\AppData\Local\Programs\Python\Python310\lib\importlib\_common.py", line 89, in _tempfile
os.write(fd, reader())
File "C:\Users\visha\AppData\Local\Programs\Python\Python310\lib\importlib\abc.py", line 371, in read_bytes
with self.open('rb') as strm:
File "C:\Users\visha\AppData\Local\Programs\Python\Python310\lib\importlib\_adapters.py", line 54, in open
raise ValueError()
ValueError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\visha\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\visha\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
exec(code, …Run Code Online (Sandbox Code Playgroud) 对很长的帖子道歉,但我真的想彻底......
我有一个专门的网站,作为在远程服务器上运行的各种环境模型之间交换数据并在不同类型的操作系统(Linux,MacOS和Windows)上运行的桥梁.基本上每个服务器都可以将数据文件上载/下载到网站,然后使用文件在另一个服务器上使用不同的模型进行进一步处理.
网站具有一些基本保护(使用LetsEncrypt证书的IP过滤,密码和SSL).所有远程服务器都可以通过我们创建的简单Web界面访问站点并上传/下载数据.
现在我们尝试使用简单的python(2.7)守护进程(基于请求模块)自动化一些交换.守护程序监视某些文件夹并将内容上载到网站.
守护进程在所有远程服务器上都能正常运行,但运行Windows 7 Enterprise 64bit的远程服务器除外.此服务器安装了Python 2.7.13以及以下软件包:DateTime(4.1.1),psutil(5.2.0),pytz(2016.10),requests(2.13.0),zope.interface(4.3.3).
从此服务器,SSL连接可通过Web浏览器正常工作,但守护程序始终返回:
raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
Run Code Online (Sandbox Code Playgroud)
这是我们到目前为止所尝试的:
我们应该在Windows服务器上查看哪些其他设置来尝试解决问题?它可以是防火墙设置,以某种方式允许浏览器SSL连接但阻止python守护程序?
更新
运行产生错误的Windows远程服务器的组织将替换代理级别的所有SSL证书.
他们的IT人员通过将我们网站的URL添加到其代理设置上的"直通"网站列表来解决我们的问题.
这有效,现在很好.但是我想知道我们是否可以直接在python中处理证书替换...
我已经安装了 Anaconda 并且在尝试通过 Jupyter Notebooks 进行 API 调用时遇到了 SSL 问题:
import requests
import certifi
r = requests.get('https://github.com/')
print(r)
Run Code Online (Sandbox Code Playgroud)
这首先产生了 SSL 连接错误。经过广泛的搜索和我们 IT 部门的帮助,我可以解决这个问题。这里的解决方案是将公司根证书添加到 certifi 证书存储中。
现在对于其他请求,不幸的是我仍然遇到同样的问题。使用 google2pandas 包调用 Google Analytics API 的示例代码:
from google2pandas import *
query = {
'reportRequests': [{
'viewId' : 37616054,
'dateRanges': [{
'startDate' : '8daysAgo',
'endDate' : 'today'}],
'dimensions' : [
{'name' : 'ga:date'},
{'name' : 'ga:pagePath'},
{'name' : 'ga:browser'}],
'metrics' : [
{'expression' : 'ga:pageviews'}],
'dimensionFilterClauses' : [{
'operator' : 'AND',
'filters' : [
{'dimensionName' …Run Code Online (Sandbox Code Playgroud) 我想编写webservices来使用Zeep在Python中交换数据.我只能使用我的证书访问服务.我有PFX证书,但我将其转换为两个.pem文件.
我的代码:
from zeep import Client
from zeep.wsse.signature import Signature
import requests
from requests import Session
key_filename ='/.files/cert.key.pem'
cert_filename = './files/cert.crt.pem'
session = Session()
r = requests.get('https:...../PingWs?wsdl',
cert=(cert_filename, key_filename))
print (r)
Run Code Online (Sandbox Code Playgroud)
但我明白了
引发SSLError(e,request = request)requests.exceptions.SSLError:HTTPSConnectionPool(host ='evidim-test.gov.si',port = 443):使用url超出最大重试次数:/ ws/test/PingWs?wsdl(引起通过SSLError(SSLError("坏握手:错误([('SSL例程','tls_process_server_certificate','证书验证失败')],)",),))
我正在使用访问RESTful API的请求。一切似乎都正常。我可以进行身份验证,拉回会话令牌,甚至可以对我为API编写的类中的方法进行单元测试。然后我尝试运行我的代码。
首先,这是我打的电话。标头是在init()中设置的与会话相关的静态项。主体是根据文件中的数据动态构建的,并传递给此函数。所有数据均有效。
response = requests.post(url, headers=(Requestheader), data=json.dumps((Requestbody)))
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,它将使用我提供的元数据更新100多个记录。在项目150的某处,我得到以下信息:
ssl.SSLCertVerificationError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:证书链中的自签名证书(_ssl.c:1045)
我的第一步是打电话给供应商,以了解他们的所有Web服务器是否都已正确签署证书,以证明它们在负载均衡我时发现了配置错误的服务器。他们告诉我事实并非如此。
然后,我用Google搜索消息,发现有一个验证kwarg,因此我尝试:
response = requests.post(url, headers=Requestheader, data=json.dumps(Requestbody), verify=False)
Run Code Online (Sandbox Code Playgroud)
我知道这不是理想的长期方法,但是我想对其进行测试以查看行为是否相同。它做同样的事情。它运行了一段时间,并抛出了ssl错误。我认为verify = False的想法是不会检查。
供应商建议我检查正在使用的url,但这很好。我想如果有代理服务器或真正的中间人攻击引起问题,那么我在失败之前不会看到很多次成功。我以为这可能是会话超时,但是应该抛出401状态,并且我的活动水平对于非活动超时来说太高了。
我是python noob,不是安全专家。建议表示赞赏。