Authenticating SOAP Requests

In cryptography, X.509 is an ITU-T standard for public key infrastructure (PKI). X.509 specifies, amongst other things, standard formats for public key certificates and certification path validation algorithm.

AWS does not implement a full Public Key Infrastructure (PKI). The certificate information is used only to authenticate requests to AWS.

AWS accepts any syntactically and cryptographically valid X.509 certificate. AWS will not verify that certificate is not expired or revoked. Certificates can be self-signed or signed by any key. Certificates generated by AWS are self-signed certificates with no expiration time.

Every request to SQS must contain authentication information to establish the identity of the principal making the request. In SOAP, the authentication information is put into the following elements of the SOAP request:


Note:

Due to different interpretations regarding how extra time precision should be dropped, .NET users should take care not to send overly specific time stamps. This can be accomplished by manually constructing DateTime objects with only millisecond precision.

You can use your own X.509 certificate or use one generated by AWS. See X.509 Certificate Identifiers for more information.

Signed messages must contain an expiration timestamp, represented as a Expires element within a Timestamp element in the WS-Security header. The Expires element should not have a ValueType attribute, and the Timestamp element may have a Created child element.

SoapContext.Security.Elements collections allow adding various WS-Security conformant elements. The following code sample demonstrates how to sign a request: