21 req_extensions = "v3_extensions", |
21 req_extensions = "v3_extensions", |
22 x509_extensions = "v3_extensions", |
22 x509_extensions = "v3_extensions", |
23 prompt = "no", |
23 prompt = "no", |
24 }, |
24 }, |
25 distinguished_name = { |
25 distinguished_name = { |
26 commonName = "example.com", |
|
27 countryName = "GB", |
26 countryName = "GB", |
|
27 -- stateOrProvinceName = "", |
28 localityName = "The Internet", |
28 localityName = "The Internet", |
29 organizationName = "Your Organisation", |
29 organizationName = "Your Organisation", |
30 organizationalUnitName = "XMPP Department", |
30 organizationalUnitName = "XMPP Department", |
|
31 commonName = "example.com", |
31 emailAddress = "xmpp@example.com", |
32 emailAddress = "xmpp@example.com", |
32 }, |
33 }, |
33 v3_extensions = { |
34 v3_extensions = { |
34 basicConstraints = "CA:FALSE", |
35 basicConstraints = "CA:FALSE", |
35 keyUsage = "digitalSignature,keyEncipherment", |
36 keyUsage = "digitalSignature,keyEncipherment", |
41 otherName = {}, |
42 otherName = {}, |
42 }, |
43 }, |
43 }, ssl_config_mt); |
44 }, ssl_config_mt); |
44 end |
45 end |
45 |
46 |
|
47 local DN_order = { |
|
48 "countryName"; |
|
49 "stateOrProvinceName"; |
|
50 "localityName"; |
|
51 "streetAddress"; |
|
52 "organizationName"; |
|
53 "organizationalUnitName"; |
|
54 "commonName"; |
|
55 "emailAddress"; |
|
56 } |
|
57 _M._DN_order = DN_order; |
46 function ssl_config:serialize() |
58 function ssl_config:serialize() |
47 local s = ""; |
59 local s = ""; |
48 for k, t in pairs(self) do |
60 for k, t in pairs(self) do |
49 s = s .. ("[%s]\n"):format(k); |
61 s = s .. ("[%s]\n"):format(k); |
50 if k == "subject_alternative_name" then |
62 if k == "subject_alternative_name" then |
51 for san, n in pairs(t) do |
63 for san, n in pairs(t) do |
52 for i = 1,#n do |
64 for i = 1,#n do |
53 s = s .. s_format("%s.%d = %s\n", san, i -1, n[i]); |
65 s = s .. s_format("%s.%d = %s\n", san, i -1, n[i]); |
|
66 end |
|
67 end |
|
68 elseif k == "distinguished_name" then |
|
69 for i=1,#DN_order do |
|
70 local k = DN_order[i] |
|
71 local v = t[k]; |
|
72 if v then |
|
73 s = s .. ("%s = %s\n"):format(k, v); |
54 end |
74 end |
55 end |
75 end |
56 else |
76 else |
57 for k, v in pairs(t) do |
77 for k, v in pairs(t) do |
58 s = s .. ("%s = %s\n"):format(k, v); |
78 s = s .. ("%s = %s\n"):format(k, v); |