我假设您已经为您创建的SNS主题设置了EC2状态更改触发器。
您可以按照AWS SNS中的说明处理JSON正文来验证SNS通知的单一性 文件 。它还有一个Java 例 但如果你想使用Python,这里是一个 例 用于X509验证部件使用 M2Crypto 模块:
M2Crypto
from M2Crypto import X509 from base64 import b64decode cert = X509.load_cert_string(str(r.text)) pubkey = cert.get_pubkey() pubkey.reset_context(md='sha1') pubkey.verify_init() pubkey.verify_update(str_to_sign.encode()) result = pubkey.verify_final(b64decode(signature)) if result != 1: raise Exception('Signature could not be verified') else: return True
正如文档中所建议的那样,为语言实现的AWS SDK可能已经具有内置功能 红宝石 。在实现之前检查一下是个好主意。
所以基本上,你应该在接收服务器上使用SNS使用的X509。
还建议您将SNS主题订阅到HTTPS端点,以便在将通知作为安全请求发送之前验证服务器的真实性。 SNS支持验证列出的证书颁发机构 这里 。