webman连接远端sqlserver数据库提示证书链是由不受信任的颁发机构颁发的

RyanEdward

问题描述

这是我写的一个接口,本地运行起来webman,我在本地postman去调用它,代码里面只有下图中的两句,作用是去连接远端数据库表查询总数,但是碰到了连接提示我证书链是由不受信任的颁发机构颁发的。

程序代码

/**
     *
     * @param Request $request
     * @return \support\Response
     */
    public function items(Request $request)
    {
        $result = Db::connection('sqlsrv')->table('Common_Customer')->count();

        return $this->successRespond($result);
    }

在database.php中的配置如下

'sqlsrv' => [
    'driver'   => 'sqlsrv',
    'host'     => '连接ip',
    'port'     => 1433,
    'database' => '连接数据库',
    'username' => '用户名',
    'password' => '密码',
    'charset'  => 'utf8',
    'prefix'   => '',
],

报错信息

[Microsoft][ODBC Driver 18 for SQL Server]SSL 提供程序: 证书链是由不受信任的颁发机构颁发的。

截图报错信息里报错文件相关代码

截图

操作系统及workerman/webman等框架组件具体版本

php_version=8.0.2
远端sqlserver版本为sqlserver2012
webman版本如下

"require-dev": {
    "illuminate/database": ">=8.0",
    "phpunit/phpunit": "^9",
    "symfony/translation": ">=5.0",
    "webman-tech/laravel-translation": "^1.0",
    "workerman/webman-framework": "^1.4"
},
774 2 1
2个回答

RyanEdward

此外在服务器上运行时出现[Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:1416F086:SSL
routines:tls_process_server_certificate:certificate verify failed:self signed certificate]这样的报错,可以看出时证书问题,但目前并没有查出是什么导致的

  • 暂无评论
RyanEdward

问题已解决
截图
在数据库的参数值字符串后面加上trustServerCertificate=true就可以了

×
🔝