如何在Spring aws云SNS http端点验证SNS消息的真实性

时间:2016-04-05 10:32:40

标签: java spring spring-cloud

我正在使用Spring https://www.objc.io/issues/5-ios7/getting-to-know-textkit/编写SNS http端点。我无法看到有关验证AWS cloud中的邮件签名的任何信息。我怎样才能做到这一点 ?

1 个答案:

答案 0 :(得分:0)

这是一个非常老的问题,但也许有人对此有疑问。

方法很简单。您需要从SignatureUrl创建InputStream并基于此InputStream生成证书

InputStream inStream = url.openStream();
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) cf.generateCertificate(inStream);
inStream.close();

下一步,您需要使用签名。获取SHA1withRSA的实例,从您生成的证书中获取您的公钥,并使用消息中的数据更新签名

 Signature sig = Signature.getInstance("SHA1withRSA");
 sig.initVerify(cert.getPublicKey());
 sig.update(getMessageBytesToSign(msg));
 return sig.verify(Base64.decodeBase64(msg.getSignature()));

您可以在AmazonDoc

上找到完整的示例

创建此方法时,只需将其用作服务的静态实用程序即可从SNS接收消息,例如。

VerifySNS.isMessageSignatureValid(msg);

msg属性是SNSTopic消息。