test: update mongodb output to use test containers (#11137)

This commit is contained in:
Joshua Powers 2022-05-19 14:14:02 -06:00 committed by GitHub
parent 57f5c1cb8a
commit deb0c6e207
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 417 additions and 240 deletions

View File

@ -200,7 +200,7 @@ func TestTags(t *testing.T) {
require.True(t, acc.HasMeasurement("x509_cert")) require.True(t, acc.HasMeasurement("x509_cert"))
require.True(t, acc.HasTag("x509_cert", "common_name")) require.True(t, acc.HasTag("x509_cert", "common_name"))
require.Equal(t, "server.localdomain", acc.TagValue("x509_cert", "common_name")) require.Equal(t, "localhost", acc.TagValue("x509_cert", "common_name"))
require.True(t, acc.HasTag("x509_cert", "signature_algorithm")) require.True(t, acc.HasTag("x509_cert", "signature_algorithm"))
require.Equal(t, "SHA256-RSA", acc.TagValue("x509_cert", "signature_algorithm")) require.Equal(t, "SHA256-RSA", acc.TagValue("x509_cert", "signature_algorithm"))

View File

@ -1,22 +0,0 @@
FROM docker.io/library/mongo:latest
RUN apt-get update && \
apt-get install -y openssh-client
WORKDIR /var/log
RUN mkdir -p mongodb_noauth/ mongodb_scram/ mongodb_x509/ mongodb_x509_expire/
WORKDIR /opt
COPY ./testutil/pki/tls-certs.sh .
RUN mkdir -p data/noauth data/scram data/x509 data/x509_expire
RUN /opt/tls-certs.sh
COPY ./plugins/outputs/mongodb/dev/mongodb.sh .
RUN chmod +x mongodb.sh
EXPOSE 27017
EXPOSE 27018
EXPOSE 27019
EXPOSE 27020
CMD ./mongodb.sh

View File

@ -1,34 +0,0 @@
#!/bin/bash
# no auth
mongod --dbpath data/noauth --fork --logpath /var/log/mongodb_noauth/mongod.log --bind_ip 0.0.0.0 --port 27017
# scram auth
mongod --dbpath data/scram --fork --logpath /var/log/mongodb_scram/mongod.log --bind_ip 0.0.0.0 --port 27018
mongo localhost:27018/admin --eval "db.createUser({user:\"root\", pwd:\"changeme\", roles:[{role:\"root\",db:\"admin\"}]})"
mongo localhost:27018/admin --eval "db.shutdownServer()"
mongod --dbpath data/scram --fork --logpath /var/log/mongodb_scram/mongod.log --auth --setParameter authenticationMechanisms=SCRAM-SHA-256 --bind_ip 0.0.0.0 --port 27018
# get client certificate subject for creating x509 authenticating user
dn=$(openssl x509 -in ./private/client.pem -noout -subject -nameopt RFC2253 | sed 's/subject=//g')
# x509 auth
mongod --dbpath data/x509 --fork --logpath /var/log/mongodb_x509/mongod.log --bind_ip 0.0.0.0 --port 27019
mongo localhost:27019/admin --eval "db.getSiblingDB(\"\$external\").runCommand({createUser:\"$dn\",roles:[{role:\"root\",db:\"admin\"}]})"
mongo localhost:27019/admin --eval "db.shutdownServer()"
mongod --dbpath data/x509 --fork --logpath /var/log/mongodb_x509/mongod.log --auth --setParameter authenticationMechanisms=MONGODB-X509 --tlsMode preferTLS --tlsCAFile certs/cacert.pem --tlsCertificateKeyFile private/server.pem --bind_ip 0.0.0.0 --port 27019
# x509 auth short expirey
# mongodb will not start with an expired certificate. service must be started before certificate expires. tests should be run after certificate expiry
mongod --dbpath data/x509_expire --fork --logpath /var/log/mongodb_x509_expire/mongod.log --bind_ip 0.0.0.0 --port 27020
mongo localhost:27020/admin --eval "db.getSiblingDB(\"\$external\").runCommand({createUser:\"$dn\",roles:[{role:\"root\",db:\"admin\"}]})"
mongo localhost:27020/admin --eval "db.shutdownServer()"
mongod --dbpath data/x509_expire --fork --logpath /var/log/mongodb_x509_expire/mongod.log --auth --setParameter authenticationMechanisms=MONGODB-X509 --tlsMode preferTLS --tlsCAFile certs/cacert.pem --tlsCertificateKeyFile private/serverexp.pem --bind_ip 0.0.0.0 --port 27020
# note about key size and mongodb
# x509 must be 2048 bytes or stronger in order for mongodb to start. otherwise you will receive similar error below
# {"keyFile":"/opt/private/server.pem","error":"error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small"}
# copy key files to /opt/export. docker volume should point /opt/export to outputs/mongodb/dev in order to run non short x509 tests
cp /opt/certs/cacert.pem /opt/private/client.pem /opt/private/clientenc.pem /opt/export
while true; do sleep 1; done # leave container running.

View File

@ -1,6 +1,9 @@
package mongodb package mongodb
import ( import (
"context"
"fmt"
"path/filepath"
"testing" "testing"
"time" "time"
@ -8,6 +11,8 @@ import (
"github.com/influxdata/telegraf/plugins/common/tls" "github.com/influxdata/telegraf/plugins/common/tls"
"github.com/influxdata/telegraf/testutil" "github.com/influxdata/telegraf/testutil"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/testcontainers/testcontainers-go"
"github.com/testcontainers/testcontainers-go/wait"
) )
func TestConnectAndWriteIntegrationNoAuth(t *testing.T) { func TestConnectAndWriteIntegrationNoAuth(t *testing.T) {
@ -15,8 +20,34 @@ func TestConnectAndWriteIntegrationNoAuth(t *testing.T) {
t.Skip("Skipping integration test in short mode") t.Skip("Skipping integration test in short mode")
} }
req := testcontainers.GenericContainerRequest{
ContainerRequest: testcontainers.ContainerRequest{
Image: "mongo",
ExposedPorts: []string{"27017/tcp"},
WaitingFor: wait.NewHTTPStrategy("/").WithPort("27017"),
},
Started: true,
}
ctx := context.Background()
container, err := testcontainers.GenericContainer(ctx, req)
require.NoError(t, err, "starting container failed")
defer func() {
require.NoError(t, container.Terminate(ctx), "terminating container failed")
}()
host, err := container.Host(ctx)
require.NoError(t, err, "getting container host address failed")
require.NotEmpty(t, host)
natPort, err := container.MappedPort(ctx, "27017/tcp")
require.NoError(t, err, "getting container host port failed")
port := natPort.Port()
require.NotEmpty(t, port)
// Run test
plugin := &MongoDB{ plugin := &MongoDB{
Dsn: "mongodb://localhost:27017", Dsn: fmt.Sprintf("mongodb://localhost:%s", port),
AuthenticationType: "NONE", AuthenticationType: "NONE",
MetricDatabase: "telegraf_test", MetricDatabase: "telegraf_test",
MetricGranularity: "seconds", MetricGranularity: "seconds",
@ -34,6 +65,37 @@ func TestConnectAndWriteIntegrationSCRAMAuth(t *testing.T) {
t.Skip("Skipping integration test in short mode") t.Skip("Skipping integration test in short mode")
} }
initdb, err := filepath.Abs("testdata/auth_scram")
require.NoError(t, err)
req := testcontainers.GenericContainerRequest{
ContainerRequest: testcontainers.ContainerRequest{
Image: "mongo",
BindMounts: map[string]string{
"/docker-entrypoint-initdb.d": initdb,
},
ExposedPorts: []string{"27017/tcp"},
WaitingFor: wait.NewHTTPStrategy("/").WithPort("27017"),
},
Started: true,
}
ctx := context.Background()
container, err := testcontainers.GenericContainer(ctx, req)
require.NoError(t, err, "starting container failed")
defer func() {
require.NoError(t, container.Terminate(ctx), "terminating container failed")
}()
host, err := container.Host(ctx)
require.NoError(t, err, "getting container host address failed")
require.NotEmpty(t, host)
natPort, err := container.MappedPort(ctx, "27017/tcp")
require.NoError(t, err, "getting container host port failed")
port := natPort.Port()
require.NotEmpty(t, port)
tests := []struct { tests := []struct {
name string name string
plugin *MongoDB plugin *MongoDB
@ -42,7 +104,7 @@ func TestConnectAndWriteIntegrationSCRAMAuth(t *testing.T) {
{ {
name: "success with scram authentication", name: "success with scram authentication",
plugin: &MongoDB{ plugin: &MongoDB{
Dsn: "mongodb://localhost:27018/admin", Dsn: fmt.Sprintf("mongodb://localhost:%s/admin", port),
AuthenticationType: "SCRAM", AuthenticationType: "SCRAM",
Username: "root", Username: "root",
Password: "changeme", Password: "changeme",
@ -56,7 +118,7 @@ func TestConnectAndWriteIntegrationSCRAMAuth(t *testing.T) {
{ {
name: "fail with scram authentication bad password", name: "fail with scram authentication bad password",
plugin: &MongoDB{ plugin: &MongoDB{
Dsn: "mongodb://localhost:27018/admin", Dsn: fmt.Sprintf("mongodb://localhost:%s/admin", port),
AuthenticationType: "SCRAM", AuthenticationType: "SCRAM",
Username: "root", Username: "root",
Password: "root", Password: "root",
@ -100,6 +162,53 @@ func TestConnectAndWriteIntegrationX509Auth(t *testing.T) {
t.Skip("Skipping integration test in short mode") t.Skip("Skipping integration test in short mode")
} }
pki := testutil.NewPKI("../../../testutil/pki")
// bind mount files
initdb, err := filepath.Abs("testdata/auth_x509")
require.NoError(t, err)
cacert, err := filepath.Abs(pki.CACertPath())
require.NoError(t, err)
serverpem, err := filepath.Abs(pki.ServerCertAndKeyPath())
require.NoError(t, err)
req := testcontainers.GenericContainerRequest{
ContainerRequest: testcontainers.ContainerRequest{
Image: "mongo",
BindMounts: map[string]string{
"/docker-entrypoint-initdb.d": initdb,
"/cacert.pem": cacert,
"/server.pem": serverpem,
},
ExposedPorts: []string{"27017/tcp"},
Entrypoint: []string{
"docker-entrypoint.sh",
"--auth", "--setParameter", "authenticationMechanisms=MONGODB-X509",
"--tlsMode", "preferTLS",
"--tlsCAFile", "/cacert.pem",
"--tlsCertificateKeyFile", "/server.pem",
},
WaitingFor: wait.NewHTTPStrategy("/").WithPort("27017"),
},
Started: true,
}
ctx := context.Background()
cont, err := testcontainers.GenericContainer(ctx, req)
require.NoError(t, err, "starting container failed")
defer func() {
require.NoError(t, cont.Terminate(ctx), "terminating container failed")
}()
host, err := cont.Host(ctx)
require.NoError(t, err, "getting container host address failed")
require.NotEmpty(t, host)
natPort, err := cont.MappedPort(ctx, "27017/tcp")
require.NoError(t, err, "getting container host port failed")
port := natPort.Port()
require.NotEmpty(t, port)
tests := []struct { tests := []struct {
name string name string
plugin *MongoDB plugin *MongoDB
@ -108,15 +217,15 @@ func TestConnectAndWriteIntegrationX509Auth(t *testing.T) {
{ {
name: "success with x509 authentication", name: "success with x509 authentication",
plugin: &MongoDB{ plugin: &MongoDB{
Dsn: "mongodb://localhost:27019", Dsn: fmt.Sprintf("mongodb://localhost:%s", port),
AuthenticationType: "X509", AuthenticationType: "X509",
MetricDatabase: "telegraf_test", MetricDatabase: "telegraf_test",
MetricGranularity: "seconds", MetricGranularity: "seconds",
ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second), ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second),
TTL: config.Duration(time.Duration(5) * time.Minute), TTL: config.Duration(time.Duration(5) * time.Minute),
ClientConfig: tls.ClientConfig{ ClientConfig: tls.ClientConfig{
TLSCA: "dev/cacert.pem", TLSCA: pki.CACertPath(),
TLSKey: "dev/client.pem", TLSKey: pki.ClientCertAndKeyPath(),
InsecureSkipVerify: false, InsecureSkipVerify: false,
}, },
}, },
@ -127,15 +236,15 @@ func TestConnectAndWriteIntegrationX509Auth(t *testing.T) {
{ {
name: "success with x509 authentication using encrypted key file", name: "success with x509 authentication using encrypted key file",
plugin: &MongoDB{ plugin: &MongoDB{
Dsn: "mongodb://localhost:27019", Dsn: fmt.Sprintf("mongodb://localhost:%s", port),
AuthenticationType: "X509", AuthenticationType: "X509",
MetricDatabase: "telegraf_test", MetricDatabase: "telegraf_test",
MetricGranularity: "seconds", MetricGranularity: "seconds",
ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second), ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second),
TTL: config.Duration(time.Duration(5) * time.Minute), TTL: config.Duration(time.Duration(5) * time.Minute),
ClientConfig: tls.ClientConfig{ ClientConfig: tls.ClientConfig{
TLSCA: "dev/cacert.pem", TLSCA: pki.CACertPath(),
TLSKey: "dev/clientenc.pem", TLSKey: pki.ClientCertAndEncKeyPath(),
TLSKeyPwd: "changeme", TLSKeyPwd: "changeme",
InsecureSkipVerify: false, InsecureSkipVerify: false,
}, },
@ -147,14 +256,14 @@ func TestConnectAndWriteIntegrationX509Auth(t *testing.T) {
{ {
name: "success with x509 authentication missing ca and using insceure tls", name: "success with x509 authentication missing ca and using insceure tls",
plugin: &MongoDB{ plugin: &MongoDB{
Dsn: "mongodb://localhost:27019", Dsn: fmt.Sprintf("mongodb://localhost:%s", port),
AuthenticationType: "X509", AuthenticationType: "X509",
MetricDatabase: "telegraf_test", MetricDatabase: "telegraf_test",
MetricGranularity: "seconds", MetricGranularity: "seconds",
ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second), ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second),
TTL: config.Duration(time.Duration(5) * time.Minute), TTL: config.Duration(time.Duration(5) * time.Minute),
ClientConfig: tls.ClientConfig{ ClientConfig: tls.ClientConfig{
TLSKey: "dev/client.pem", TLSKey: pki.ClientCertAndKeyPath(),
InsecureSkipVerify: true, InsecureSkipVerify: true,
}, },
}, },
@ -165,14 +274,14 @@ func TestConnectAndWriteIntegrationX509Auth(t *testing.T) {
{ {
name: "fail with x509 authentication missing ca", name: "fail with x509 authentication missing ca",
plugin: &MongoDB{ plugin: &MongoDB{
Dsn: "mongodb://localhost:27019", Dsn: fmt.Sprintf("mongodb://localhost:%s", port),
AuthenticationType: "X509", AuthenticationType: "X509",
MetricDatabase: "telegraf_test", MetricDatabase: "telegraf_test",
MetricGranularity: "seconds", MetricGranularity: "seconds",
ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second), ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second),
TTL: config.Duration(time.Duration(5) * time.Minute), TTL: config.Duration(time.Duration(5) * time.Minute),
ClientConfig: tls.ClientConfig{ ClientConfig: tls.ClientConfig{
TLSKey: "dev/client.pem", TLSKey: pki.ClientCertAndKeyPath(),
InsecureSkipVerify: false, InsecureSkipVerify: false,
}, },
}, },
@ -183,15 +292,15 @@ func TestConnectAndWriteIntegrationX509Auth(t *testing.T) {
{ {
name: "fail with x509 authentication using encrypted key file", name: "fail with x509 authentication using encrypted key file",
plugin: &MongoDB{ plugin: &MongoDB{
Dsn: "mongodb://localhost:27019", Dsn: fmt.Sprintf("mongodb://localhost:%s", port),
AuthenticationType: "X509", AuthenticationType: "X509",
MetricDatabase: "telegraf_test", MetricDatabase: "telegraf_test",
MetricGranularity: "seconds", MetricGranularity: "seconds",
ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second), ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second),
TTL: config.Duration(time.Duration(5) * time.Minute), TTL: config.Duration(time.Duration(5) * time.Minute),
ClientConfig: tls.ClientConfig{ ClientConfig: tls.ClientConfig{
TLSCA: "dev/cacert.pem", TLSCA: pki.CACertPath(),
TLSKey: "dev/clientenc.pem", TLSKey: pki.ClientCertAndEncKeyPath(),
TLSKeyPwd: "badpassword", TLSKeyPwd: "badpassword",
InsecureSkipVerify: false, InsecureSkipVerify: false,
}, },
@ -203,15 +312,15 @@ func TestConnectAndWriteIntegrationX509Auth(t *testing.T) {
{ {
name: "fail with x509 authentication using invalid ca", name: "fail with x509 authentication using invalid ca",
plugin: &MongoDB{ plugin: &MongoDB{
Dsn: "mongodb://localhost:27019", Dsn: fmt.Sprintf("mongodb://localhost:%s", port),
AuthenticationType: "X509", AuthenticationType: "X509",
MetricDatabase: "telegraf_test", MetricDatabase: "telegraf_test",
MetricGranularity: "seconds", MetricGranularity: "seconds",
ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second), ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second),
TTL: config.Duration(time.Duration(5) * time.Minute), TTL: config.Duration(time.Duration(5) * time.Minute),
ClientConfig: tls.ClientConfig{ ClientConfig: tls.ClientConfig{
TLSCA: "dev/client.pem", TLSCA: pki.ClientCertAndKeyPath(),
TLSKey: "dev/client.pem", TLSKey: pki.ClientCertAndKeyPath(),
InsecureSkipVerify: false, InsecureSkipVerify: false,
}, },
}, },
@ -222,15 +331,15 @@ func TestConnectAndWriteIntegrationX509Auth(t *testing.T) {
{ {
name: "fail with x509 authentication using invalid key", name: "fail with x509 authentication using invalid key",
plugin: &MongoDB{ plugin: &MongoDB{
Dsn: "mongodb://localhost:27019", Dsn: fmt.Sprintf("mongodb://localhost:%s", port),
AuthenticationType: "X509", AuthenticationType: "X509",
MetricDatabase: "telegraf_test", MetricDatabase: "telegraf_test",
MetricGranularity: "seconds", MetricGranularity: "seconds",
ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second), ServerSelectTimeout: config.Duration(time.Duration(5) * time.Second),
TTL: config.Duration(time.Duration(5) * time.Minute), TTL: config.Duration(time.Duration(5) * time.Minute),
ClientConfig: tls.ClientConfig{ ClientConfig: tls.ClientConfig{
TLSCA: "dev/cacert.pem", TLSCA: pki.CACertPath(),
TLSKey: "dev/cacert.pem", TLSKey: pki.CACertPath(),
InsecureSkipVerify: false, InsecureSkipVerify: false,
}, },
}, },

View File

@ -0,0 +1,3 @@
const conn = new Mongo();
const db = conn.getDB('admin');
db.createUser({ user: 'root', pwd: 'changeme', roles: [{ role: 'root', db: 'admin' }] });

View File

@ -0,0 +1,5 @@
const conn = new Mongo();
const db = conn.getDB("admin");
// createUser normally requires a password unless $external is used
// the CN value was found via: openssl x509 -in client.pem -noout -subject -nameopt RFC2253 | sed 's/subject=//g'
db.getSiblingDB("$external").runCommand({ createUser: "CN=localhost", roles: [{ role: "root", db: "admin" }] });

View File

@ -1,12 +1,18 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIB0TCCATqgAwIBAgIJAMgbq6rkA4b/MA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV MIIC4TCCAcmgAwIBAgIUWOX8Vtrm0hroRQ1X2ky7JFVu3yEwDQYJKoZIhvcNAQEL
BAMMEFRlbGVncmFmIFRlc3QgQ0EwHhcNMTgwNTAzMDEwNTI5WhcNMjgwNDMwMDEw BQAwGzEZMBcGA1UEAwwQVGVsZWdyYWYgVGVzdCBDQTAeFw0yMjA1MTgyMDM0NTVa
NTI5WjAbMRkwFwYDVQQDDBBUZWxlZ3JhZiBUZXN0IENBMIGfMA0GCSqGSIb3DQEB Fw0zMjA1MTUyMDM0NTVaMBsxGTAXBgNVBAMMEFRlbGVncmFmIFRlc3QgQ0EwggEi
AQUAA4GNADCBiQKBgQDTySxyXeyQQjCOtNQ/7cKtXN91sp4B1k7whPKBO6yXEFFR MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrfQ9WnnJX7ADN/WwqwerafGEK
rYaw76xY5CTTPTJaAPBJ+amHPdPGfmGq6yX10tjAaWQQYV26Axngfpti6F14ci0/ hg+BSA5aiowxbxgicaKF5PcHp5rVpVngJKnFDWUGOGBzsqGzooh7oFEdIWnylkN9
X/sTay8ii/4Du5DRr9f9rHVimPASR1fkgK+IFhXnONn1R+pNbHYmGS4OVNyoPwID BcdUht+0fiVWyhX5AysAXDpnR3o/5+mmoNC4XnVuAlHTRLYi3qynk9diqiPoelGW
AQABox0wGzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsF Dbx2TL+XVHHnrghdSfoBRD4mdqWJiy+XvToWWSIJmc9bcozVAbkMoRlITvmGLoC+
AAOBgQA9v3eMU33q+bGPEd65kKQcVddPEFdSqmuUJMeO2VQmUFc/ejkP48u42eDK Ju6bLwmLA3FztQyZNIaIE6O76hLuXzCi2+fcZz7Xc+phAxxZ4luYBqBCrtnvuQGN
Y1GAR+209XgkuWItEBH8HJysOU2plunuIPXpnPcxyP30tpFVLaWzWTQvUehhYpfQ mhelrBhLlVr8M456ke/5nIlyyIp+vvNZ7VHhVsta0dU3lH3XqPviDDneFIiBAgMB
C0v9Re3jdLfLORxiaAPyyKogMpAQrjGX+u1aMSOCkcTD2Hjvbw== AAGjHTAbMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUA
A4IBAQB9QSJS/J+PRhuLxCSuY96rQhTg/gxX4/Yf1lHqOBjvBPssOLKCB6huwMVA
Uw7EBpArpYxX6TaB2prVMGOoilaeKv6qlzwQGg3otgTuH4IzEegt3SgpNgriRn2X
wRmH1OPPJNS1c+Qt+1kYrquQWa8Yr0g0zx/7Yuj/s6kuIUImigf44VEUqDwkaHD7
9BfkviB2qilqdY6UechKPAv0wOjQml3nVtJJXmv3M+k5TtA22vFXaGt54VBjo7PJ
FlnSEX2cvkSrYJatSPXURbSmkr62i+rv7ViXa3w27Po7iJTCcI802hJ8YuP60Gpb
cjg1Tdg/sYcv99pAhWKE1CmJYR6J
-----END CERTIFICATE----- -----END CERTIFICATE-----

View File

@ -1,16 +1,28 @@
-----BEGIN PRIVATE KEY----- -----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANPJLHJd7JBCMI60 MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCrfQ9WnnJX7ADN
1D/twq1c33WyngHWTvCE8oE7rJcQUVGthrDvrFjkJNM9MloA8En5qYc908Z+Yarr /WwqwerafGEKhg+BSA5aiowxbxgicaKF5PcHp5rVpVngJKnFDWUGOGBzsqGzooh7
JfXS2MBpZBBhXboDGeB+m2LoXXhyLT9f+xNrLyKL/gO7kNGv1/2sdWKY8BJHV+SA oFEdIWnylkN9BcdUht+0fiVWyhX5AysAXDpnR3o/5+mmoNC4XnVuAlHTRLYi3qyn
r4gWFec42fVH6k1sdiYZLg5U3Kg/AgMBAAECgYA2PCtssk7Vdo3WzcoZAPs8yC7V k9diqiPoelGWDbx2TL+XVHHnrghdSfoBRD4mdqWJiy+XvToWWSIJmc9bcozVAbkM
hkNedxJKF9G+dJizKtOYVhbLEuWQ8gPYMLDHSbw/RXc7kgK8rzq1uXhEJpWo4THD oRlITvmGLoC+Ju6bLwmLA3FztQyZNIaIE6O76hLuXzCi2+fcZz7Xc+phAxxZ4luY
CUUlxGRu3gt94202hbnEnV93Kix4hP98qpv1jPErlx2KywsRPTegMnUAZ2xeI564 BqBCrtnvuQGNmhelrBhLlVr8M456ke/5nIlyyIp+vvNZ7VHhVsta0dU3lH3XqPvi
yYwDITqXALa/PqRqSQJBAPPZQeRDtBSfEjZFJS3IgUkmN3RJn4rJz+6D0ahgXPga DDneFIiBAgMBAAECggEBAJtT9m2trMIoeP4bujrsVG471KX0kdy2yJGIBr3L859X
YAYVe8SJyj2epLJP2aOBzrqBSUVkVGg8qOG5w+ibebsCQQDeVuUzYOffthO5f1Hl MC95GavsSxmS4NpeOwvKOyQsMmj5du+/m0HnDzGEj3N0WYLHling1IWm8OkwuEBJ
LvdEmfaHjXI0Q+grOnDjNRcvQaCDYYkC9JewBQmnpFrd85rN/Leo0gQ5Yyxp/ja5 d0ynPRtJKdjylbcg2Iz2ugS/wx/Kj/L7oIVVKvUqSMYM7RMuM/MvRyaqDVYdU2Qy
gPFNAkAFwn/38FF0mz1G4uM57Z6AJ9LvgD2wfYvXym1NWNlZUuYpvqApyEdqpTCm 3tdeBzcmZ+9xuOKCYVCrfpagR9q+DUGbJT4TO+nBG8WpqlE9KPejP1bXE4hH8pru
tZQidJJ5fUxJw1DrFWO30Td7axC5AkEAjSbRX6rXyhiHsS35SexlInI0Jp5PsIqj Uj/zza/tygr1F2IykAUs5bRKg7jnHw1pW3a7FgooPPNidyCxCjIFjaYmOtVHTY2V
7D2vyS69R0z8oCvdlbi+TAsGtB0Navbqgnc8Cbs630vsuGWhTGdlyQJBAKqQ2gYw t2RaCnz+dFdNEr1eUybFhHTVfujHRmtBD4KE9SaJldUCgYEA0iK6D98EzEeh17YX
+WeXH77FP8yDQOjpFw80tSyXVykT0Am75RF3sQ1OIn0o0DLhE+he0crb2n8g3FJh SWfwRDmUYCSPxWAv51s7pz1Wav1ydM/15Cu65Lyb3GIwpSl3YLO0mOQ2wT/ZY2yC
WyxmGkbTDelSG20= JifBTd7Fzrq9pG/SmDe5ZmDMUkNSYTKiZVh2j9ejVtKeyCTcXxoCJn+2JhSc5WAp
9nERhSNwzG91LSeN8kCvDPZNkisCgYEA0OrvSphF5PH7uxQqMOQs81CN7Q9mbx5b
5E86AlIf1WiGtWCGaXoraFqk5a2MleWHc2utryC00wR/fItAvzofl22cYzKueMDC
EWhsmeoI1GVp7F5UppIxyWtMlLJm6B2oQvu9qyacpxI0vsXddGvHPw5PdipMOuKt
Z2Ec5uNkdgMCgYArI3Hq/C+x+CqjbABP04ShnOh27EqPjHWJG1Odu5vYDvvGO0MR
emC9wHKGxamS3nZhZcL3eDI9bewk2wvE5XhrkgYtsGxqK4KiOR5YhBqt8KAi0BBC
meyNDwm7MzXhhJ+w7lfuq10raCPlet5id0fPez0W2vLFOE+NofXNxWqbTQKBgQCz
MrEqVM6vAHkiELvX0ABWfCQg0PLWIT5E6UgisXqovM2/ShpA4w/UpNuIPoK2GHlE
oXoLG4y+677Gf1N8M0jhxJ094T0SSpSsBdwRcVM9i/d9TbRiZEfcMvMvII9wTfAD
9JbN9YKtM8qWUHYR5Fi1V3sFKmbUo5aFdCEsUqPbLQKBgQDHzBlxoaDmi+GI2HCz
8S8v9sgkNWPNfRnJ/nwtYm/S5H2yndvdHLL8ydmwHFjK8/V8pOuvenXTjGeqdwWw
ssryP2PgX52bmn+jcyT0u5Omh5Q2yDXIRurodFmHyjeh8TvOfsMmRDtvvkCMlbeu
YbYGp6m/sW4VEoD3+RmedOYWCw==
-----END PRIVATE KEY----- -----END PRIVATE KEY-----

View File

@ -1,28 +1,45 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIB+TCCAWKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBBUZWxl MIIC9TCCAd2gAwIBAgIBAzANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBBUZWxl
Z3JhZiBUZXN0IENBMB4XDTE4MDUwMzAxMDUyOVoXDTI4MDQzMDAxMDUyOVowHTEb Z3JhZiBUZXN0IENBMB4XDTIyMDUxODIwMzQ1NVoXDTMyMDUxNTIwMzQ1NVowFDES
MBkGA1UEAwwSY2xpZW50LmxvY2FsZG9tYWluMIGfMA0GCSqGSIb3DQEBAQUAA4GN MBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
ADCBiQKBgQDX7Plvu0MJtA9TrusYtQnAogsdiYJZd9wfFIjH5FxE3SWJ4KAIE+yR AQEAwFOLCldKWTa/Bn8RgIOQt/oIm4d1p/BSmZnWeDQ9QhksQEw7wtvsMhOYecfg
WRqcqX8XnpieQLaNsfXhDPWLkWngTDydk4NO/jlAQk0e6+9+NeiZ2ViIHmtXERb9 wrZhRsazJwReAj6MsB4joFvrzg0EPKyl3PakdntclJd4C7uNyDq+cw+blIFPk64y
CyiiWUmo+YCd69lhzSEIMK9EPBSDHQTgQMtEfGak03G5rx3MCakE1QIDAQABo0sw ofpgcwMI7h0FEpvu3C/y7kTKmwkT/PX17Rlm+Woi7Nq65Q+LbThg4r5K5ScNAsHs
STAJBgNVHRMEAjAAMAsGA1UdDwQEAwIHgDAaBgNVHREEEzARgglsb2NhbGhvc3SH m2xeZORY86XeesaE/1o5Rkl7j/u6L8ObotY0q7zQwMxJqtavrzAyJw+Th4os5Nsx
BH8AAAEwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADgYEAVry0 yh64cFPfYmROd3KWTd/1Z9pWb8Q3AKyWbsFYVq/eD1XjXZXrheuTxjJdZiQGCY/F
L07oTN+FMLncY/Be9BzFB3b3mnbxbZr58OgI4WHuOeYBuvDI033FIIIzpwb8XYpG OGU5pgxDBM35bq7vPm8inbAHswIDAQABo0swSTAJBgNVHRMEAjAAMAsGA1UdDwQE
HJkZlSbviqq19lAh/Cktl35BCNrA6Uc+dgW7QWhnYS2tZandVTo/8FFstJTNiiLw AwIHgDAaBgNVHREEEzARgglsb2NhbGhvc3SHBH8AAAEwEwYDVR0lBAwwCgYIKwYB
uiz/Hr3mRXUIDi5OygJHY1IZr8hFTOOJY+0ws3E= BQUHAwIwDQYJKoZIhvcNAQELBQADggEBABky47qN8Xjo0T/a4WEHRhBQ5q3EZ/Me
mGEY3KYgYg/ceQBMQydF+x8T4A3uppkB0ok2/H8B+103Id2Zf8I18s9rZrSWF52n
qpPXk2wpFz+f4C59wB8cVOOzYDvo2k/dWOiCQza8VUNwTHcu3NC+/tYdZjO7AtNh
iYJKAUndKZraCunsYOxNKVRqoyQ9an2vOAThF1jp6bX+DcAjJUe4C/S39XqrAG4g
OmgDNRF+SP5LXcjv4b7UU3vlSqC+TLx5+bu0kRMnLFCLgUa/0Fkt4LIAWwqIWwen
Shdx7qxex7iGVU00UkOEfK6r1D1ErEGe1hJd9aKUXnSCbjnc0xX7CpU=
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----

View File

@ -1,13 +1,18 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIB+TCCAWKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBBUZWxl MIIC9TCCAd2gAwIBAgIBAzANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBBUZWxl
Z3JhZiBUZXN0IENBMB4XDTE4MDUwMzAxMDUyOVoXDTI4MDQzMDAxMDUyOVowHTEb Z3JhZiBUZXN0IENBMB4XDTIyMDUxODIwMzQ1NVoXDTMyMDUxNTIwMzQ1NVowFDES
MBkGA1UEAwwSY2xpZW50LmxvY2FsZG9tYWluMIGfMA0GCSqGSIb3DQEBAQUAA4GN MBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
ADCBiQKBgQDX7Plvu0MJtA9TrusYtQnAogsdiYJZd9wfFIjH5FxE3SWJ4KAIE+yR AQEAwFOLCldKWTa/Bn8RgIOQt/oIm4d1p/BSmZnWeDQ9QhksQEw7wtvsMhOYecfg
WRqcqX8XnpieQLaNsfXhDPWLkWngTDydk4NO/jlAQk0e6+9+NeiZ2ViIHmtXERb9 wrZhRsazJwReAj6MsB4joFvrzg0EPKyl3PakdntclJd4C7uNyDq+cw+blIFPk64y
CyiiWUmo+YCd69lhzSEIMK9EPBSDHQTgQMtEfGak03G5rx3MCakE1QIDAQABo0sw ofpgcwMI7h0FEpvu3C/y7kTKmwkT/PX17Rlm+Woi7Nq65Q+LbThg4r5K5ScNAsHs
STAJBgNVHRMEAjAAMAsGA1UdDwQEAwIHgDAaBgNVHREEEzARgglsb2NhbGhvc3SH m2xeZORY86XeesaE/1o5Rkl7j/u6L8ObotY0q7zQwMxJqtavrzAyJw+Th4os5Nsx
BH8AAAEwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADgYEAVry0 yh64cFPfYmROd3KWTd/1Z9pWb8Q3AKyWbsFYVq/eD1XjXZXrheuTxjJdZiQGCY/F
L07oTN+FMLncY/Be9BzFB3b3mnbxbZr58OgI4WHuOeYBuvDI033FIIIzpwb8XYpG OGU5pgxDBM35bq7vPm8inbAHswIDAQABo0swSTAJBgNVHRMEAjAAMAsGA1UdDwQE
HJkZlSbviqq19lAh/Cktl35BCNrA6Uc+dgW7QWhnYS2tZandVTo/8FFstJTNiiLw AwIHgDAaBgNVHREEEzARgglsb2NhbGhvc3SHBH8AAAEwEwYDVR0lBAwwCgYIKwYB
uiz/Hr3mRXUIDi5OygJHY1IZr8hFTOOJY+0ws3E= BQUHAwIwDQYJKoZIhvcNAQELBQADggEBABky47qN8Xjo0T/a4WEHRhBQ5q3EZ/Me
mGEY3KYgYg/ceQBMQydF+x8T4A3uppkB0ok2/H8B+103Id2Zf8I18s9rZrSWF52n
qpPXk2wpFz+f4C59wB8cVOOzYDvo2k/dWOiCQza8VUNwTHcu3NC+/tYdZjO7AtNh
iYJKAUndKZraCunsYOxNKVRqoyQ9an2vOAThF1jp6bX+DcAjJUe4C/S39XqrAG4g
OmgDNRF+SP5LXcjv4b7UU3vlSqC+TLx5+bu0kRMnLFCLgUa/0Fkt4LIAWwqIWwen
Shdx7qxex7iGVU00UkOEfK6r1D1ErEGe1hJd9aKUXnSCbjnc0xX7CpU=
-----END CERTIFICATE----- -----END CERTIFICATE-----

View File

@ -1,31 +1,48 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIB+TCCAWKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBBUZWxl MIIC9TCCAd2gAwIBAgIBAzANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBBUZWxl
Z3JhZiBUZXN0IENBMB4XDTE4MDUwMzAxMDUyOVoXDTI4MDQzMDAxMDUyOVowHTEb Z3JhZiBUZXN0IENBMB4XDTIyMDUxODIwMzQ1NVoXDTMyMDUxNTIwMzQ1NVowFDES
MBkGA1UEAwwSY2xpZW50LmxvY2FsZG9tYWluMIGfMA0GCSqGSIb3DQEBAQUAA4GN MBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
ADCBiQKBgQDX7Plvu0MJtA9TrusYtQnAogsdiYJZd9wfFIjH5FxE3SWJ4KAIE+yR AQEAwFOLCldKWTa/Bn8RgIOQt/oIm4d1p/BSmZnWeDQ9QhksQEw7wtvsMhOYecfg
WRqcqX8XnpieQLaNsfXhDPWLkWngTDydk4NO/jlAQk0e6+9+NeiZ2ViIHmtXERb9 wrZhRsazJwReAj6MsB4joFvrzg0EPKyl3PakdntclJd4C7uNyDq+cw+blIFPk64y
CyiiWUmo+YCd69lhzSEIMK9EPBSDHQTgQMtEfGak03G5rx3MCakE1QIDAQABo0sw ofpgcwMI7h0FEpvu3C/y7kTKmwkT/PX17Rlm+Woi7Nq65Q+LbThg4r5K5ScNAsHs
STAJBgNVHRMEAjAAMAsGA1UdDwQEAwIHgDAaBgNVHREEEzARgglsb2NhbGhvc3SH m2xeZORY86XeesaE/1o5Rkl7j/u6L8ObotY0q7zQwMxJqtavrzAyJw+Th4os5Nsx
BH8AAAEwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADgYEAVry0 yh64cFPfYmROd3KWTd/1Z9pWb8Q3AKyWbsFYVq/eD1XjXZXrheuTxjJdZiQGCY/F
L07oTN+FMLncY/Be9BzFB3b3mnbxbZr58OgI4WHuOeYBuvDI033FIIIzpwb8XYpG OGU5pgxDBM35bq7vPm8inbAHswIDAQABo0swSTAJBgNVHRMEAjAAMAsGA1UdDwQE
HJkZlSbviqq19lAh/Cktl35BCNrA6Uc+dgW7QWhnYS2tZandVTo/8FFstJTNiiLw AwIHgDAaBgNVHREEEzARgglsb2NhbGhvc3SHBH8AAAEwEwYDVR0lBAwwCgYIKwYB
uiz/Hr3mRXUIDi5OygJHY1IZr8hFTOOJY+0ws3E= BQUHAwIwDQYJKoZIhvcNAQELBQADggEBABky47qN8Xjo0T/a4WEHRhBQ5q3EZ/Me
mGEY3KYgYg/ceQBMQydF+x8T4A3uppkB0ok2/H8B+103Id2Zf8I18s9rZrSWF52n
qpPXk2wpFz+f4C59wB8cVOOzYDvo2k/dWOiCQza8VUNwTHcu3NC+/tYdZjO7AtNh
iYJKAUndKZraCunsYOxNKVRqoyQ9an2vOAThF1jp6bX+DcAjJUe4C/S39XqrAG4g
OmgDNRF+SP5LXcjv4b7UU3vlSqC+TLx5+bu0kRMnLFCLgUa/0Fkt4LIAWwqIWwen
Shdx7qxex7iGVU00UkOEfK6r1D1ErEGe1hJd9aKUXnSCbjnc0xX7CpU=
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,E07764654058094DE0846DF015F8CD79 DEK-Info: AES-128-CBC,D7DB5CA6A95EE11A5B516470B787B646
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
-----END RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----

View File

@ -1,18 +1,30 @@
-----BEGIN RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,E07764654058094DE0846DF015F8CD79 DEK-Info: AES-128-CBC,D7DB5CA6A95EE11A5B516470B787B646
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
-----END RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----

View File

@ -1,15 +1,27 @@
-----BEGIN RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----

View File

@ -1,28 +1,45 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIB+TCCAWKgAwIBAgIBATANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBBUZWxl MIIC9TCCAd2gAwIBAgIBATANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBBUZWxl
Z3JhZiBUZXN0IENBMB4XDTE4MDUwMzAxMDUyOVoXDTI4MDQzMDAxMDUyOVowHTEb Z3JhZiBUZXN0IENBMB4XDTIyMDUxODIwMzQ1NVoXDTMyMDUxNTIwMzQ1NVowFDES
MBkGA1UEAwwSc2VydmVyLmxvY2FsZG9tYWluMIGfMA0GCSqGSIb3DQEBAQUAA4GN MBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
ADCBiQKBgQDTBmLJ0pBFUxnPkkx38sBnOKvs+OinVqxTnVcc1iCyQJQleB37uY6D AQEAxP2AulpO3nNJUFv3Yj7xs4Mhosd06Q6wRfr9r7+Mv/882eKloU2VmfFeLD8u
L55mSsPvnad/oDpyGpHt4RVtrhmyC6ptSrWLyk7mraeAo30Cooqr5tA9A+6yj0ij d4oWA7el6RyFv8A3wMLLljlw0VCNVmj+awnuYjNbTIECdV9AhNhs0ymLZfcIwNF3
ySLlYimTMQy8tbnVNWLwKbxgT9N4NlUzwyqxLWUMfRzLfmefqzk5bQIDAQABo0sw eMspDtUykuK10dlreq3MFYK/qSYuvE3ZDhgAVS0uH6b0yJSxQYyCwyMG6F4j5yxp
STAJBgNVHRMEAjAAMBoGA1UdEQQTMBGCCWxvY2FsaG9zdIcEfwAAATALBgNVHQ8E IC/7MTSe/k3ZhzMRusBt8prX41SsNvdu+9xrYvb+BbCfaWrAyDOC91vezvJU7aKX
BAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQELBQADgYEATNnM MVpq8bvREw8WX7C9WSeLMic0ojrCOC1cJOX3+ToTIBm9bGuI2YtedkGpXNcg1UQ5
ol0s29lJ+WkP+HUFtKaXxQ+kXLADqfhsk2G1/kZAVRHsYUDlJ+GkHnWIHlg/ggIP vtsrKriGXH1UNQomkskVc90JswIDAQABo0swSTAJBgNVHRMEAjAAMBoGA1UdEQQT
JS+z44iwMPOtzJQI7MvAFYVKpYAEdIFTjXf6GafLjUfoXYi0vwHoVJHtQu3Kpm9L MBGCCWxvY2FsaG9zdIcEfwAAATALBgNVHQ8EBAMCBaAwEwYDVR0lBAwwCgYIKwYB
Ugm02h0ycIadN8RdWAAFUf6XpVKUJa0YYLuyaXY= BQUHAwEwDQYJKoZIhvcNAQELBQADggEBAEOW8H3EuPTVK2OZrTAUn0GYvueGgMQC
823v4qvllpMzgpWt4e6XG4aRpSU3Lo2JsV+LJdYtbCdfKj0qjKsJw7YN+Q+3h/0d
tfMC4Z/WWAoF7Bb56M0RJuUDPDZpLRCU7Px8jmdvvpIk7VJuY+0q+EIqSqIjmY67
XabwhTox0DDb+EoSQ9AuzAzv1s9vQmkMXipi+Q0/cKtwpD02rla9nMycz8+d6Uge
ASoWoUGw6v01aa3MV7K2OmqU59D/51jCJQn0wourgDD1TBNI09+a2oaXT9QnizSm
dJPEURvGq8zrX74sJClEb2eu0zPnak599wwsbIMeKJ0TVAtXsbjShJk=
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----

View File

@ -1,13 +1,18 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIB+TCCAWKgAwIBAgIBATANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBBUZWxl MIIC9TCCAd2gAwIBAgIBATANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBBUZWxl
Z3JhZiBUZXN0IENBMB4XDTE4MDUwMzAxMDUyOVoXDTI4MDQzMDAxMDUyOVowHTEb Z3JhZiBUZXN0IENBMB4XDTIyMDUxODIwMzQ1NVoXDTMyMDUxNTIwMzQ1NVowFDES
MBkGA1UEAwwSc2VydmVyLmxvY2FsZG9tYWluMIGfMA0GCSqGSIb3DQEBAQUAA4GN MBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
ADCBiQKBgQDTBmLJ0pBFUxnPkkx38sBnOKvs+OinVqxTnVcc1iCyQJQleB37uY6D AQEAxP2AulpO3nNJUFv3Yj7xs4Mhosd06Q6wRfr9r7+Mv/882eKloU2VmfFeLD8u
L55mSsPvnad/oDpyGpHt4RVtrhmyC6ptSrWLyk7mraeAo30Cooqr5tA9A+6yj0ij d4oWA7el6RyFv8A3wMLLljlw0VCNVmj+awnuYjNbTIECdV9AhNhs0ymLZfcIwNF3
ySLlYimTMQy8tbnVNWLwKbxgT9N4NlUzwyqxLWUMfRzLfmefqzk5bQIDAQABo0sw eMspDtUykuK10dlreq3MFYK/qSYuvE3ZDhgAVS0uH6b0yJSxQYyCwyMG6F4j5yxp
STAJBgNVHRMEAjAAMBoGA1UdEQQTMBGCCWxvY2FsaG9zdIcEfwAAATALBgNVHQ8E IC/7MTSe/k3ZhzMRusBt8prX41SsNvdu+9xrYvb+BbCfaWrAyDOC91vezvJU7aKX
BAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQELBQADgYEATNnM MVpq8bvREw8WX7C9WSeLMic0ojrCOC1cJOX3+ToTIBm9bGuI2YtedkGpXNcg1UQ5
ol0s29lJ+WkP+HUFtKaXxQ+kXLADqfhsk2G1/kZAVRHsYUDlJ+GkHnWIHlg/ggIP vtsrKriGXH1UNQomkskVc90JswIDAQABo0swSTAJBgNVHRMEAjAAMBoGA1UdEQQT
JS+z44iwMPOtzJQI7MvAFYVKpYAEdIFTjXf6GafLjUfoXYi0vwHoVJHtQu3Kpm9L MBGCCWxvY2FsaG9zdIcEfwAAATALBgNVHQ8EBAMCBaAwEwYDVR0lBAwwCgYIKwYB
Ugm02h0ycIadN8RdWAAFUf6XpVKUJa0YYLuyaXY= BQUHAwEwDQYJKoZIhvcNAQELBQADggEBAEOW8H3EuPTVK2OZrTAUn0GYvueGgMQC
823v4qvllpMzgpWt4e6XG4aRpSU3Lo2JsV+LJdYtbCdfKj0qjKsJw7YN+Q+3h/0d
tfMC4Z/WWAoF7Bb56M0RJuUDPDZpLRCU7Px8jmdvvpIk7VJuY+0q+EIqSqIjmY67
XabwhTox0DDb+EoSQ9AuzAzv1s9vQmkMXipi+Q0/cKtwpD02rla9nMycz8+d6Uge
ASoWoUGw6v01aa3MV7K2OmqU59D/51jCJQn0wourgDD1TBNI09+a2oaXT9QnizSm
dJPEURvGq8zrX74sJClEb2eu0zPnak599wwsbIMeKJ0TVAtXsbjShJk=
-----END CERTIFICATE----- -----END CERTIFICATE-----

View File

@ -1,15 +1,27 @@
-----BEGIN RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----

View File

@ -1,4 +1,5 @@
#!/bin/sh #!/bin/sh
set -eux
mkdir certs certs_by_serial private && mkdir certs certs_by_serial private &&
chmod 700 private && chmod 700 private &&
@ -30,7 +31,7 @@ commonName = supplied
basicConstraints = CA:false basicConstraints = CA:false
[ req ] [ req ]
default_bits = 1024 default_bits = 2048
default_keyfile = ./private/cakey.pem default_keyfile = ./private/cakey.pem
default_md = sha256 default_md = sha256
prompt = yes prompt = yes
@ -70,7 +71,7 @@ openssl req -x509 -config ./openssl.conf -days 3650 -newkey rsa:2048 -out ./cert
openssl genrsa -out ./private/serverkey.pem 2048 && openssl genrsa -out ./private/serverkey.pem 2048 &&
openssl req -new -key ./private/serverkey.pem -out ./certs/servercsr.pem -outform PEM -subj "/CN=$(cat /proc/sys/kernel/hostname)/O=server/" && openssl req -new -key ./private/serverkey.pem -out ./certs/servercsr.pem -outform PEM -subj "/CN=$(cat /proc/sys/kernel/hostname)/O=server/" &&
openssl ca -config ./openssl.conf -in ./certs/servercsr.pem -out ./certs/servercert.pem -notext -batch -extensions server_ca_extensions && openssl ca -config ./openssl.conf -in ./certs/servercsr.pem -out ./certs/servercert.pem -notext -batch -extensions server_ca_extensions &&
openssl ca -config ./openssl.conf -in ./certs/servercsr.pem -out ./certs/servercertexp.pem -startdate $(date +%y%m%d%H%M00 --date='-5 minutes')'Z' -enddate $(date +%y%m%d%H%M00 --date='5 minutes')'Z' -notext -batch -extensions server_ca_extensions && openssl ca -config ./openssl.conf -in ./certs/servercsr.pem -out ./certs/servercertexp.pem -startdate "$(date +%y%m%d%H%M00 --date='-5 minutes')Z" -enddate "$(date +%y%m%d%H%M00 --date='5 minutes')Z" -notext -batch -extensions server_ca_extensions &&
# Create client and client encrypted keypair # Create client and client encrypted keypair
openssl genrsa -out ./private/clientkey.pem 2048 && openssl genrsa -out ./private/clientkey.pem 2048 &&