Является ли «ssl: true» допустимым параметром для подключения к серверу mysql с помощью ssl

0

В настоящее время я использую модуль mysql со следующим кодом для подключения к моему серверу:

var connection = mysql.createConnection({
  host : 'db1.domain.tld',
  user : 'username',
  password : 'xxxxxx',
  ssl : true
});

И это работает без каких-либо проблем, но из документации неясно, что это даже справедливо. Там они пишут:

Параметры SSL
Параметр ssl в параметрах подключения принимает строку или объект. При задании строки используется один из предопределенных профилей SSL.

Таким образом, базовое значение этого описания ssl: true недействительно. Итак, мой вопрос: если это допустимый вариант и почему?

  • 0
    Проверьте код. Возможно документация не полная.
  • 0
    @tadman Я уже искал в исходном коде, но до сих пор не смог найти надежного аргумента.
Теги:
ssl

1 ответ

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

Изучение исходного кода поведения

var connection = mysql.createConnection({
  host : 'db1.domain.tld',
  user : 'username',
  password : 'xxxxxx',
  ssl : true
});

Будет равным:

var connection = mysql.createConnection({
  host : 'db1.domain.tld',
  user : 'username',
  password : 'xxxxxx',
  ssl : {
     rejectUnauthorized: false
  }
});

Причина этого заключается в том, что эта часть кода в ConnectionConfig.js:

if (this.ssl) {
  // Default rejectUnauthorized to true
  this.ssl.rejectUnauthorized = this.ssl.rejectUnauthorized !== false;
}

Поскольку this.ssl содержит логическое значение в данном случае, this.ssl.rejectUnauthorized =... ничего не делает, и this.ssl.rejectUnauthorized будет undefined после этого if.

Поскольку undefined является ложным значением, он будет вести себя так же, как если бы rejectUnauthorized был установлен в false. Поэтому он использовал бы ssl но не отклонил бы недействительный сертификат.

Начиная с этого параметра ssl в boolean недействителен или, по крайней мере, приведет к неожиданному поведению.

Ещё вопросы

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