forked from incognito-io/go-openvpn
-
Notifications
You must be signed in to change notification settings - Fork 2
/
basic-server-tls.go
61 lines (51 loc) · 1.49 KB
/
basic-server-tls.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package main
import (
"log"
"github.com/lighthouse8/go-openvpn"
"github.com/stamp/go-openssl"
)
func main() {
// This example first tries to load and if not found creates all the components needed for a TLS tunnel
var err error
var ca *openssl.CA
var cert *openssl.Cert
var dh *openssl.DH
var ta *openssl.TA
ssl := openssl.Openssl{
Path: "certs", // A storage folder, where to store all certs
Country: "SE",
Province: "Example provice",
City: "Example city",
Organization: "Example organization",
CommonName: "Example commonname",
Email: "Example email",
}
if ca, err = ssl.LoadOrCreateCA("ca.crt", "ca.key"); err != nil {
log.Println("LoadOrCreateCA failed: ", err)
return
}
// Note the last bool parameter! This is important beacuse it will generate a "server"-cert
if cert, err = ssl.LoadOrCreateCert("server/server.crt", "server/server.key", "server", ca, true); err != nil {
log.Println("LoadOrCreateCert failed: ", err)
return
}
if dh, err = ssl.LoadOrCreateDH("DH1024.pem", 1024); err != nil {
log.Println("LoadOrCreateDH failed: ", err)
return
}
if ta, err = ssl.LoadOrCreateTA("TA.key"); err != nil {
log.Println("LoadOrCreateTA failed: ", err)
return
}
// Create the openvpn instance
p := openvpn.NewSslServer(ca, cert, dh, ta, "sample-config-ssl-server.json")
// Start the process
p.Start()
// Listen for events
for {
select {
case event := <-p.Events:
log.Println("Event: ", event.Name, "(", event.Args, ")")
}
}
}