Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support ssl #138

Merged
merged 2 commits into from
Oct 25, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -60,6 +60,11 @@ This repository contains the Nebula Graph Console for Nebula Graph 2.0. Nebula G
| `-t/-timeout` | Sets an integer-type timeout threshold for the connection. The unit is second. The default value is 120. |
| `-e/-eval` | Sets a string-type nGQL statement. The nGQL statement is executed once the connection succeeds. The connection stops after the result is returned. |
| `-f/-file` | Sets the path of an nGQL file. The nGQL statements in the file are executed once the connection succeeds. You'll get the return messages and the connection stops then. |
| `-enable_ssl` | Enable SSL when connecting to Nebula Graph |
| `ssl_root_ca_path` | Sets the path of the certification authority file |
| `ssl_cert_path` | Sets the path of the certificate file |
| `ssl_private_key_path` | Sets the path of the private key file |
| `ssl_insecure_skip_verify` | Controls whether a client verifies the server's certificate chain and host name |


E.g.,
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -5,6 +5,6 @@ go 1.11
require (
github.com/jedib0t/go-pretty/v6 v6.0.5
github.com/jievince/liner v1.2.3
github.com/vesoft-inc/nebula-go/v2 v2.5.1
github.com/vesoft-inc/nebula-go/v2 v2.5.2-0.20211022090042-44efb04f7b43
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 // indirect
)
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
@@ -22,8 +22,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/vesoft-inc/nebula-go/v2 v2.5.1 h1:y4gBQzRqb3W4jeBbbAdtCPxVZ4tXKv9TJLHjNuWGhI0=
github.com/vesoft-inc/nebula-go/v2 v2.5.1/go.mod h1:fehDUs97/mpmxXi9WezhznX0Dg7hmQRUoOWgDZv9zG0=
github.com/vesoft-inc/nebula-go/v2 v2.5.2-0.20211022090042-44efb04f7b43 h1:26tpwdUIsvBRiWmTCpK90STfXXV4HiKLfjcWm9YRvXQ=
github.com/vesoft-inc/nebula-go/v2 v2.5.2-0.20211022090042-44efb04f7b43/go.mod h1:fehDUs97/mpmxXi9WezhznX0Dg7hmQRUoOWgDZv9zG0=
golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
100 changes: 89 additions & 11 deletions main.go
Original file line number Diff line number Diff line change
@@ -7,8 +7,11 @@
package main

import (
"crypto/tls"
"crypto/x509"
"flag"
"fmt"
"io/ioutil"
"log"
"os"
"path"
@@ -279,21 +282,76 @@ func loop(c cli.Cli) error {
}
}

func openAndReadFile(path string) ([]byte, error) {
// open file
f, err := os.Open(path)
if err != nil {
return nil, fmt.Errorf("unable to open file %s: %s", path, err)
}
// read file
b, err := ioutil.ReadAll(f)
if err != nil {
return nil, fmt.Errorf("unable to ReadAll of file %s: %s", path, err)
}
return b, nil
}

func genSslConfig(rootCAPath, certPath, privateKeyPath string) (*tls.Config, error) {
rootCA, err := openAndReadFile(rootCAPath)
if err != nil {
return nil, err
}
cert, err := openAndReadFile(certPath)
if err != nil {
return nil, err
}
privateKey, err := openAndReadFile(privateKeyPath)
if err != nil {
return nil, err
}

// generate the client certificate
clientCert, err := tls.X509KeyPair(cert, privateKey)
if err != nil {
return nil, err
}

// parse root CA pem and add into CA pool
rootCAPool := x509.NewCertPool()
ok := rootCAPool.AppendCertsFromPEM(rootCA)
if !ok {
return nil, fmt.Errorf("fail to append supplied cert into tls.Config, please make sure it is a valid certificate")
}

// set tls config
// InsecureSkipVerify is set to true for test purpose ONLY. DO NOT use it in production.
return &tls.Config{
Certificates: []tls.Certificate{clientCert},
RootCAs: rootCAPool,
InsecureSkipVerify: *sslInsecureSkipVerify,
}, nil
}

// Nebula Console version related
var (
gitCommit string
buildDate string
)

var (
address *string = flag.String("addr", "127.0.0.1", "The Nebula Graph IP/HOST address")
port *int = flag.Int("P", -1, "The Nebula Graph Port")
username *string = flag.String("u", "", "The Nebula Graph login user name")
password *string = flag.String("p", "", "The Nebula Graph login password")
timeout *int = flag.Int("t", 0, "The Nebula Graph client connection timeout in seconds, 0 means never timeout")
script *string = flag.String("e", "", "The nGQL directly")
file *string = flag.String("f", "", "The nGQL script file name")
version *bool = flag.Bool("v", false, "The Nebula Console version")
address *string = flag.String("addr", "127.0.0.1", "The Nebula Graph IP/HOST address")
port *int = flag.Int("P", -1, "The Nebula Graph Port")
username *string = flag.String("u", "", "The Nebula Graph login user name")
password *string = flag.String("p", "", "The Nebula Graph login password")
timeout *int = flag.Int("t", 0, "The Nebula Graph client connection timeout in seconds, 0 means never timeout")
script *string = flag.String("e", "", "The nGQL directly")
file *string = flag.String("f", "", "The nGQL script file name")
version *bool = flag.Bool("v", false, "The Nebula Console version")
enableSsl *bool = flag.Bool("enable_ssl", false, "Enable SSL when connecting to Nebula Graph")
sslRootCAPath *string = flag.String("ssl_root_ca_path", "", "SSL root certification authority's file path")
sslCertPath *string = flag.String("ssl_cert_path", "", "SSL certificate's file path")
sslPrivateKeyPath *string = flag.String("ssl_private_key_path", "", "SSL private key's file path")
sslInsecureSkipVerify *bool = flag.Bool("ssl_insecure_skip_verify", false, "Controls whether a client verifies the server's certificate chain and host name.")
)

func init() {
@@ -311,10 +369,22 @@ func validateFlags() {
log.Panicf("Error: argument port is missed!")
}
if len(*username) == 0 {
log.Panicf("Error: username is empty!")
log.Panicf("Error: argument username is empty!")
}
if len(*password) == 0 {
log.Panicf("Error: password is empty!")
log.Panicf("Error: argument password is empty!")
}

if *enableSsl {
if *sslRootCAPath == "" {
log.Panicf("Error: argument ssl_root_ca_path should be specified when enable_ssl is true")
}
if *sslCertPath == "" {
log.Panicf("Error: argument ssl_cert_path should be specified when enable_ssl is true")
}
if *sslPrivateKeyPath == "" {
log.Panicf("Error: argument ssl_private_key_path should be specified when enable_ssl is true")
}
}
}

@@ -353,7 +423,15 @@ func main() {
MinConnPoolSize: 0,
}
var err error
pool, err = nebula.NewConnectionPool(hostList, poolConfig, nebula.DefaultLogger{})
if *enableSsl {
sslConfig, err2 := genSslConfig(*sslRootCAPath, *sslCertPath, *sslPrivateKeyPath)
if err2 != nil {
log.Panicf(fmt.Sprintf("Fail to generate the ssl config, ssl_root_ca_path: %s, ssl_cert_path: %s, ssl_private_key_path: %s, %s", *sslRootCAPath, *sslCertPath, *sslPrivateKeyPath, err2.Error()))
}
pool, err = nebula.NewSslConnectionPool(hostList, poolConfig, sslConfig, nebula.DefaultLogger{})
} else {
pool, err = nebula.NewConnectionPool(hostList, poolConfig, nebula.DefaultLogger{})
}
if err != nil {
log.Panicf(fmt.Sprintf("Fail to initialize the connection pool, host: %s, port: %d, %s", *address, *port, err.Error()))
}
30 changes: 30 additions & 0 deletions test/secrets/test.ca.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,6D12ED8559E80FA3

tv9epnwlt4dP6Q5ee0dACOyFA5BTwYTdoMykQRJrKGwfaNeXUXn+sQ/U/oFHp1Wx
O8VZE+z2aHpiFSTw+Eh6MPt86X5yVG3tpeVO6dErvr8Kd+NpuI8zn7rNoOFRh8wD
33EFcQMLQPneDl10O18hooIoi0qwp1pd63hYZPwEhB3eOrM5Mnv9OVJs65bzYfyf
Wku33YWYxeqlDvMCsou8PZnv/M2wYsr7+QoTcNmGKP45igMthMDBzwgF+q0p9ZZU
N11c6ojAs01kfuqFf3vKfHNYe6zsBiNhnUuEy8enXSxD5E7tR/OI8aEzPLdk7fmN
/UsMK2LE0Yd5iS3O1x/1ZjSBxJ+M/UzzCO692GTAiD6Hc13iJOavq/vt1mEPjfCD
neF38Bhb5DfFi+UAHrz6EHMreamGCzP82us2maIs7mSTq7nXDZfbBc7mBDLAUUnT
J6tlrTyc+DQXzkJa6jmbxJhcsWm6XvjIBEzSXVHxEDPLnZICQk3VXODjCXTD75Rg
0WaS78Ven7DW8wn07q3VzWAFDKaet3VI+TVTv7EfIavlfiA6LSshaENdFLeHahNE
s/V/j5K3Pg6+WQcZRgOsfqIwUCSQxY13R6TTdaaCkLay5BggF5iiAO3pkqsJiadf
w843Ak4USBptymJxoZgJyFtQHpQyNiFfsAbs9BaYbg2evvE7/VQhLk0gQ7HgQMeJ
wgxEQqZQKDCCSugSzY1YEGXKnrZYCKyipzyyH936mE15zNwhYp/Pi2020+gmtP3h
CDfcPs1yeLI2/1JuimafbuKsv9xchWa6ASU8p8Q7wTLtUj9ylLKyA4A/75pK0DXG
Hv/q0O+UfhAMD438SoPBle7RSvIsDU1VjUqstlNybBglBZxGIME7/18+Ms7U32wh
4xFkZwxT2nqFgyk37tXMdMz9UBh12/AXR9NU4XY37C3Ao2TDT7/0DvU6KdJhsDpv
rGcaC2zzhko+0CPrLlk52KbqP003JXiWvOSI+FylyPPDB/YGitmndJUuQblf3u/E
l+tGi9MeSBQeWKV6D3AVnO05AZjfTUzSK0vw4DgNh5YPNJvLy31B7kDAS88vyGI1
t6MBwjW4/tz/nS/p1Go3mSzBhPkIsCrZE+ar7lH8p8JqkLl4fXIMaVKIfyfJdzyS
lkh3K7bOGDPegxxxaWdb+EnC7k+1R3EOU7uJFW61HyrGI3q6Y7kOl5aYSJ5Ge1Uv
PycFWHWVTHq/R7HRE6HIJzGe/PnLIbStXLDFeivjfcYq1YaSaF8Vl+xg+0u3ULOl
P6IuPTph6dlcgttRZVl3ETcF0T+2wfbUwgjf0ZiguCJfR2jLGhPl1KBg0Kd9cTSY
zI3YMMd2G8hApt/QFlm4Ry8CqaJUmDcjDNIJT3M+RldUgfz37NsX05cA5e9+I1AL
2406F/v5U9gWsYx7HuwJtQrDzYYDbl1GD4H+qHFJE5JYhPP4AyWYxJ1NR5dqyvrt
+3r5+xlwZrS76c10RsBWL7th8ZEzRxOZxbtLwbf4bG/tIGfQP2sTnWwA+qym6b2S
sRduqOTP+xwnhOq/ZKn8lfsDfhT8CPnKHBsd09kM9y/UWuxFe0upLydRLE/Wsb9s
-----END RSA PRIVATE KEY-----
1 change: 1 addition & 0 deletions test/secrets/test.ca.password
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
vesoft
24 changes: 24 additions & 0 deletions test/secrets/test.ca.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
-----BEGIN CERTIFICATE-----
MIIEGzCCAwOgAwIBAgIUDcmZFpL4PcdCXfLRBK8bR2vb39cwDQYJKoZIhvcNAQEL
BQAwgZwxCzAJBgNVBAYTAkNOMREwDwYDVQQIDAhaaGVqaWFuZzERMA8GA1UEBwwI
SGFuZ3pob3UxFDASBgNVBAoMC1Zlc29mdCBJbmMuMRAwDgYDVQQLDAdzZWN0aW9u
MRYwFAYDVQQDDA1zaHlsb2NrIGh1YW5nMScwJQYJKoZIhvcNAQkBFhhzaHlsb2Nr
Lmh1YW5nQHZlc29mdC5jb20wHhcNMjEwODE5MDkyNDQ3WhcNMjUwODE4MDkyNDQ3
WjCBnDELMAkGA1UEBhMCQ04xETAPBgNVBAgMCFpoZWppYW5nMREwDwYDVQQHDAhI
YW5nemhvdTEUMBIGA1UECgwLVmVzb2Z0IEluYy4xEDAOBgNVBAsMB3NlY3Rpb24x
FjAUBgNVBAMMDXNoeWxvY2sgaHVhbmcxJzAlBgkqhkiG9w0BCQEWGHNoeWxvY2su
aHVhbmdAdmVzb2Z0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AMEAgpamCQHl+8JnUHI6/VmJHjDLYJLTliN/CwpFrhMqIVjJ8wG57WYLpXpn91Lz
eHu52LkVzcikybIJ2a+LOTvnhNFdbmTbqDtrb+s6wM/sO+nF6tU2Av4e5zhyKoeR
LL+rHMk3nymohbdN4djySFmOOU5A1O/4b0bZz4Ylu995kUawdiaEo13BzxxOC7Ik
Gge5RyDcm0uLXZqTAPy5Sjv/zpOyj0AqL1CJUH7XBN9OMRhVU0ZX9nHWl1vgLRld
J6XT17Y9QbbHhCNEdAmFE5kEFgCvZc+MungUYABlkvoj86TLmC/FMV6fWdxQssyd
hS+ssfJFLaTDaEFz5a/Tr48CAwEAAaNTMFEwHQYDVR0OBBYEFK0GVrQx+wX1GCHy
e+6fl4X+prmYMB8GA1UdIwQYMBaAFK0GVrQx+wX1GCHye+6fl4X+prmYMA8GA1Ud
EwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHqP8P+ZUHmngviHLSSN1ln5
Mx4BCkVeFRUaFx0yFXytV/iLXcG2HpFg3A9rAFoYgCDwi1xpsERnBZ/ShTv/eFOc
IxBY5yggx3/lGi8tAgvUdarhd7mQO67UJ0V4YU3hAkbnZ8grHHXj+4hfgUpY4ok6
yaed6HXwknBb9W8N1jZI8ginhkhjaeRCHdMiF+fBvNCtmeR1bCml1Uz7ailrpcaT
Mf84+5VYuFEnaRZYWFNsWNCOBlJ/6/b3V10vMXzMmYHqz3xgAq0M3fVTFTzopnAX
DLSzorL/dYVdqEDCQi5XI9YAlgWN4VeGzJI+glkLOCNzHxRNP6Qev+YI+7Uxz6I=
-----END CERTIFICATE-----
1 change: 1 addition & 0 deletions test/secrets/test.ca.srl
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
7E73E19D9FB0276F6149040F5FEB802543EBB3F9
21 changes: 21 additions & 0 deletions test/secrets/test.client.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDZjCCAk4CFH5z4Z2fsCdvYUkED1/rgCVD67P5MA0GCSqGSIb3DQEBCwUAMIGc
MQswCQYDVQQGEwJDTjERMA8GA1UECAwIWmhlamlhbmcxETAPBgNVBAcMCEhhbmd6
aG91MRQwEgYDVQQKDAtWZXNvZnQgSW5jLjEQMA4GA1UECwwHc2VjdGlvbjEWMBQG
A1UEAwwNc2h5bG9jayBodWFuZzEnMCUGCSqGSIb3DQEJARYYc2h5bG9jay5odWFu
Z0B2ZXNvZnQuY29tMB4XDTIxMDkyODEyMzk1NloXDTI0MDEwMTEyMzk1NlowQjEL
MAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UECgwTRGVm
YXVsdCBDb21wYW55IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
ANqFy+Fhsb9ptr9CfcmqAt/AP2ibrUH1j9UVQZTwgSrApAAOjgWqLWaO+o6gz7Ds
ZSSx6OBXpyuA+blYcCeFjr45c2l4sdpy6G9bfSOKCzh8yZLlPAaDzgbNnsta/kqR
fePM3kV2DWxQQEXXKyHCjMgYPFl2nVpJ4/z669SLvDCr4UocmE7PG5OcK4AURgnc
eIGLszurBBgyFmxKZVxrdMRx5Xmidi8gIL5i97laMGWE6qtiOSRnWoh52vdB+2Dm
rkByY/7tsApXRPzSNjA/D9DYRzN7n3gz/2ndUFO7qLZBNv9rnvauqeaksdP+xpWb
jfMG7rVV6w7bE2PGqLp4v4kCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAhyJ/ZgYR
2EddiwHPT+twKTzgUjPKgnSkCfAE0dTRlkZIB9K/XPKhoG1ocalgxuyfwTKQhSmf
uWcV43jWpj9rizERcekugJoElz9JqF19u01RdoIIv10aZVb4+nhpYJ3ETNlV+pM6
59WgSGqx53Cbrm9WaVqepGsFHtpU9SGZ/kmL4Yu9omWoyJ1uOf1aO4T9q5M/kA8O
Feb3MKTUwBZn+axsIzMpnNlqhltvLzPvTfVP/s9bzbP/VsQkIpNOM833gVU1IREM
LMNTliOkO6heVHs5tja9NjgTmpgZJASbUk5k7xAVk7obrlD/auYo/HN+pMMCsSeu
WMAMtzWQz/fA9w==
-----END CERTIFICATE-----
17 changes: 17 additions & 0 deletions test/secrets/test.client.csr
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICnjCCAYYCAQAwQjELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0
eTEcMBoGA1UECgwTRGVmYXVsdCBDb21wYW55IEx0ZDCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBANqFy+Fhsb9ptr9CfcmqAt/AP2ibrUH1j9UVQZTwgSrA
pAAOjgWqLWaO+o6gz7DsZSSx6OBXpyuA+blYcCeFjr45c2l4sdpy6G9bfSOKCzh8
yZLlPAaDzgbNnsta/kqRfePM3kV2DWxQQEXXKyHCjMgYPFl2nVpJ4/z669SLvDCr
4UocmE7PG5OcK4AURgnceIGLszurBBgyFmxKZVxrdMRx5Xmidi8gIL5i97laMGWE
6qtiOSRnWoh52vdB+2DmrkByY/7tsApXRPzSNjA/D9DYRzN7n3gz/2ndUFO7qLZB
Nv9rnvauqeaksdP+xpWbjfMG7rVV6w7bE2PGqLp4v4kCAwEAAaAXMBUGCSqGSIb3
DQEJBzEIDAYxMjM0NTYwDQYJKoZIhvcNAQELBQADggEBAHWHy1/p9Vn9klqdADBl
74SFoPFg6ErUQyBtBAJf+9m43hPIH7UNiPXb7R3p8fnsnKEO6Rb37I9nY3WeMLaG
MLjzzHg1+cbjgfsbFa/IZbjeRwVTAil5h/9E8Hm7E3fIllwetAFSIXOs1CvsCieR
zi+fnyX0s+az3AaV74wB2+1EODq+881oj6Y063DNa43fop7vHq37KJP0DnjjF3pv
xtf6uyyKvNhsEh4gIRBdEzBJ4A00TcI+uZ3gOdYEv7sIjwmKZzzEHFgpNXbj1D2Y
QLtZ/d+BwxN4ItzuyMYEc7sTlEKZJQvH1C8DA7SgIT3BSyRC8TQsBUWZ7tg1StlM
jLI=
-----END CERTIFICATE REQUEST-----
27 changes: 27 additions & 0 deletions test/secrets/test.client.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA2oXL4WGxv2m2v0J9yaoC38A/aJutQfWP1RVBlPCBKsCkAA6O
BaotZo76jqDPsOxlJLHo4FenK4D5uVhwJ4WOvjlzaXix2nLob1t9I4oLOHzJkuU8
BoPOBs2ey1r+SpF948zeRXYNbFBARdcrIcKMyBg8WXadWknj/Prr1Iu8MKvhShyY
Ts8bk5wrgBRGCdx4gYuzO6sEGDIWbEplXGt0xHHleaJ2LyAgvmL3uVowZYTqq2I5
JGdaiHna90H7YOauQHJj/u2wCldE/NI2MD8P0NhHM3ufeDP/ad1QU7uotkE2/2ue
9q6p5qSx0/7GlZuN8wbutVXrDtsTY8aouni/iQIDAQABAoIBAAoCevZV/UhhVUep
ig2ExiDts3ndN7B/yRjfomNqKOCGdnyyLftAclfyULPb1eeqzG9D3wD3wuaRP98n
l+uXiJRaGVlJeAwjm1YOgMrx9dWekbUy3u8FdpiFLrLt9hwAUh3vMndIExFVE7yf
QJCJUt2PjqQidM6/97uM2uSfif1IrJCVt7G9Q1ukI2X5RsTihmFLJjVkfYE83T5N
8wNGKKDyy+PuMjXl3gaHux7mOiorILHVFqzMMzgfEvghobTN/axLEAzgVJu+0Sqq
XrueMht4QIIST5ix1d9KN9kGZ5dq1MJ4Lfy5NjZ6eYhxdkq41O3USSJQQN/zW+uM
Ig/0JAECgYEA/DsRsWfaV7vo/fh0rZGP5pRDUSXKXliqnyukjCPTyuk9VHOSIDPh
uEvcdcP47iu2VwnKum5RRS8lu0Nd4I3qmvgepUp71cBsM9Bn/89WoLU5/lw3pbDs
saOW1lI5kZ/FCzDSGnGLFcC8PMd9MmqUIzzOkhvDn2XiQGeOkv5b7UECgYEA3cnG
JTNIPg1L55fwX9Uj3tyb03T8iqdHd6oeUS+fsBKDdgOrL5lW+WIsUJ1uIUZ8+pA2
v4f2W+4yQueEcDvmi3+GB12Zzlfz26n7O9ZW+cvE1NZXycRtdZaDRFijovTZnnpv
3SFvDcdc8aUQ833SZ5XhzykPCfrRRFNd+x8EGEkCgYAhsfZsH7aQb97xRqa3pTF3
GSlhBs5hCjFI8DicLBEYE06JIKNNwACQcTnzVYnEr3w9ZmZ5v1EGEAVXXemFnQ/R
QgI+DJQ8euc5iMbL6rPk5jDoJQOeE+Oa24LEANoF9TUKiKwYskBlWIkNCY1VFd3S
U0Y5SJI6kg7Gkc7/HhHDwQKBgQCT1zqT9ZlEc8yTNn7vAr8Egf4FeMgXDObg56+J
4rsJvW2QL2XfNtH5Lu3nVungmIIa7CLyjYk1QpSScI2h2uwVNQ58vnIWUB6n4Kkt
+/TCUoiEb9TZFGz6ozghSQzbRWgC8g67UtwaTTixg5zHEqo8jnaVhwMVXfI9H21Y
RhaOsQKBgQCOf8JLdIEMH8z0bGh2He0mv0qBcN9EUuhSw85+JZUReq+2sEeT8zM3
hl1RMXKS3K+u8IiGAffESju5EK85/hD0NsSv4EGOWfuuN4/jRQ9MGJ9kEL6BBM9T
FAxvY63PS6yOy+rgT21dc8GOjlM1DOTPZzCrnKW1kvwaBsSZeNF59A==
-----END RSA PRIVATE KEY-----
27 changes: 27 additions & 0 deletions test/secrets/test.self-signed.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAwQCClqYJAeX7wmdQcjr9WYkeMMtgktOWI38LCkWuEyohWMnz
AbntZgulemf3UvN4e7nYuRXNyKTJsgnZr4s5O+eE0V1uZNuoO2tv6zrAz+w76cXq
1TYC/h7nOHIqh5Esv6scyTefKaiFt03h2PJIWY45TkDU7/hvRtnPhiW733mRRrB2
JoSjXcHPHE4LsiQaB7lHINybS4tdmpMA/LlKO//Ok7KPQCovUIlQftcE304xGFVT
Rlf2cdaXW+AtGV0npdPXtj1BtseEI0R0CYUTmQQWAK9lz4y6eBRgAGWS+iPzpMuY
L8UxXp9Z3FCyzJ2FL6yx8kUtpMNoQXPlr9OvjwIDAQABAoIBAFcIFNs8OhmaDQJo
NlWcljx24Z9dRspPEYgmNONH8qx/thPk1Wk034HBxLhDA7trQSyB7OHhnC9bZ/ya
Bojrfj6uMy16NVrT1rQcyZZIo0PfolDTyAanWYgghWHl0ZnadFRmJA/0vhg5/zpe
q3Z6IvgHc33/LEaeQAeyFqvGfkbSMZz2cj9na9MgW5usMHrQxtBdtuwVrtj4dKY+
SXhQz7G5gaq5byromeE7U0fhPwGVqHy/QvHJbIQhowzu2cCFAQaBOMcgy8hqKVB3
dZlcRkFU1/iS0MsLmsv7rRAt/r43zW0dvFqZ7WzN9McQGF7Og4CN/GNGul0Q1bIu
NcKdJLkCgYEA4RXEGLzR1gTolYXImRdXmeTU7XqoXt/CNtg5dumqUYRDD1WmOtp5
XfEZdcEHTCfPQWIXsC8dM6+MFujHcnZV+NPx7xPe/pKJ4adAe+yHH1gsj4elvl7z
shcgT3/0fsj3dGFnsxBww1djIBH+gf5Niz44+QaqDlDNEkYBXdBmB6sCgYEA24Kr
fYaU7qP+SPamVC6p8NU6nddmuJl+n5XBmnDwbYaM6OyCEetCH3LQHYSkxjtJ3q/O
iSezxZzcBReP1MbZZbn2oqo8w/nE/LKrJytClLyDoJYaF5WigInaZ/D3QGLFH4J+
kjYrjTuJGXq5LJjJ1hsxIowi+CQcAr67wSrcg60CgYEA2VVa80felPhIW5fCCZAw
VbhOoL8+s9z6elptohQdEHjVB4l76HfrmHmkS78GfNIznL5KgSP83lsyuSwq6Kq6
eHitsltNhiGYYPpNmVrZXbqVzED+GMM2K0+JMzopqgICba1fo9bMCtHmNKErTflu
hnSeLlXw/cGnQW23BA6ldeECgYEA0NsfeCvZAMagZ6Pm1iogH7mCMDSG1BWX2ReQ
QfY7jLp80BJYH9yL6YhAZBWVAdffjTYReYaBEgERhvbIL1eT+apa9KKtdnnr59PH
7VjH3OURCHZJFS+Wkl6XpFYtquFPVY/ABjXsclC3Pbr6/WfSgxkUQx67FwakcCgy
VLUHY3ECgYEAnCZybgd3rpZwqSdljHne4xvvDFRwRev4JKAkXhXehQa8Yeb/vEBp
9unBdzWR8EbE/QmyiUAKKaqFVHtsneGCwtzB08tJeb9QXZ09rtf5dRAMUbQW/gHg
Bj3Uz0ZzisnXqy6JTXQzaCveVQlLzsmVsCoe5nA3yrkOam3BG3i16KI=
-----END RSA PRIVATE KEY-----
1 change: 1 addition & 0 deletions test/secrets/test.self-signed.password
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
vesoft
24 changes: 24 additions & 0 deletions test/secrets/test.self-signed.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
-----BEGIN CERTIFICATE-----
MIIEGzCCAwOgAwIBAgIUDcmZFpL4PcdCXfLRBK8bR2vb39cwDQYJKoZIhvcNAQEL
BQAwgZwxCzAJBgNVBAYTAkNOMREwDwYDVQQIDAhaaGVqaWFuZzERMA8GA1UEBwwI
SGFuZ3pob3UxFDASBgNVBAoMC1Zlc29mdCBJbmMuMRAwDgYDVQQLDAdzZWN0aW9u
MRYwFAYDVQQDDA1zaHlsb2NrIGh1YW5nMScwJQYJKoZIhvcNAQkBFhhzaHlsb2Nr
Lmh1YW5nQHZlc29mdC5jb20wHhcNMjEwODE5MDkyNDQ3WhcNMjUwODE4MDkyNDQ3
WjCBnDELMAkGA1UEBhMCQ04xETAPBgNVBAgMCFpoZWppYW5nMREwDwYDVQQHDAhI
YW5nemhvdTEUMBIGA1UECgwLVmVzb2Z0IEluYy4xEDAOBgNVBAsMB3NlY3Rpb24x
FjAUBgNVBAMMDXNoeWxvY2sgaHVhbmcxJzAlBgkqhkiG9w0BCQEWGHNoeWxvY2su
aHVhbmdAdmVzb2Z0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AMEAgpamCQHl+8JnUHI6/VmJHjDLYJLTliN/CwpFrhMqIVjJ8wG57WYLpXpn91Lz
eHu52LkVzcikybIJ2a+LOTvnhNFdbmTbqDtrb+s6wM/sO+nF6tU2Av4e5zhyKoeR
LL+rHMk3nymohbdN4djySFmOOU5A1O/4b0bZz4Ylu995kUawdiaEo13BzxxOC7Ik
Gge5RyDcm0uLXZqTAPy5Sjv/zpOyj0AqL1CJUH7XBN9OMRhVU0ZX9nHWl1vgLRld
J6XT17Y9QbbHhCNEdAmFE5kEFgCvZc+MungUYABlkvoj86TLmC/FMV6fWdxQssyd
hS+ssfJFLaTDaEFz5a/Tr48CAwEAAaNTMFEwHQYDVR0OBBYEFK0GVrQx+wX1GCHy
e+6fl4X+prmYMB8GA1UdIwQYMBaAFK0GVrQx+wX1GCHye+6fl4X+prmYMA8GA1Ud
EwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHqP8P+ZUHmngviHLSSN1ln5
Mx4BCkVeFRUaFx0yFXytV/iLXcG2HpFg3A9rAFoYgCDwi1xpsERnBZ/ShTv/eFOc
IxBY5yggx3/lGi8tAgvUdarhd7mQO67UJ0V4YU3hAkbnZ8grHHXj+4hfgUpY4ok6
yaed6HXwknBb9W8N1jZI8ginhkhjaeRCHdMiF+fBvNCtmeR1bCml1Uz7ailrpcaT
Mf84+5VYuFEnaRZYWFNsWNCOBlJ/6/b3V10vMXzMmYHqz3xgAq0M3fVTFTzopnAX
DLSzorL/dYVdqEDCQi5XI9YAlgWN4VeGzJI+glkLOCNzHxRNP6Qev+YI+7Uxz6I=
-----END CERTIFICATE-----