需要 SSL 连接。请指定 SSL 选项并重试。

4

我使用 Azure PostgreSQL,禁用 SSL 后可以正常工作,但我想启用 SSL 连接。当我在 Azure 中启用 SSL 时,启动应用程序后出现以下错误:SSL connection is required. Please specify SSL options and retry。这个错误发生了多次。

在 Azure 文档的哪里可以找到关于 SSL 的信息,请参考Azure SSL 连接文档。以下是我的连接字符串:

connection: {
        database: process.env.POSTGRES_DATABASE || 'postgres',
        port: process.env.POSTGRES_PORT || 5432,
        user: process.env.POSTGRES_USER || 'my@-username',
        host: process.env.POSTGRES_HOST || 'postgres.db.postgres.database.azure.com',
        password: process.env.POSTGRES_PASSWORD || 'postpass',
        sslmode: 'require',
        }

根据Azure文档,我指定了sslmode:require但是它没有起作用。如果有人遇到同样的错误并找到解决方案,请告诉我。我已经被这个错误困扰了5天。

1
尝试使用 ssl: true 而不是 sslmode: 'require' - Tachyon
尝试连接不同的客户端(如psql),看看是否会出现相同的错误。 - jjanes
您需要提供您的 SSL 证书。 - Jim Xu
@kirtan 你还有其他的顾虑吗? - Jim Xu
1个回答

3
关于此问题,请参考以下步骤:
  1. 下载SSL证书。更多详情请参见此处

  2. 编写代码

const pg = require("pg");
const fs = require("fs");
const config = {
  host: "<>.postgres.database.azure.com",
  user: "<>",
  password: "<>",
  database: "postgres",
  port: 5432,
  ssl: {
    cert: fs.readFileSync("<the cert path>"),
    rejectUnauthorized: true,
  },
};

const client = new pg.Client(config);

client.connect((err) => {
  if (err) throw err;
  else {
    console.log("success");
  }
});
const query = "SELECT * FROM inventory;";

client
  .query(query)
  .then((res) => {
    const rows = res.rows;
    console.log(`Read: ${JSON.stringify(rows)}`);
    process.exit();
  })
  .catch((err) => {
    console.log(err);
  });

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接