Reporting what appears to be a bug in the native S3 backend's SigV4 signing. Happy to provide additional logs or test a patch. Details below.
Version: proxmox-backup-server 4.2.5-1 (also reproduced on 4.2.4-1)
S3 provider: StorageFactory.io (MinIO/RADOS-based), via Curanet
Summary: PBS transmits the S3 Access Key ID in lowercase when generating the AWS Signature Version 4 Authorization header, even though the key is stored correctly (uppercase) in /etc/proxmox-backup/s3.cfg. Because SigV4 signing is case-sensitive on the Access Key ID, the server-side signature never matches and every request fails with SignatureDoesNotMatch.
Stored config is correct (cat /etc/proxmox-backup/s3.cfg, owner root:backup):
But the server receives it lowercased (from the endpoint's own error response, s3 endpoint list-buckets):
Ruled out experimentally:
Version: proxmox-backup-server 4.2.5-1 (also reproduced on 4.2.4-1)
S3 provider: StorageFactory.io (MinIO/RADOS-based), via Curanet
Summary: PBS transmits the S3 Access Key ID in lowercase when generating the AWS Signature Version 4 Authorization header, even though the key is stored correctly (uppercase) in /etc/proxmox-backup/s3.cfg. Because SigV4 signing is case-sensitive on the Access Key ID, the server-side signature never matches and every request fails with SignatureDoesNotMatch.
Stored config is correct (cat /etc/proxmox-backup/s3.cfg, owner root:backup):
Code:
access-key AKIA[REDACTED]339BCA
But the server receives it lowercased (from the endpoint's own error response, s3 endpoint list-buckets):
Code:
<AWSAccessKeyId>akia[REDACTED]339bca</AWSAccessKeyId>
Ruled out experimentally:
- Config file stores uppercase, byte-verified
- Full daemon restart (proxmox-backup-proxy.service proxmox-backup.service) — no stale cache
- File ownership correct (root:backup)
- Region tested: us-east-1, dk6, default — no change
- path-style true, port 443 explicit
- Access key is plain alphanumeric (no shell-special chars); set via proxmox-backup-manager CLI, not env vars
- Same credentials work perfectly with MinIO Client (mc) against the identical endpoint — HEAD /obj4535/ returns 200 OK, proving bucket, region, path-style and credentials are all valid. Only PBS's signing path fails.