python MySQLdb:使用没有证书的ssl

时间:2018-01-25 11:39:23

标签: python mysql amazon-web-services mysql-python mysql-connector-python

我在AWS上运行了一个mysql服务器,需要通过SSL进行身份验证(但不需要用户证书)。

我尝试了什么:

没有证书的连接通过SequelPro(GUI)正常工作: enter image description here

当使用mysqlconnector和空的ssl参数时,它也有效:'ssl_ca': ''。但不幸的是没有使用MySQLdb。

我尝试过(使用连接字符串)

1

conn = sqlalchemy.create_engine(
    con_str,
    connect_args={'ssl':{'ca': ''}})
pd.read_sql_query('select id from mytable limit 1', conn)

2

conn = sqlalchemy.create_engine(
    # the following is used to enforce mysqlconnector usage
    con_str.replace("mysql:", "mysql+mysqlconnector:"),
    connect_args={'ssl_ca':''})
pd.read_sql_query('select id from mytable limit 1', conn)

第二个工作正常,第一个没有。当然,我也尝试使用裸连接器(MySQLdb.connect()mysql.connector.connect())并遇到相同的行为,并且无法使MySQLdb工作。

问题:

你可以给我一些关于如何在没有证书(和密钥)的MySQLdb中使用SSL的提示吗?

进一步背景:

我们从另一个提供商切换到AWS,所以很遗憾没有像以前那样的ssh和现在的SSL。而且我没有管理数据库,所以我无法使用用户证书,只是被迫使用没有任何证书的ssl。

一位同事解释说,从安全角度来看,这是可以的,因为服务器会发送证书。我们相信他是属于相应URL的人,因为我们信任CA.

1 个答案:

答案 0 :(得分:1)

在您的情况下可能无法正常工作,但我也想在pymysql中执行此操作,并且似乎通过了任何关键工作来传递命令:

connect_args={'ssl': {'key': 'whatever'}}

但是后来我发现mysql-connector-python即使没有任何参数也尝试ssl。我换了另一个原因。