Laravel集成Oracle对象存储(OCI)遇SSL证书匹配错误求助
解决Laravel集成Oracle对象存储时的SSL证书匹配错误
错误原因
你遇到的SSL证书不匹配问题,是因为当前配置使用了虚拟主机样式的请求(将bucket名称作为域名前缀,如my-oracle-bucket.a****jkp17v.compat.objectstorage.ap-hyderabad-1.oraclecloud.com),但Oracle OCI兼容S3接口的SSL证书仅覆盖compat.objectstorage.{region}.oraclecloud.com这类根域名,不包含自定义bucket子域名,因此触发了证书验证失败。
解决方案
修改config/filesystems.php中的OCI存储配置,添加use_path_style_endpoint参数强制使用路径样式请求(bucket名称放在URL路径中而非域名前缀),具体步骤如下:
- 更新
config/filesystems.php里的oci配置数组:
'oci' => [ 'driver' => 's3', 'key' => env('OCI_ACCESS_KEY_ID'), 'secret' => env('OCI_SECRET_ACCESS_KEY'), 'region' => env('OCI_DEFAULT_REGION'), 'bucket' => env('OCI_BUCKET'), 'url' => env('OCI_URL'), 'use_path_style_endpoint' => true, // 新增此配置项 ]
- 确保
.env中的OCI_URL配置正确(无需拼接bucket名称):
OCI_URL="https://a***8ejkp17v.compat.objectstorage.ap-hyderabad-1.oraclecloud.com"
生效原理
启用use_path_style_endpoint后,文件上传的请求URL会变为:https://a***8ejkp17v.compat.objectstorage.ap-hyderabad-1.oraclecloud.com/my-oracle-bucket/20230325143057WrmOc.jpg
该域名完全匹配OCI官方SSL证书的覆盖范围,因此SSL验证会顺利通过。
内容的提问来源于stack exchange,提问作者user6085744
相关产品推荐
相关产品推荐

