【问题标题】:How to verify SNS message authenticity in spring aws cloud SNS http end point如何在spring aws cloud SNS http端点中验证SNS消息的真实性
【发布时间】:2016-04-05 10:32:40
【问题描述】:

我正在使用 Spring AWS cloud 编写 SNS http 端点。我看不到任何有关验证doc 中的消息签名的信息。我怎样才能做到这一点 ?

【问题讨论】:

    标签: java spring spring-cloud


    【解决方案1】:

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

    方法很简单。你需要从 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 消息。

    【讨论】:

      猜你喜欢
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      • 2021-10-18
      相关资源
      最近更新 更多