【发布时间】:2016-04-05 10:32:40
【问题描述】:
【问题讨论】:
标签: java spring spring-cloud
【问题讨论】:
标签: java spring spring-cloud
这是一个非常古老的问题,但也许有人对此有疑问。
方法很简单。你需要从 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 消息。
【讨论】: