Протоколирование сеансовых ключей SSL с помощью luasec - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь вызвать веб-сервис, используя 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, чтобы я мог выяснить, что отличается между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...