Застрял с luasec Lua безопасное гнездо - PullRequest
1 голос
/ 14 мая 2010

Код этого примера не выполняется:

 require("socket")
 require("ssl")

-- TLS/SSL server parameters
 local params = {
 mode = "server",
 protocol = "sslv23",
 key = "./keys/server.key",
 certificate = "./keys/server.crt",
 cafile = "./keys/server.key",
 password = "123456",
 verify = {"peer", "fail_if_no_peer_cert"},
 options = {"all", "no_sslv2"},
 ciphers = "ALL:!ADH:@STRENGTH",
 }

local socket = require("socket")
local server = socket.bind("*", 8888)
local client = server:accept()
client:settimeout(10)

 -- TLS/SSL initialization
local conn,emsg = ssl.wrap(client, params)
print(emsg)
 conn:dohandshake()
 --
 conn:send("one line\n")
 conn:close()

запрос

https://localhost:8888/

выход

error loading CA locations ((null))
lua: a.lua:25: attempt to index local 'conn' (a nil value)
stack traceback:
        a.lua:25: in main chunk
        [C]: ?

Не очень много информации. Есть идеи как отследить проблему?

Обновление

Получил это сейчас: параметр cafile не требуется для режима сервера:

local params = {
 mode = "server",
 protocol = "sslv23",
 key = "./keys/server.key",
 certificate = "./keys/server.crt",
 password = "123456",
 options = {"all", "no_sslv2"},
 ciphers = "ALL:!ADH:@STRENGTH",
 }

Ответы [ 2 ]

3 голосов
/ 14 мая 2010

LuaSec является привязкой для OpenSSL, поэтому полученная вами ошибка ( ошибка загрузки местоположений СА ) означает, что библиотека OpenSSL не может читать ваши файлы СА. Вы уверены, что они находятся в текущем каталоге и имеют соответствующие разрешения?

РЕДАКТИРОВАТЬ: Согласно источникам LuaSec, в настоящее время он использует только формат PEM для закрытого ключа. Убедитесь, что закрытый ключ хранится как PEM, а не DER.

0 голосов
/ 10 июня 2010

CAFile содержит набор сертификатов (.crt), которым доверяет ваш сервер или клиент. Вы положили ключ (.key).

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