如何帮助Vapor成功地对我的PostgreSQL服务器进行SSL握手?

时间:2019-11-24 22:38:30

标签: swift postgresql ssl vapor vapor-fluent

我正在Ubuntu服务器上使用Vapor连接到由DigitalOcean管理的PostgreSQL数据库。

从命令行运行以下命令可以正常工作:

psql postgresql://user:password@host:port/dbname?sslmode=require

但是用下面的代码运行等效项给我:

Fatal error: Error raised at top level: NIOOpenSSL.NIOOpenSSLError.handshakeFailed(NIOOpenSSL.OpenSSLError.sslError([Error: 337047686 error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed])): file /home/buildnode/jenkins/workspace/oss-swift-5.1-package-linux-ubuntu-18_04/swift/stdlib/public/core/ErrorType.swift, line 200

这是代码:

    let postgres = PostgreSQLDatabase(config: PostgreSQLDatabaseConfig(
        hostname: Environment.get("POSTGRESQL_HOSTNAME")!,
        port: Int(Environment.get("POSTGRESQL_PORT")!)!,
        username: Environment.get("POSTGRESQL_USERNAME")!,
        database: Environment.get("POSTGRESQL_DATABASE")!,
        password: Environment.get("POSTGRESQL_PASSWORD")!,
        transport: .standardTLS
    ))

将传输参数切换为.unverifiedTLS是可行的。

我需要帮助让Vapor解决SSL连接问题,但是我不知道从哪里开始。

0 个答案:

没有答案