【问题标题】:Handshake error to mysql via ssl通过 ssl 与 mysql 握手错误
【发布时间】:2018-05-16 02:11:59
【问题描述】:

tldr: 我在使用 ssl 进行客户端/服务器设置时收到以下错误:

具体来说:ssl 配置错误:UseCertificateChainFile:SSL 错误:PEM 例程:PEM_read_bio:no start line SSL 例程:SSL_CTX_use_certificate_chain_file:PEM lib

详情:

我在 ec2(特别是 mongosqld)上托管类似于 mysql 服务器的东西

我需要通过 ssl 连接到它,所以我使用 mysql 提供的这组指令在机器上使用 openssl 创建证书:https://dev.mysql.com/doc/refman/5.7/en/creating-ssl-files-using-openssl.html

我使用以下命令运行服务器

mongosqld --schema=schema.drdl \ --addr=0.0.0.0:3307 \ --auth \ --sslMode=allowSSL \ --sslCAFile=ca.pem \ --sslPEMKeyFile=server-key.pem

在我的机器上,我像这样连接到服务器:

mysql --protocol tcp \ --host my.host.on.amazon.com --port 3307 \ --enable-cleartext-plugin \ --ssl-cert mongosqlcerts/client-cert.pem --ssl-key mongosqlcerts/client-key.pem --ssl-ca mongosqlcerts/ca.pem

在客户端我收到以下错误: SSL connection error: error:00000001:lib(0):func(0):reason(1)

关于服务器日志,有点帮助:

mongosqld starting: version=v2.3.1 pid=11461 host=ip-xx-xx-xx-xx
I CONTROL    [initandlisten] git version: fa3535342a4c5abe36e3cc28a2ecf72864dfc6fe
I CONTROL    [initandlisten] OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013
I CONTROL    [initandlisten] options: {schema: {path: "schema.drdl"}, net: {bindIp: [0.0.0.0], ssl: {mode: "allowSSL", PEMKeyFile: "server-key.pem", CAFile: "ca.pem"}}, security: {enabled: true}}
I NETWORK    [initandlisten] waiting for connections at [::]:3307
I NETWORK    [initandlisten] waiting for connections at /tmp/mysql.sock
I NETWORK    [conn1] connection accepted from 108.20.XXX.XXX:63353 #1 (1 connection now open)
E NETWORK    [conn1] handshake error: ERROR 1043 (08S01): recv handshake response error: ERROR 1043 (08S01): ssl configuration error: UseCertificateChainFile: SSL errors: PEM routines:PEM_read_bio:no start line
SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib
2017-12-01T22:24:50.394+0000 I NETWORK    [conn1] end connection 108.20.XXX.XXX:63353 (0 connections now open)

具体来说:ssl配置错误:UseCertificateChainFile:SSL错误:PEMroutines:PEM_read_bio:no start line SSL 例程:SSL_CTX_use_certificate_chain_file:PEM lib

谁能帮我解析那个错误。

感谢朋友们!

【问题讨论】:

标签: mysql mongodb ssl amazon-ec2


【解决方案1】:

我明白了!

所以对于 mongosqld 中的 sslPEMKeyFile 参数,如文档中所述,您需要

为 MySQL 客户端指定包含 both TLS/SSL certificatekey 的 .pem 文件。使用相对或绝对路径指定 .pem 文件的文件名。

所以当我使用 openssl 创建 ca、server-cert 和 key 文件时,我需要创建一个结合 private-key 和 server-cert 的新文件

所以我创建了一个名为 combine.pem 的新文件,其中包含以下文本:

-----BEGIN RSA PRIVATE KEY----- (Your Private Key: your_domain_name.key) -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- (Your Primary SSL certificate: your_domain_name.crt) -----END CERTIFICATE-----

然后用它启动服务器,它工作了!!!

【讨论】:

  • 我按照上面url中提供的脚本,无法让mysql连接到mongosqld。我收到握手响应错误:ERROR 1043 (08S01): ssl configuration error: SSL errors: 140760fc:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol
猜你喜欢
  • 2017-02-11
  • 1970-01-01
  • 2015-02-03
  • 2016-08-08
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
  • 2016-08-22
  • 2014-01-14
相关资源
最近更新 更多