实战记录:解决 Cloudreve 无法通过 HTTPS 连接自签名证书 MinIO 的问题
背景与问题描述 Cloudreve是一个自托管文件管理与共享系统,支持多存储提供商。 在部署 Cloudreve 存储策略时,我们需要集成内网环境下的 MinIO S3 服务。由于 MinIO 部署在内网并配合内网穿透暴露至公网,且使用了自签名证书,我们在配置完成后发现客户端无法正常上传文件。 初步排查: 确认内网穿透链路正常。 使用 MinIO 客户端工具 mc 测试,发现必须带上 –insecure 参数才能正常访问,明确了核心矛盾在于 SSL 证书验证失败。 尝试将证书放置在自定义目录并使用 mc –config-dir 指定,虽能连接成功,但 Cloudreve 无法直接复用该配置,且即便在同目录下放置证书也未能生效。 最终方案: 将自定义 CA 证书导入系统信任库,使 Cloudreve(Go 环境)能够原生识别。 解决方案:在 CentOS 系统中安装并激活自定义证书 1,检查证书是否PEM格式? Go 程序通常识别PEM格式的证书。 使用以下命令检查证书文件(如public.crt): cat public.crt 如果开头是 —–BEGIN CERTIFICATE—–,则是 PEM 格式。 如果是一堆乱码,则是 DER 格式。 需要转换为PEM格式: openssl x509 -inform der -in public.crt -out public.pem 2,放置证书 在CentOS Linux中,需要将证书文件放在/etc/pki/ca-trust/source/anchors/目录下,并且后缀必须为.crt。如果文件名为public.pem,需要改为public.crt。 确认文件是否放置正确? ls /etc/pki/ca-trust/source/anchors/ 输出中应包含我们的证书。 3,激活证书 执行以下命令激活,让系统重新扫描目录并生成全局信任束,依次执行: update-ca-trust extract update-ca-trust 4,验证证书是否激活成功 检查系统全局证书合集ca-bundle.crt是否已包含你的证书信息: ...