当前位置: 首页 > 知识库问答 >
问题:

Django:SSL证书问题(SSL连接错误:收到的消息是意外的或格式错误)

蒲昊苍
2023-03-14

我使用Windows 10, Python 3.7.6.使用以下软件包:

# Name                    Version                   Build  Channel
mysql-connector-c         6.1.11            he025d50_1002    conda-forge
mysqlclient               1.4.6                    pypi_0    pypi
sqlalchemy                1.3.12           py37hfa6e2cd_0    conda-forge
sqlite                    3.30.1               hfa6e2cd_0    conda-forge
sqlparse                  0.3.0                      py_0    conda-forge
django                    3.0.2                    py37_0    conda-forge
django-classy-settings    2.1.1                    pypi_0    pypi
django-debug-toolbar      2.1                        py_0    conda-forge

我使用的MySQL数据库具有以下设置。该数据库是使用我公司内的IT云数据服务创建的。我下载了SSL证书并将它们放在我的django项目中。

 DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'MyTestTVPVDb',
            'USER': 'MyTestTVPVDb_so',
            'PASSWORD': 'YYYYYYYYYYYYYYYYYYY',
            'HOST': 'XXXXXXXXXXXXXXXXXXXXXXX',
            'PORT': '3307',
            'OPTIONS': {
                'ssl': {
                    'ssl-ca': os.path.join(SSL_CERT_ROOT, 'ca_cert.pem'),
                }
            }
        }
    }

现在,当我键入pythonmanager时。py dbshell,我可以连接到数据库,一切正常。我可以看到DB支持SSL。

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 476212
Server version: 5.5.5-10.0.20-MariaDB-wsrep-log MariaDB Server, wsrep_25.10.r4144

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> status
--------------
mysql  Ver 8.0.18 for Win64 on x86_64 (MySQL Community Server - GPL)

Connection id:          476212
Current database:       MyTestTVPVDb
Current user:           MyTestTVPVDb_so@XXXXXXXXXXXXXXXXXXXXXXXXXXXX
SSL:                    Cipher in use is DHE-RSA-AES256-SHA
Using delimiter:        ;
Server version:         5.5.5-10.0.20-MariaDB-wsrep-log MariaDB Server, wsrep_25.10.r4144
Protocol version:       10
Connection:             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    cp850
Conn.  characterset:    cp850
TCP port:               3307
Uptime:                 18 days 7 hours 12 min 24 sec

Threads: 35  Questions: 1394611  Slow queries: 268  Opens: 87  Flush tables: 1  Open tables: 96  Queries per second avg: 0.882

但是,当我键入python manage时。py runserver要启动服务器,我会遇到以下异常,我不知道如何解决。

INFO Watching for file changes with StatReloader
Performing system checks...

Exception in thread django-main-thread:
Traceback (most recent call last):
  File "C:\Anaconda3\lib\site-packages\django\db\backends\base\base.py", line 220, in ensure_connection
    self.connect()
  File "C:\Anaconda3\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "C:\Anaconda3\lib\site-packages\django\db\backends\base\base.py", line 197, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Anaconda3\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "C:\Anaconda3\lib\site-packages\django\db\backends\mysql\base.py", line 233, in get_new_connection
    return Database.connect(**conn_params)
  File "C:\Anaconda3\lib\site-packages\MySQLdb\__init__.py", line 84, in Connect
    return Connection(*args, **kwargs)
  File "C:\Anaconda3\lib\site-packages\MySQLdb\connections.py", line 179, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (2026, 'SSL connection error: The message received was unexpected or badly formatted')

如果我将mysqlclient包降级为v1。3.14从v1开始。4.6,服务器启动正常。

(base) C:\Users\XXXX\Desktop\PyCharmProjects\personal-work-repo\python\src\tvpv_portal>conda list mysql
# packages in environment at C:\Anaconda3:
#
# Name                    Version                   Build  Channel
mysql-connector-c         6.1.11            he025d50_1002    conda-forge
mysqlclient               1.3.14           py37he774522_0    defaults

(base) C:\Users\XXXX\Desktop\PyCharmProjects\personal-work-repo\python\src\tvpv_portal>python manage.py runserver
INFO Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
January 03, 2020 - 02:55:23
Django version 3.0.2, using settings 'tvpv_portal.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

知道这里出了什么问题吗?SSL证书有问题吗?

共有1个答案

唐煜
2023-03-14

我通过将我的MariaDB从v10切换到v10解决了这个问题。0 -

 类似资料:
  • 我正在尝试连接到需要配置双向SSL的API。我有我在postman中配置的证书和私钥,如下图所示。 这在Postman中工作得很好,但当我尝试使用HttpClient在C#中实现它时,SSL失败了。我得到的错误是“收到的消息是意外的或格式不正确的。”。我相信这与不正确的配置有关。 我引用了这篇StackOverflow文章来实现我的代码:将私钥与中的X509Certificate2类相关联。网 以

  • 我使用的是PushSharp的2.1.2版本。该应用程序是。NET 4.5.1(虽然我也尝试过定位。NET 4.5和.网4) 我正在尝试通过沙箱Apple APNS发送推送消息,但没有成功。 我正在使用Ray Wenderlich的演练中提供的PHP脚本成功地发送消息,该脚本使用与我的PushSharp应用程序相同的证书并发送到相同的设备ID。 我已经通过从钥匙链导出完整的证书作为p12进行了测试

  • 我试图解决这个问题已经有一段时间了,但我所尝试的一切都是无用的。我尝试了HttpClientHandler,但仍然得到了错误! 错误消息: 无法建立SSL连接,请参阅内部异常 身份验证失败,请参阅内部异常 收到的消息意外或格式不正确 我从零开始学习c#,而且我对c#语言非常熟悉,所以请解释一下问题所在。

  • 我试图连接到Kafka,从C#client启用TLS,在调用。不幸的是,到目前为止,互联网上的帖子都没有帮助我解决这个问题。你知道会出什么问题吗? 下面是我用来启动连接的最小样本C#代码

  • 我有一个。NET Core 3.1 C#应用程序,该应用程序通过HTTPS调用API(并将其公钥作为获取令牌的一部分,因为该证书稍后将用于解密单独发送回的信息)。在我们几乎所有的机器上,它都在工作,但是在一台Windows 8.1机器上,当我们尝试初始连接身份验证令牌时,我们会遇到以下一系列异常: 异常是从,因此我怀疑这是在HTTPS级别发生的,我们的证书内容在这里并不真正相关。 我们获取令牌的代

  • 我在Java中与SSL连接有问题。 我使用java 1.7.80和S. O.: ubuntu 14.04 我的问题是证书,甚至证书。我有四个必须使用pkcs12格式连接的元素。 -- -- -- -- 1) 步骤-将文件cer转换为文件pem 2)步骤-创建链证书的联合pem文件 3)步骤-创建p12文件 好啊我的第一个测试是在浏览器(Mozilla Firefox)中导入p12文件以验证操作。导