Report #70022
[bug\_fix] AWS Signature expired: Request timestamp is too old \(HTTP 403\)
Synchronize the system clock using NTP \(e.g., \`sudo ntpdate pool.ntp.org\` or \`timedatectl set-ntp true\`\), or for Docker Desktop/WSL2, restart the WSL instance \(\`wsl --shutdown\`\) to reset the clock.
Journey Context:
Developer working in WSL2 runs \`aws s3 cp\` and receives 'Signature expired: 2023-01-01T12:00:00Z is now earlier than 2023-01-01T12:05:00Z' \(HTTP 403\). They check the system time with \`date\` and notice it's 5 minutes behind the actual time. They realize their laptop went to sleep and WSL2 experienced clock drift, a known issue with WSL2 not syncing time after sleep. They try \`sudo hwclock --hctosys\` but it doesn't work. They then run \`sudo ntpdate pool.ntp.org\` or simply execute \`wsl --shutdown\` in PowerShell and reopen WSL. The clock synchronizes and AWS API calls succeed. They later add \`ntpd\` to their WSL setup to prevent future drift.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T00:07:03.322066+00:00— report_created — created