- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经在我的 apache2 中安装了 SSL 证书,它在浏览器中运行良好。
SSLCertificateFile /root/ca/intermediate/certs/www.example.com.cert.pem
SSLCertificateKeyFile /root/ca/intermediate/private/www.example.com.key.pem
SSLCertificateChainFile /root/ca/intermediate/certs/ca-chain.cert.pem
现在,我正在尝试使用 python 请求模块连接到此服务器,该模块使用我在上面的 SSLCertificateFile 中提供的相同证书。
import requests
r = requests.get('https://localhost',verify='/Users/p/Documents/b/docker_images/vnet-creds/ca/intermediate/certs/www.example.com.cert.pem')
print r.status_code
print r.text
但还是报错如下。
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
[Finished in 0.3s with exit code 1]
[shell_cmd: python -u "/Users/p/Documents/b/docker_images/test_pki_certs/test.py"]
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4096 (0x1000)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=GB, ST=England, O=B, OU=B Root, CN=B Root
Validity
Not Before: Jun 23 20:39:51 2017 GMT
Not After : Jun 21 20:39:51 2027 GMT
Subject: C=GB, ST=England, O=B, OU=B Root, CN=B Root inter
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (4096 bit)
Modulus (4096 bit):
00:c0:5a:06:d1:7d:19:97:32:38:a1:fb:61:47:dd:
7b:89:a8:3d:25:ca:c9:28:f5:6c:e8:dd:02:20:cb:
74:f2:08:df:ec:92:54:cb:fe:5f:6b:35:45:7f:9b:
0c:27:13:a1:74:28:ff:af:1f:5a:55:9d:64:04:bc:
c7:2f:cd:43:51:ee:82:b6:cf:e3:c4:e7:90:07:c8:
4a:55:b4:5f:47:9c:33:e6:bc:4c:e6:e7:04:5d:84:
b7:eb:01:60:6a:31:4d:2a:da:4b:f6:7c:84:82:7d:
3f:bf:f0:81:ee:6a:ab:aa:1a:9e:eb:81:c7:b8:76:
f9:0d:f8:c6:a2:89:9e:6c:4c:6b:1c:47:91:f5:4d:
3c:26:71:c7:16:51:f8:a6:06:bc:0e:8d:b8:a0:7f:
86:73:c0:5b:65:3e:91:4c:44:6a:c6:45:03:7c:cf:
d2:13:6f:52:c7:a7:54:5d:8c:b7:3e:d1:c3:4c:dc:
68:42:ae:8b:0d:8e:55:41:cb:b5:25:2a:54:8b:7d:
53:86:8f:bb:8d:8d:03:cb:8f:42:b6:a0:6e:ce:63:
ec:24:ce:fa:e4:7a:66:bb:ff:94:65:57:14:70:ba:
f3:eb:a5:a6:d9:f4:81:01:2f:7f:a6:1e:12:b7:0f:
b4:71:a2:3f:11:6b:b5:af:0f:51:78:a0:31:8b:b9:
f3:38:99:89:bf:d4:1f:14:3e:c5:ce:71:44:86:a1:
05:b1:db:6a:dc:31:8c:4f:91:3c:c7:50:77:b2:f5:
e8:83:e6:bb:76:ee:f6:25:05:bc:2a:3b:6d:fe:1e:
9d:14:4b:d2:f5:ea:ae:b4:ef:b8:ae:73:16:4b:b1:
67:6b:5a:8b:ef:59:a3:b5:14:13:30:41:2c:85:51:
7e:70:3f:92:ed:dc:14:80:92:a9:67:b2:58:10:ce:
91:d0:96:cc:3f:46:8a:16:2c:5b:c4:a0:5d:c8:69:
65:43:f6:9e:d1:8f:25:4b:42:3c:e1:eb:5d:eb:f6:
85:3f:e2:27:9f:ed:63:84:4a:19:ec:07:ee:9c:46:
14:66:f1:aa:22:15:93:87:48:1f:a2:fe:fb:81:9b:
3f:aa:55:a9:98:0f:ba:0a:4e:0a:df:02:89:73:2c:
92:7d:63:1b:61:59:de:a5:bd:1e:1c:f0:c7:84:88:
50:4e:9c:93:26:bd:5b:45:07:b6:0d:13:c4:32:ec:
e3:52:e8:84:0c:37:c5:5d:a8:f5:bd:b6:68:35:9e:
3d:60:0c:67:cb:94:3a:39:89:e6:28:2f:67:dc:ce:
ba:a1:e1:4e:22:e1:ee:cc:b9:12:99:2d:96:ae:fc:
dc:a6:cf:2b:7b:88:58:2b:56:10:f8:fe:f1:d9:c3:
e8:82:11
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
E8:6B:7F:00:5C:2A:29:CE:59:FE:92:64:C0:FF:EF:0D:BC:A2:C4:92
X509v3 Authority Key Identifier:
keyid:E0:B2:2B:B8:F3:7D:9B:0A:76:00:CA:EB:87:8F:8A:32:89:3A:C2:EE
X509v3 Basic Constraints: critical
CA:TRUE, pathlen:0
X509v3 Key Usage: critical
Digital Signature, Certificate Sign, CRL Sign
Signature Algorithm: sha256WithRSAEncryption
7e:61:6c:4f:7a:42:ba:0f:f0:1e:df:71:ac:9a:36:b1:9f:f1:
1d:8c:9f:c5:07:f4:16:56:f2:35:da:fc:23:ad:41:2b:44:cc:
17:5f:f1:ac:d2:5f:af:77:c5:cb:71:35:56:c5:c2:a4:ff:64:
b6:21:c1:dc:ed:06:72:d0:23:e6:25:22:56:15:4f:5b:94:86:
7c:6c:f5:86:e0:6b:d5:dc:61:59:fe:92:9f:31:b5:58:48:08:
46:62:c4:1b:0a:30:c7:ef:cb:c1:c9:a4:44:c6:18:d1:c3:f3:
5c:6c:39:cd:a1:ce:56:f1:34:61:f4:1b:2d:53:a4:49:f6:aa:
88:c1:84:bb:1e:42:27:42:79:ae:a3:4f:78:92:06:87:a2:9e:
eb:a8:cd:a0:a4:25:5c:2f:55:f3:8a:93:26:49:de:ca:b7:fd:
cd:9e:8b:13:e8:76:09:c9:fa:8c:14:9f:ee:67:05:80:e0:67:
2d:54:e9:a6:ac:6b:87:34:d2:b5:11:23:fd:c0:67:c4:26:b1:
2d:ae:0a:ca:ff:e6:86:9f:82:fc:9c:e1:10:1b:e1:61:b7:f2:
3e:26:e8:1d:a8:76:9d:e0:fe:ca:28:f4:d0:b6:67:07:06:b1:
56:ba:6e:ad:42:6c:8d:78:6c:eb:f8:1c:2d:75:f4:3f:92:d5:
9d:ca:ac:0f:dc:6c:b3:4b:cb:9a:d6:be:e6:61:24:4f:90:be:
c6:7c:61:86:8f:80:00:1e:66:b6:05:1a:f5:87:b8:c9:63:21:
e6:c9:33:6d:1e:09:fa:91:c6:08:75:a5:2a:34:68:05:2d:d5:
32:79:98:f6:6a:73:15:53:39:15:2c:e0:cf:05:7d:48:46:cf:
bd:a5:d5:ab:6f:e8:0d:43:64:9c:eb:da:c3:d5:ab:56:15:76:
0d:8b:2a:56:59:82:26:3c:9c:74:9e:0f:b2:71:95:8a:1e:4e:
89:82:1c:15:48:12:a2:8f:88:8b:f4:d7:e0:39:50:da:5a:2c:
19:44:2e:27:81:91:cd:79:b9:51:cd:38:f1:35:db:36:00:89:
e9:74:ef:b8:15:84:31:32:bd:b4:c4:dd:29:d1:d2:e9:96:52:
a0:b4:c5:ed:71:c8:4d:11:c4:4d:67:7c:a0:05:35:30:5f:ce:
18:de:5d:a4:09:9e:29:73:f4:43:54:76:5c:3e:b2:d6:f5:ce:
e0:31:93:c2:fe:aa:d6:f3:14:8e:50:b0:82:ca:a6:cb:91:e5:
1c:f2:31:9c:09:81:f7:e3:4f:93:8c:46:84:27:89:c1:0a:2c:
03:46:26:a5:f5:52:e4:0e:d4:e2:a6:7f:8f:9c:a3:ef:61:45:
4f:76:ff:66:80:57:c6:01
最佳答案
Now, Im trying to connect to this server using python requests module using the same certificate that I gave in the SSLCertificateFile above.
verify
参数需要受信任的 CA 而不仅仅是受信任的证书。叶证书不是 CA 证书,因此在构建信任链时不会考虑。相反,您应该提供根 CA,如果服务器不发送链证书,还应提供将信任链构建到给定根 CA 所需的链证书。
除此之外,还要确保证书的主题与 URL 中给定的域名匹配。
关于python - 使用请求模块的 SSL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44735564/
我正在处理一组标记为 160 个组的 173k 点。我想通过合并最接近的(到 9 或 10 个组)来减少组/集群的数量。我搜索过 sklearn 或类似的库,但没有成功。 我猜它只是通过 knn 聚类
我有一个扁平数字列表,这些数字逻辑上以 3 为一组,其中每个三元组是 (number, __ignored, flag[0 or 1]),例如: [7,56,1, 8,0,0, 2,0,0, 6,1,
我正在使用 pipenv 来管理我的包。我想编写一个 python 脚本来调用另一个使用不同虚拟环境(VE)的 python 脚本。 如何运行使用 VE1 的 python 脚本 1 并调用另一个 p
假设我有一个文件 script.py 位于 path = "foo/bar/script.py"。我正在寻找一种在 Python 中通过函数 execute_script() 从我的主要 Python
这听起来像是谜语或笑话,但实际上我还没有找到这个问题的答案。 问题到底是什么? 我想运行 2 个脚本。在第一个脚本中,我调用另一个脚本,但我希望它们继续并行,而不是在两个单独的线程中。主要是我不希望第
我有一个带有 python 2.5.5 的软件。我想发送一个命令,该命令将在 python 2.7.5 中启动一个脚本,然后继续执行该脚本。 我试过用 #!python2.7.5 和http://re
我在 python 命令行(使用 python 2.7)中,并尝试运行 Python 脚本。我的操作系统是 Windows 7。我已将我的目录设置为包含我所有脚本的文件夹,使用: os.chdir("
剧透:部分解决(见最后)。 以下是使用 Python 嵌入的代码示例: #include int main(int argc, char** argv) { Py_SetPythonHome
假设我有以下列表,对应于及时的股票价格: prices = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4, 11] 我想确定以下总体上最
所以我试图在选择某个单选按钮时更改此框架的背景。 我的框架位于一个类中,并且单选按钮的功能位于该类之外。 (这样我就可以在所有其他框架上调用它们。) 问题是每当我选择单选按钮时都会出现以下错误: co
我正在尝试将字符串与 python 中的正则表达式进行比较,如下所示, #!/usr/bin/env python3 import re str1 = "Expecting property name
考虑以下原型(prototype) Boost.Python 模块,该模块从单独的 C++ 头文件中引入类“D”。 /* file: a/b.cpp */ BOOST_PYTHON_MODULE(c)
如何编写一个程序来“识别函数调用的行号?” python 检查模块提供了定位行号的选项,但是, def di(): return inspect.currentframe().f_back.f_l
我已经使用 macports 安装了 Python 2.7,并且由于我的 $PATH 变量,这就是我输入 $ python 时得到的变量。然而,virtualenv 默认使用 Python 2.6,除
我只想问如何加快 python 上的 re.search 速度。 我有一个很长的字符串行,长度为 176861(即带有一些符号的字母数字字符),我使用此函数测试了该行以进行研究: def getExe
list1= [u'%app%%General%%Council%', u'%people%', u'%people%%Regional%%Council%%Mandate%', u'%ppp%%Ge
这个问题在这里已经有了答案: Is it Pythonic to use list comprehensions for just side effects? (7 个答案) 关闭 4 个月前。 告
我想用 Python 将两个列表组合成一个列表,方法如下: a = [1,1,1,2,2,2,3,3,3,3] b= ["Sun", "is", "bright", "June","and" ,"Ju
我正在运行带有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我正在按照说明 here构建包含在我的发行版中的教程 Boost-Pyth
学习 Python,我正在尝试制作一个没有任何第 3 方库的网络抓取工具,这样过程对我来说并没有简化,而且我知道我在做什么。我浏览了一些在线资源,但所有这些都让我对某些事情感到困惑。 html 看起来
我是一名优秀的程序员,十分优秀!