Python requests的SSL证书验证方式

首先,我们需要了解一下什么是SSL证书以及SSL证书的作用。SSL(Secure Sockets Layer)是一种在客户端浏览器和Web服务器之间建立加密连接的安全协议。SSL证书则是由公共信任的认证机构颁发的一种数字证书,用于验证收发数据双方的身份以及保护数据的传输安全。在使用Python的requests库进行网络请求时,我们要对SSL证书进行验证,以确保数据的安全传输。

Python的requests库提供了两种SSL证书验证方式:一种是基于CA证书验证,即将CA根证书添加到本地信任列表;另一种是基于自定义证书验证,即将自己生成的证书作为信任证书使用。下面将逐步介绍这两种验证方式的实现方法。

基于CA证书验证的SSL验证方式

基于CA证书的验证方式需要将CA根证书添加到本地的信任证书列表中,只有添加了该证书,才能和网站建立SSL连接。Python的requests库已经默认使用了该验证方式,但是在某些情况下,如自签名证书、不信任的证书等情况下,需要进行手动验证。下面是一个使用requests进行HTTPS访问的示例:

import requests

url = 'https://www.google.com'
response = requests.get(url)

print(response.text)

运行上述代码会发现HTTPS连接被拒绝,并抛出requests.exceptions.SSLError异常。这是因为Google的SSL证书是由公共信任的CA机构颁发的,但是我们没有将该证书添加到本地的信任列表中。为了解决该问题,需使用verify参数进行 SSL证书验证,将信任的根证书添加到本地。

import requests

url = 'https://www.google.com'
response = requests.get(url, verify=True)

print(response.text)

在上述代码中,我们将verify参数设置为True,代表对SSL证书进行验证。由于Google的SSL证书已经被公共信任的CA机构颁发,所以我们不需要另外添加证书。如果需要信任其它的证书,可将verify参数设置为证书的路径。

基于自定义证书的SSL验证方式

基于自定义证书的验证方式是将自己生成的证书作为信任证书使用,该方式需要先生成一个证书,并添加到本地的信任列表中。以下是生成证书的步骤:

  1. 生成私钥文件

    bash
    openssl genrsa -out client.key 2048

  2. 生成证书签名请求(CSR)文件

    bash
    openssl req -new -key client.key -out client.csr

  3. 签发自签名证书

    bash
    openssl x509 -req -days 3650 -in client.csr -signkey client.key -out client.crt

生成证书后,需要将该证书添加到本地信任列表中。以下是在Windows和Linux系统下将证书添加到信任列表的方法:

Windows系统下添加自定义证书

  1. 在“运行”对话框中输入“mmc”并回车,打开Microsoft Management Console。

  2. 选择“文件” -> “添加/删除管理单元”,添加“证书”管理单元。

  3. 选择“计算机账户” -> “本地计算机”,点击“确定”。

  4. 选择“受信任的根证书颁发机构” -> “证书”,右键选择“所有任务” -> “导入”。

  5. 选择之前生成的.crt证书,导入到受信任的根证书颁发机构中。

Linux系统下添加自定义证书

  1. 将生成的.crt证书复制到/usr/share/ca-certificates/目录下。

  2. 执行以下命令:

    bash
    sudo chmod 644 /usr/share/ca-certificates/client.crt
    sudo dpkg-reconfigure ca-certificates

完成以上操作后,就可以使用自定义证书进行SSL验证了。以下是一个使用自定义证书进行HTTPS访问的示例:

import requests

url = 'https://www.example.com'
response = requests.get(url, verify='/path/to/client.crt')

print(response.text)

在上述代码中,我们将verify参数设置为自定义证书的路径,请求会通过自定义证书进行SSL验证。

实际使用时,需要根据您的具体情况进行证书的生成和添加到信任列表的操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python requests的SSL证书验证方式 - Python技术站

(1)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • odoo 开发入门教程系列-QWeb简史

    QWeb简史 到目前为止,我们的房地产模块的界面设计相当有限。构建列表视图很简单,因为只需要字段列表。表单视图也是如此:尽管使用了一些标记,如<group>或<page>,但在设计方面几乎没有什么可做的。 然而,如果我们想给我们的应用程序一个独特的外观,就必须更进一步,能够设计新的视图。此外,PDF报告或网站页面等其他功能需要另一个更…

    python 2023年4月22日
    00
  • python实现在字符串中查找子字符串的方法

    Python实现在字符串中查找子字符串的方法 在Python中查找一个字符串中是否包含另一个子串,有以下几种方法可以实现。 方法一:使用in操作符 Python提供了in操作符,可以用来检查一个字符串是否包含另一个子串。 string = "hello world" substring = "world" if sub…

    python 2023年6月5日
    00
  • 浅谈Python xlwings 读取Excel文件的正确姿势

    浅谈Pythonxlwings读取Excel文件的正确姿势 介绍 Pythonxlwings是一个Python库,它使得Python可以与Excel文件进行互动。可以使用xlwings来读取、写入或修改Excel文件中的数据,同时也可以控制Excel应用程序的行为。 安装 安装xlwings最简单的方法是使用pip,命令如下: pip install xlw…

    python 2023年5月13日
    00
  • Python3读取Excel数据存入MySQL的方法

    当我们需要将Excel表格中的数据存入MySQL数据库中时,可以通过Python的pandas和pymysql库实现。 下面是具体步骤: 准备工作 安装相关库 pip install pandas pip install pymysql 创建一个MySQL数据库并创建表 在MySQL中执行以下语句 CREATE DATABASE test_db; 创建表 U…

    python 2023年6月3日
    00
  • python3 requests库文件上传与下载实现详解

    以下是关于Python3 requests库文件上传与下载实现的攻略: Python3 requests库文件上传与下载实现详解 在Python3中,使用requests库可以方便地实现文件上传和下载。以下是Python3 requests库文件上传与下载实现的攻略。 文件上传 使用requests库上传文件时,需要使用files参数,并将文件打开并读取为二…

    python 2023年5月14日
    00
  • python实现大文件分割与合并

    接下来我将会详细讲解Python实现大文件分割与合并的完整攻略,同时给出两个示例说明。 1. 大文件分割 1.1 背景 在日常工作中,有时候我们会遇到需要将大文件分割成若干个小文件的情况,以便于上传、备份、压缩等操作。Python作为一门强大的编程语言,可以方便地实现大文件的分割。 1.2 实现步骤 确定文件路径及分割大小(单位为MB): import os…

    python 2023年5月19日
    00
  • Python读取文件比open快十倍的库fileinput

    在Python中,打开文件并逐行读取/处理文件内容是一个非常常见的操作。标准库中的open函数虽然功能强大,但在大文件处理时可能会存在一些性能问题。fileinput是一个可以更高效地处理文件的Python库,提供了比标准库更快的文件输入功能。 安装fileinput库 fileinput是Python标准库中的一部分,因此无需安装即可使用。只需要在代码中引…

    python 2023年6月3日
    00
  • Python爬虫实现抓取电影网站信息并入库

    Python爬虫实现抓取电影网站信息并入库 1.准备工作 安装Python 安装必要的库:BeautifulSoup, requests, pymysql 2.获取目标网站数据 使用requests库,向目标网址发送get请求,获取网站源代码,然后使用BeautifulSoup库解析出需要的信息。 示例代码: import requests from bs4…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部