If you subscribe an HTTP endpoint to SNS, the first thing AWS does is send a subscription confirmation to that endpoint, which should be ready to handle it. (If not, you can manually re-subscribe it through the console when the service is up, and AWS re-sends the confirmation.) It turns out that the actual messages as exchanged with endpoints are defined in the Getting Started Guide, Appendix D; not the API reference! The API reference only contains the administrative calls that can be made to the API, such as ConfirmSubscription.
It also turns out that the signature of the message sent to the endpoint is message-specific; Notification messages use a different set of fields to be signed than SubscriptionConfirmation and UnsubscriptionConfirmation. Again, the details (and examples) of this are not in the API documentation, but Appendix D of the Getting Started Guide.