如何通过Red Bean PHP配置SSL加密连接PGSQL
RedBean配置PostgreSQL SSL连接方案
RedBean的R::setup()方法第一个参数直接兼容标准PDO PostgreSQL DSN格式,你只需将原有PDO示例中的SSL相关参数追加到现有DSN中即可,两种实现方式如下:
方式一:直接修改DSN字符串(最简方案)
直接把SSL配置参数拼接到R::setup的第一个DSN参数里:
R::setup( "pgsql:host=$ip;port=$port;dbname=$dbname;sslmode=require;sslcert=[实际证书路径]/client.maxroach.crt;sslkey=[实际密钥路径]/client.maxroach.key;sslrootcert=[实际根证书路径]/ca.crt", $user, $password, $frozen ); // 如需要和原有PDO示例保持一致的属性配置,连接成功后追加设置即可 R::getPDO()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); R::getPDO()->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
方式二:预创建PDO实例传入RedBean(灵活可控)
如果需要提前配置PDO属性,也可以先按原有逻辑创建带SSL配置的PDO对象,再交给RedBean使用:
// 实例化带SSL配置的PDO对象 $dbh = new PDO( "pgsql:host=$ip;port=$port;dbname=$dbname;sslmode=require;sslcert=[路径]/client.maxroach.crt;sslkey=[路径]/client.maxroach.key;sslrootcert=[路径]/ca.crt", $user, $password, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => true ] ); // 将PDO实例注册为RedBean的默认连接 R::addDatabase('default', $dbh, $frozen); R::selectDatabase('default');
注意事项
- 证书路径请填写服务器上的绝对路径,确保Web运行用户对证书文件有可读权限
sslmode参数可根据场景调整:强制SSL校验填require,需要校验服务端证书合法性可填verify-ca或verify-full
内容的提问来源于stack exchange,提问作者namen3645
相关产品推荐
相关产品推荐

