Я пытаюсь вызвать веб-сервис, используя lua и luasec. Часть SSL работает, но я получаю сообщение об ошибке с сервера. Я хотел бы захватить обмен SSL с помощью Wireshark, который, я думаю, требует получения ключа сеанса SSL. Я знаю, что OpenSSL поддерживает протоколирование сеансовых ключей, но как мне сделать это из моего кода lua / luasec?
Мой код:
require('ltn12')
local https = require('ssl.https')
-- 5 Second timeout
https.TIMEOUT = 5
local response_body = {}
local request_body = '{"lockId": "3","eventType": "LOCKED","eventDateTime": "'..os.date("%Y-%m-%d %X")..'","eventUser": "KG - Test"}'
local request_headers = {
["Content-Length"] = string.len(request_body),
["Content-Type"] = "application/json"
}
print ('Request Body: '..request_body)
print ('Request Headers:')
local k,v
for k,v in pairs(request_headers) do
print(k,v)
end
local curlStatus, httpStatus, responseHeaders, responseStatus = https.request{
url = 'https://somedomain.com/rest/MyService/logevent',
method = 'POST',
headers = request_header,
protocol = 'tlsv1_2',
verify = 'none',
key = 'server.pem',
certificate = 'server.crt',
source = ltn12.source.string(request_body),
sink = ltn12.sink.table(response_body)
}
print('command status: '..curlStatus)
print('http status: '..httpStatus)
print('response status: '..responseStatus)
print('response headers: ')
for k,v in pairs(responseHeaders) do
print(' '..k,v)
end
print('response body: ')
for k,v in pairs(response_body) do
print(' '..k,v)
end
Вот вывод скрипта:
>lua -e "io.stdout:setvbuf 'no'" "RecordLockEvent.lua"
Request Body: {"lockId": "3","eventType": "LOCKED","eventDateTime": "2019-01-15 19:54:37","eventUser": "KG - Test"}
Request Headers:
Content-Type application/json
Content-Length 102
command status: 1
http status: 200
response status: HTTP/1.1 200 200
response headers:
connection Upgrade, close
content-type application/json
upgrade h2
date Wed, 16 Jan 2019 00:54:37 GMT
content-length 22
server Apache/2.4.33 (CentOS)
response body:
1 {"response":"FAILURE"}
>Exit code: 0
В качестве примечания я написал сценарий powershell для вызова этой службы и передачи того же тела запроса, и я получил успешный ответ. Я хотел бы сравнить два вызова в Wireshark, чтобы я мог выяснить, что отличается между ними.