SSL:CERTIFICATE_VERIFY_FAILED 证书验证失败:自签名证书(_ssl.c:1129)

2024-02-27

我正在尝试自动创建受信任的证书和非对称密钥,然后执行自动安装过程。目前,所有这些都是使用 OpenSSL 实用程序手动完成的。 我正在使用 Cryptography.io 库来实现此自动化,并尝试使用代码生成的证书连接到服务器。当我调用 Post On Session 时,出现错误:

httpx.ConnectError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:自签名证书(_ssl.c:1129)

我为生成证书创建的代码:

import base64
import datetime
import json    
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.serialization import pkcs12
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography import x509
from cryptography.x509.oid import NameOID

    def create_certs(self):

    ca_key = ec.generate_private_key(curve=ec.SECP256R1, backend=default_backend())

    with open("/local/cert" + "/ca_key.pem", "wb") as f:
        f.write(ca_key.private_bytes(
            encoding=serialization.Encoding.PEM,
            format=serialization.PrivateFormat.TraditionalOpenSSL,
            encryption_algorithm=serialization.BestAvailableEncryption(b"passphrase")
        ))

    subject = issuer = x509.Name([
        x509.NameAttribute(NameOID.ORGANIZATIONAL_UNIT_NAME, u"Company"),
        x509.NameAttribute(NameOID.COMMON_NAME, u"interfaceCA")
    ])
    ca_cert = x509.CertificateBuilder().subject_name(
        subject
    ).issuer_name(
        issuer
    ).public_key(
        ca_key.public_key()
    ).serial_number(
        x509.random_serial_number()
    ).not_valid_before(
        datetime.datetime.utcnow()
    ).not_valid_after(
        datetime.datetime.utcnow() + datetime.timedelta(days=365)
    ).add_extension(
        x509.BasicConstraints(ca=True, path_length=None),
        critical=True
    ).add_extension(
        x509.SubjectKeyIdentifier.from_public_key(ca_key.public_key()),
        critical=False
    ).add_extension(
        x509.AuthorityKeyIdentifier.from_issuer_public_key(ca_key.public_key()),
        critical=False
    ).sign(
        ca_key, hashes.SHA256(), default_backend()
    )

    with open("/local/cert" + "/ca_crt.pem", "wb") as f:
        f.write(ca_cert.public_bytes(serialization.Encoding.PEM))       #used to install trusted certificate in server


    ################ Step 2 Assymetric key########################

    cert_key = ec.generate_private_key(curve=ec.SECP256R1,backend=default_backend())

    with open("/local/cert" + "/cert_key.pem", "wb") as f:
        f.write(cert_key.private_bytes(
            encoding=serialization.Encoding.PEM,
            format=serialization.PrivateFormat.TraditionalOpenSSL,
            encryption_algorithm=serialization.BestAvailableEncryption(b"passphrase")
        ))

    ### missing information how to convert openssl commands accurately to cryptography.io methods - 
    #   # openssl req -new -sha256 -key cert.key -out cert.csr -subj "/OU=Company/CN=<FQDN>"
    #   # openssl x509 -req -in cert.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out cert.crt -days 365 -sha256
        
    cert = x509.CertificateBuilder().subject_name(
        x509.Name([
        x509.NameAttribute(NameOID.ORGANIZATIONAL_UNIT_NAME, u"Company"),
        x509.NameAttribute(NameOID.COMMON_NAME, "https://fqdn.com:15623")])
    ).issuer_name(
        issuer
    ).serial_number(
        x509.random_serial_number()
    ).not_valid_before(
        datetime.datetime.utcnow()
    ).not_valid_after(
        datetime.datetime.utcnow() + datetime.timedelta(days=365)
    ).public_key(
        cert_key.public_key()
    ).sign(
        ca_key, hashes.SHA256(), default_backend()
    )

    with open("/local/cert" + "/cert_crt.pem", "wb") as f:
        f.write(cert.public_bytes(serialization.Encoding.PEM))

    bundle = pkcs12.serialize_key_and_certificates(
        name=b"container_p12",
        key=cert_key,
        cert=cert,
        encryption_algorithm=serialization.BestAvailableEncryption(b"pkcsPassword"),
        cas=None
    )

    with open("/local/cert" + "/container.p12", "wb") as f:
        f.write(bundle)

    bundle_base64_str = base64.b64encode(bundle)
    with open("/local/cert" + "/bundle-base64.p12", "wb") as f:   #used to install asymmetric key in server
        f.write(bundle_base64_str)

我可能缺少一些步骤来准确地自签名 asymkey 证书。而在 OpenSSL 手动过程中,CSR & CA & CA-key 用于为非对称密钥创建证书。

#   # openssl req -new -sha256 -key cert.key -out cert.csr -subj "/OU=Company/CN=<FQDN>"
#   # openssl x509 -req -in cert.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out cert.crt -days 365 -sha256

非常感谢对此的任何帮助。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSL:CERTIFICATE_VERIFY_FAILED 证书验证失败:自签名证书(_ssl.c:1129) 的相关文章

  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo

随机推荐

  • JTextArea 更新为 DocumentListener

    JTextArea area1 new JTextArea JTextArea area2 new JTextArea DocumentListener documentListener new DocumentListener publi
  • 使用模块中的方法模拟类

    我正在使用 PowerShell 2 0 无法升级 并且正在编写一系列使用 Active Directory 中的一些信息的脚本 来自 C 等 OOP 语言 我想在 PowerShell 2 0 中模拟一个类 但我知道它们只有class5
  • 程序卡住,管道文件描述符何时不应该打开?

    我正在创建一个可以读取命令的小 shell 当我运行我的程序并输入 cat file txt gt file2 txt 它创建了文件 然后卡在了这一行 if execvp structVariables gt argv 0 argv lt
  • 矩阵的滑动窗口求和

    我有一个 50x50 矩阵 我想对每个 10x10 或另一个设定大小值 始终是正方形 重叠网格中的值求和 即 为了清楚起见 重叠的窗口仅以对角线显示 我尝试做的第一个任务是定义每个窗口的坐标 win 10 start 1 10 1 10 f
  • PHP cURL,使用 CURLOPT_RETURNTRANSFER 时出现内存泄漏

    下面的代码是在一个循环中 每个循环都会将 URI 更改为新地址 我的问题是每次传递都会占用越来越多的内存 ch curl init curl setopt ch CURLOPT URL URI curl setopt ch CURLOPT
  • MySQL 与 Sequelize:ER_BAD_DB_ERROR:未知数据库

    我正在遵循教程 下面是代码 var Sequelize require sequelize var sequelize new Sequelize basic mysql database mysql root password diale
  • 如何在 Ruby 中执行相当于 's3cmd ls s3://some_bucket/foo/bar' 的操作?

    如何在 Ruby 中执行相当于 s3cmd ls s3 some bucket foo bar 的操作 我找到了适用于 Ruby 的 Amazon S3 gem 以及正确的 AWS S3 库 但不知何故 如何在 S3 文件夹 之类的位置上执
  • MessageKit 不显示消息输入栏 Swift 5

    这是控制器层次结构 tabBarController gt 一些控制器和聊天频道控制器 并且这个聊天频道控制器也是一个导航控制器 当我选择行时 它会推送到 MessageViewController 类的聊天控制器 我这里有两个问题 一是小
  • 为什么使用 Tiled 的 libgdx 游戏中出现线条?

    我正在使用 LibGdx 和 Tiled 当在屏幕上移动时 游戏上会出现水平线和垂直线 如果需要的话 我可以发布您需要的任何代码 我怎样才能让这些线路停止 这是一个 gfycat gif 的线条 http gfycat com FastUn
  • QML - MouseArea/MouseEvent 问题

    下面的代码生成一个白色矩形 其中包含一个红色矩形和一个灰色矩形 每个矩形都有一个关联的 MouseArea 当鼠标在灰色矩形内单击时 灰色矩形会变成蓝色 当鼠标光标进入红色矩形内部时 红色矩形会打印一条控制台消息 当发出释放信号时 会打印另
  • 我如何比较“Bcrypt”Gem 解密的密码和加密的密码

    我正在尝试对某些帖子的评论使用简单的身份验证 用户使用即时 ID 和密码输入评论 我使用 bcrypt gem 将密码存储在数据库中 就像comments controller rb中这样 comment Comment new comme
  • Django 中子查询的查询

    我正在尝试从另一个查询执行查询 但 Django 说 渲染时捕获数据库错误 子查询返回超过 1 行 我正在使用 PostGis my model class Place models Model coordinate models Poin
  • 通过 .htaccess 文件为所有 PHP 脚本设置 HTTP 标头

    我在我的一个项目中对所有 PHP 程序编写了相同的代码行 是否可以在目录的 htaccess 中执行此操作 如何 PHP 代码 Header Content Type application xhtml xml charset utf 8
  • 混淆矩阵和列联表有什么区别?

    我正在编写一段代码来评估我的聚类算法 我发现每种评估方法都需要来自m n类似矩阵A aij where aij是属于类成员的数据点的数量ci和簇的元素kj 但似乎有两个这种类型的矩阵数据挖掘简介 Pang Ning Tan 等 一个是混淆矩
  • iOS:无法启动 .app 文件

    我不知道为什么它在我的 app 文件中寻找目录 每次我运行应用程序时 它都会在 iPhone 上安装应用程序 但不会运行并给出以下错误 谁能告诉我这个设置存储在哪里 谢谢 error failed to launch Users xxx L
  • 更新/替换 Google 文档上的内嵌图像

    我正在尝试设置一个功能来更新 Google 文档上的图像 就像 Lucidchart Add on 对其 更新插入图表 功能所做的那样 为此 我目前正在执行以下操作 创建命名范围并将其 id 与生成图像的数据一起存储在文档属性中 以供以后检
  • 内部 __lzcnt64 使用不同的编译选项返回不同的值

    我有以下代码 include
  • BindingResult 和 bean 名称“categoryOptions”的普通目标对象都不能作为请求属性

    我知道这个主题有很多线程 我已经尝试了其中的大多数 但仍然无法解决我的问题 我正在使用SpringMVC and MongoDB我想要实现的是 我将在数据库中存储一些数据 然后将其从数据库检索回选择选项 这是我的代码 Jsp页面
  • SQLite:结束事务花费的时间太长

    我正在事务中插入几行 但是 当我执行 END TRANSACTION 时 执行时间约为 250 毫秒 而 BEGIN TRANSACTION 则几乎不需要 1 毫秒左右 我需要加快这里的速度以适应我的应用程序 我怎么能够 编辑 单线程正在访
  • SSL:CERTIFICATE_VERIFY_FAILED 证书验证失败:自签名证书(_ssl.c:1129)

    我正在尝试自动创建受信任的证书和非对称密钥 然后执行自动安装过程 目前 所有这些都是使用 OpenSSL 实用程序手动完成的 我正在使用 Cryptography io 库来实现此自动化 并尝试使用代码生成的证书连接到服务器 当我调用 Po