使用s3cmd连接ceph创建的rgw,一直返回403 forbidden
测试环境,没有配置ssl证书,使用s3cmd和s3 browser设置end point为http和不使用ssl,还是返回403
原因:ceph的默认RGW认证配置参数启动了ssl,需要修改为默认不适用ssl即可
ceph config set client.rgw rgw_verify_ssl false
ceph config set client.rgw rgw_crypt_require_ssl false
如果只执行第一个条命令,也会生效,执行完后,重启下rgw服务
执行上面两个命令后,即可访问,不会返回403了
测试环境 HTTP 访问 S3 的配置指南
在测试环境中没有配置 SSL 证书的情况下,您可以通过以下配置确保 S3 服务可以通过 HTTP 正常访问:
1. 禁用 SSL 相关安全要求
# 禁用 SSL 验证(允许连接到外部服务时不验证证书)
ceph config set client.rgw rgw_verify_ssl false
# 允许通过 HTTP 执行加密操作
ceph config set client.rgw rgw_crypt_require_ssl false
2. 配置 RGW 使用 HTTP
# 设置前端为 Beast(Quincy 默认前端),监听 HTTP 端口
ceph config set client.rgw rgw_frontends "beast port=80"
3. 重启 RGW 服务使配置生效
ceph orch restart rgw.foo
4. 配置 S3 客户端使用 HTTP
对于 s3cmd
在 ~/.s3cfg 文件中确保:
use_https = False
host_base = ceph01  # 或您的 RGW 主机名/IP
host_bucket = %(bucket)s.ceph01
对于 AWS CLI
aws configure set default.s3.use_ssl false
aws configure set default.endpoint_url http://ceph01
5. 验证 HTTP 访问
# 测试基本连接
curl http://ceph01/
# 使用 s3cmd 测试
s3cmd ls
# 使用 AWS CLI 测试
AWS_ACCESS_KEY_ID="您的access_key" AWS_SECRET_ACCESS_KEY="您的secret_key" \
aws s3 ls --endpoint-url http://ceph01
6. 创建测试用户(可选)
# 创建测试用户
radosgw-admin user create --uid="testuser" --display-name="Test User"
# 设置简单权限
radosgw-admin caps add --uid=testuser --caps="buckets=read,write; users=read"
7. 测试环境防火墙设置
# 确保 80 端口开放
sudo ufw allow 80/tcp
8. 完整测试脚本
#!/bin/bash
# test-s3-http.sh
# 设置环境变量
ENDPOINT="http://ceph01"
ACCESS_KEY="您的access_key"
SECRET_KEY="您的secret_key"
BUCKET="test-bucket-$(date +%s)"
TEST_FILE="test-file.txt"
# 创建测试文件
echo "This is a test file for HTTP S3 access" > $TEST_FILE
# 测试创建存储桶
AWS_ACCESS_KEY_ID=$ACCESS_KEY AWS_SECRET_ACCESS_KEY=$SECRET_KEY \
aws --endpoint-url $ENDPOINT s3 mb s3://$BUCKET
# 测试上传文件
AWS_ACCESS_KEY_ID=$ACCESS_KEY AWS_SECRET_ACCESS_KEY=$SECRET_KEY \
aws --endpoint-url $ENDPOINT s3 cp $TEST_FILE s3://$BUCKET/
# 测试列出文件
AWS_ACCESS_KEY_ID=$ACCESS_KEY AWS_SECRET_ACCESS_KEY=$SECRET_KEY \
aws --endpoint-url $ENDPOINT s3 ls s3://$BUCKET/
# 清理
AWS_ACCESS_KEY_ID=$ACCESS_KEY AWS_SECRET_ACCESS_KEY=$SECRET_KEY \
aws --endpoint-url $ENDPOINT s3 rm s3://$BUCKET/$TEST_FILE
AWS_ACCESS_KEY_ID=$ACCESS_KEY AWS_SECRET_ACCESS_KEY=$SECRET_KEY \
aws --endpoint-url $ENDPOINT s3 rb s3://$BUCKET
rm $TEST_FILE
echo "HTTP S3 测试完成"
注意事项
- 仅限测试环境:这些配置会降低安全性,仅适用于测试环境
 - 生产环境必须使用 HTTPS:在生产环境中必须配置有效的 SSL/TLS 证书
 - 密钥保护:HTTP 传输中密钥是明文传输,确保测试环境网络安全
 - 防火墙限制:限制只允许内部网络访问测试环境的 HTTP S3 服务
 
通过这些配置,您可以在没有 SSL 证书的测试环境中通过 HTTP 正常访问 S3 服务。
                    
                
                
            
        
浙公网安备 33010602011771号