|
1 -- |
|
2 -- Public domain |
|
3 -- |
|
4 require("socket") |
|
5 require("ssl") |
|
6 |
|
7 print("Use Ctrl+S and Ctrl+Q to suspend and resume the server.") |
|
8 |
|
9 local params = { |
|
10 mode = "server", |
|
11 protocol = "sslv3", |
|
12 key = "../certs/serverAkey.pem", |
|
13 certificate = "../certs/serverA.pem", |
|
14 cafile = "../certs/rootA.pem", |
|
15 verify = {"peer", "fail_if_no_peer_cert"}, |
|
16 options = {"all", "no_sslv2"}, |
|
17 } |
|
18 |
|
19 |
|
20 -- [[ SSL context |
|
21 local ctx = assert(ssl.newcontext(params)) |
|
22 --]] |
|
23 |
|
24 local server = socket.tcp() |
|
25 server:setoption('reuseaddr', true) |
|
26 assert( server:bind("127.0.0.1", 8888) ) |
|
27 server:listen() |
|
28 |
|
29 local peer = server:accept() |
|
30 |
|
31 -- [[ SSL wrapper |
|
32 peer = assert( ssl.wrap(peer, ctx) ) |
|
33 assert( peer:dohandshake() ) |
|
34 --]] |
|
35 |
|
36 while true do |
|
37 local str = peer:receive("*l") |
|
38 print(str) |
|
39 end |
|
40 peer:close() |