lua中的https请求

rip*_*pat 13 lua luasocket

我正在尝试使用lua脚本在启用SSL的服务器上检索页面.需要注意的是,服务器具有自签名证书.由受信任的CA颁发的证书没有问题.

local https = require("socket.http")
local resp = {}
local r, c, h, s = https.request{
    url = "https://my-server:443/example.php",
    sink = ltn12.sink.table(resp),
    protocol = "tlsv1"
}
Run Code Online (Sandbox Code Playgroud)

服务器返回:

错误请求您的浏览器发送了此服务器无法理解的请求.原因:您正在向支持SSL的服务器端口说明HTTP.请使用HTTPS方案访问此URL.

在服务器端,该请求在Apache ssl_access.log中生成此条目

192.168.0.150 - - [27/Nov/2011:16:32:07 +0100] "GET /" 400 529 "-" "-"
Run Code Online (Sandbox Code Playgroud)

此外,tcpdump显示在SYN-ACK握手之后,没有SSL 257 Client Hello发送.使用我的浏览器或wget使用相同的URL工作正常.

Mic*_*man 12

正如Doug Currie所说,你应该使用luasec.要启用https.request,您必须要求ssl.https模块:

local https = require 'ssl.https'
local r, c, h, s = https.request{
    url = "https://my-server:443/example.php",
    sink = ltn12.sink.table(resp),
    protocol = "tlsv1"
}
Run Code Online (Sandbox Code Playgroud)


Dou*_*rie 7

请参阅此lua-l线程,其中描述了如何使用luasec添加对luasocket https客户端的支持.