什么';是python ssl编码中的“context.load”验证位置(“etc/ssl/certs/ca bundle.crt”)的函数吗?

什么';是python ssl编码中的“context.load”验证位置(“etc/ssl/certs/ca bundle.crt”)的函数吗?,python,ssl,Python,Ssl,我遵循一个Python ssl演示编写的教程 import ssl import socket HOSTNAME = "www.cloudflare.com" context = ssl.create_default_context() context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) context.verify_mode = ssl.CERT_REQUIRED context.check_hostname = True #

我遵循一个Python ssl演示编写的教程

import ssl
import socket
HOSTNAME = "www.cloudflare.com"  

context = ssl.create_default_context()

context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
context.verify_mode = ssl.CERT_REQUIRED
context.check_hostname = True
#context.load_verify_locations("/etc/ssl/certs/ca-bundle.crt")
conn = context.wrap_socket(socket.socket(socket.AF_INET), server_hostname=HOSTNAME)

conn.connect((HOSTNAME, 443))

# cert = conn.getpeercert()
#
# print(cert)
这行代码我不懂,功能是什么

context.load_verify_locations("/etc/ssl/certs/ca-bundle.crt")

我在我的macOS中运行它,我不知道哪条路径可以访问
ca bundle.crt
,也不知道
ca bundle.crt
的功能。您能帮我解答这些问题吗?

您知道如何验证证书吗?如果没有,您可以从

简言之。证书由证书颁发机构签署。我们信任这些机构,因为他们会检查认证请求中的所有索赔。因此,如果站点为
stackoverflow.com
提供证书并由受信任的CA签名,那么我们认为它确实是stackoverflow

受信任的权限集很小。几十个。它们的公钥作为证书与操作系统、浏览器、openssl发行版一起分发。这些证书称为根证书

调用
context.load\u verify\u locations(“/etc/ssl/certs/ca bundle.crt”)
加载openssl maintaners信任的ca根证书列表。该证书列表存储在文件
/etc/ssl/certs/ca bundle.crt

但在MacOS中,不需要这种调用。默认OpenSSL发行版从操作系统加载CA证书。
cloudflare.com
的证书由DigiCert颁发。这是一个信誉良好的CA,所有浏览器和操作系统都信任它。它们的证书存储在MacOS中,并在初始化默认上下文时加载到进程中


仅供参考。常量ssl.PROTOCOL_SSLv23用词不当,自python 3.6以来就被弃用了。改为使用ssl.PROTOCOL\u TLS。

看起来您-默认实现加载系统范围的根证书。您是说这一行“加载系统范围的根证书”吗?什么是系统范围的根证书?