Я развернул NodeJS (с ExpressJS, Sequelize) для Azure Служб приложений. Работают простые API без подключения к базе данных, однако, когда я использую часть приложения, в которую загружаю данные из моей базы данных Azure MySQL, возникают проблемы с сертификатом. Я получаю это сообщение журнала из потока службы приложений. чтобы включить брандмауэр и использовать сертификат (BaltimoreCyberTrust Root .crt.pem).
Используя ту же инструкцию, с моего ноутбука я могу подключиться к удаленной базе данных Azure MySQL, используя этот CLI :
$ mysql -h <my-db>.mysql.database.azure.com -u <my-user> --ssl-mode=REQUIRED --ssl-ca=.\BaltimoreCyberTrustRoot.crt.pem -p
Я следил за другими вопросами StackOverflow / Github, связанными с этим, и следовал их настройкам следующим образом:
const mysql = require('mysql2');
...
var sequelize = new Sequelize(config.db, config.username, config.password, {
host: "<my-db>.mysql.database.azure.com",
port: 3306,
dialect: 'mysql',
dialectOptions: {
ssl: {
ca: fs.readFileSync(__dirname + "/ssl/BaltimoreCyberTrustRoot.crt.pem")
}
}
});
Нужно ли устанавливать дополнительный ключ / сертификат в * 1019? *?
ssl: {
key: fs.readFileSync(__dirname + "./certs/client-key.pem"),
cert: fs.readFileSync(__dirname + "./certs/client-cert.pem"),
ca: fs.readFileSync(__dirname + "/ssl/BaltimoreCyberTrustRoot.crt.pem")
}
Я использую Узел 12 (Узел 12.13 в Azure Служба приложений) и вот мои package.json
зависимости:
"dependencies": {
"body-parser": "^1.19.0",
"express": "^4.17.1",
"faker": "^4.1.0",
"mysql2": "^2.1.0",
"sequelize": "^5.21.5"
}