X.509 certificates contain a public key and additional metadata (like an expiration date that AWS verifies when you upload the certificate). Each certificate is associated with a private key. When you create a request, you create a digital signature with your private key and then include that signature in the request, along with your certificate. AWS verifies that you're the sender by decrypting the signature with the public key that is in your certificate. AWS also verifies that the certificate you sent matches the certificate that you uploaded to AWS. Use X.509 certificates only when you must sign SOAP-based requests. In all other cases, use access keys.