VBA - https响应文本解密

问题描述:

在VBA中,我需要请求http消息并解析响应文本。 我已经成功地获得了http状态为'200'的响应文本,但正文已加密。 (头文件不是)所以我一直试图解密这个消息,但是由于对SSL概念和编程技巧的了解不多,我就陷入了困境。VBA - https响应文本解密

With oRequest 
    .Open "GET", sUrl, False 
    .SetRequestHeader "Accept", "*/*" 
    .SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko" 
    .SetRequestHeader "Connection", "Keep -Alive" 
    '.SetClientCertificate ("HKEY_LOCAL_MACHINE/Software/Microsoft/SystemCertificates/CA/Certificates") 
    .Send 
    sResult = .GetAllResponseHeaders 
    Debug.Print sResult 
    sResult = .ResponseText 
    Debug.Print sResult 

上面的脚本是我写的。有了这个,我有一些问题。

1.'SetClientCertificate()'是否必要?我怎样才能成功获得回复文本?

  • 正如我已经搜查,“SetClientCertificate()”是发送的消息发送到服务器的方法。但是,我没有使用这种方法发送(并获得响应)消息。我无法理解这是如何工作的。

2.在VBA中,如何使用证书进行解码响应主体

  • 我真的没有关于如何解密响应文本的想法。我知道我的本地计算机中有合适的证书,证书中的密钥可用于解密该消息,但我如何在VBA中执行此操作?我真的找不到有关这方面的有用文章。

请让我知道我误解了什么,并给我任何线索来解决问题。

[+编辑]

脚本

,有一句台词:

.SetRequestHeader "Accept-Encoding", "gzip , deflate" 

我省略了在这个问题这条线。因为我认为这个问题是关于SSL的,所以我故意删除了一些根本没有必要的行。 (这是完全错误的)

随着删除线,它的作品。

我已经成功地获得了http状态'200'的响应文本,但正文已加密。

这没有意义。在HTTPS中,所有内容都被加密:请求标头和正文以及响应标题和正文。我宁可期望你得到解密的响应标题和正文,但是正文可能是压缩的,或者是你无法识别的格式,因此它看起来像你的加密。

'SetClientCertificate()'是必要的吗?我怎样才能成功获得回复文本?

如果服务器要求客户端使用客户端证书对自身进行身份验证,则这是必需的。大多数网站不需要这个。

在VBA中,如何使用证书进行解码响应主体

你不能。并且您拥有的身体可能未加密或者至少没有使用与TLS(HTTPS)连接相关的任何内容加密(请参阅上文)。

+0

非常感谢。问题不在于加密,而在于您提到的压缩。我删除了行 “.SetRequestHeader”Accept-Encoding“,”gzip,deflate“ 然后它的工作原理是这样的行不写在我原来的问题(只是我错误张贴或编辑) 谢谢。我应该更多地研究这一点,坦率地说,我不会100%理解发生了什么。 – kdragon