Ошибка рукопожатия в MySQL через SSL

3

TL;DR: Я получаю следующую ошибку при настройке клиента/сервера с помощью ssl:

В частности: ошибка конфигурации ssl: UseCertificateChainFile: ошибки SSL: подпрограммы PEM: PEM_read_bio: нет начальной строки. Подпрограммы SSL: SSL_CTX_use_certificate_chain_file: PEM lib

Детали:

Я размещаю нечто похожее на сервер mysql на ec2 (в частности, mongosqld)

Мне нужно подключиться к нему через ssl, поэтому я создаю сертификаты с помощью openssl на машине, используя этот набор инструкций, предоставляемых mysql: 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: процедуры PEM: PEM_read_bio: нет начальной строки   Процедуры SSL: SSL_CTX_use_certificate_chain_file: PEM lib

Может кто-нибудь помочь мне разобрать эту ошибку.

Спасибо друзьям!

  • 0
    Вам не нужно использовать эти конкретные параметры? Например, --mongo-mongossl, здесь есть полный список docs.mongodb.com/bi-connector/v2.1/reference/mongosqld/…
  • 0
    Из того, что я понимаю, это соединить Соединитель с экземпляром Монго. Моя проблема от клиента MySQL к Соединителю
Теги:
ssl
amazon-ec2

1 ответ

7
Лучший ответ

Я понял!

поэтому для аргумента sslPEMKeyFile в mongosqld, как указано в документах, вам нужно

Задает файл .pem, содержащий и сертификат TLS/SSL и для клиентов MySQL. Укажите имя файла .pem с использованием относительных или абсолютных путей.

Поэтому, когда я использовал openssl для создания ca, server-cert и файлов ключей, мне нужно было создать новый файл, который объединял бы закрытый ключ и server-cert

поэтому я создал новый файл с именем comb.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-----

и запустил сервер с этим, и он сработает!!!

  • 0
    Примечание: эти инструкции тоже хороши: mongodb.com/tableau?jmp=tbl
  • 0
    Я следовал сценарию, указанному в приведенном выше URL, и не могу подключиться к mongosqld через mysql. Я получаю сообщение об ошибке ответа: ОШИБКА 1043 (08S01): ошибка конфигурации ssl: ошибки SSL: 140760fc: подпрограммы SSL: SSL23_GET_CLIENT_HELLO: неизвестный протокол

Ещё вопросы

Сообщество Overcoder
Наверх
Меню