https запрос в lua - PullRequest
       19

https запрос в lua

13 голосов
/ 27 ноября 2011

Я пытаюсь получить страницу на моем сервере с поддержкой SSL с помощью сценария lua.Важно отметить, что сервер имеет самозаверяющий сертификат.Нет проблем с сертификатом, выданным доверенным центром сертификации.

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"
}

Сервер возвращает:

Неверный запрос Ваш браузер отправил запрос, который этот сервер не может понять.Причина: вы говорите обычным HTTP с портом сервера с поддержкой SSL.Вместо этого используйте схему HTTPS для доступа к этому URL, пожалуйста.

И на стороне сервера этот запрос создает эту запись в Apache ssl_access.log

192.168.0.150 - - [27/Nov/2011:16:32:07 +0100] "GET /" 400 529 "-" "-"

Кроме того, tcpdumpпоказывает, что после рукопожатия SYN-ACK SSL 257 Client Hello не отправляется.Использование того же URL из моего браузера или с помощью wget работает нормально.

Ответы [ 4 ]

12 голосов
/ 28 ноября 2011

Как сказал Дуг Керри, вы должны использовать 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"
}
7 голосов
/ 27 ноября 2011

См. этот поток lua-l , описывающий, как добавить поддержку клиента luasocket https с помощью luasec .

2 голосов
/ 17 июля 2015

как это

local https = require("ssl.https")
local one, code, headers, status = https.request{
       url = "https://www.test.com",
       key = "/root/client.key",
       certificate="/root/client.crt",
       cafile="/root/ca.crt"
}
1 голос
/ 23 июля 2016

Более современным решением является использование lua-http: https://github.com/daurnimator/lua-http

. Он поставляется с интерфейсом, совместимым с luasocket / luasec.

...