add: make certs tool

This commit is contained in:
2024-01-09 15:59:05 +08:00
parent f4796e579c
commit 79d616cc8b
12 changed files with 447 additions and 6 deletions

View File

@@ -18,9 +18,9 @@ rest:
ipv6:
port: 3443
scheme: https
caFile: ./etc/certs/rootca.crt
certFile: ./etc/certs/tsa-omc.crt
keyFile: ./etc/certs/tsa-omc_pri.key
caFile: ./etc/certs/omc-ca.crt
certFile: ./etc/certs/omc-server.crt
keyFile: ./etc/certs/omc-server.key
webServer:
enabled: true
@@ -30,9 +30,9 @@ webServer:
schema: http
- addr: :443
scheme: https
caFile: ./etc/certs/rootca.crt
certFile: ./etc/certs/tsa-omc.crt
keyFile: ./etc/certs/tsa-omc_pri.key
caFile: ./etc/certs/omc-ca.crt
certFile: ./etc/certs/omc-server.crt
keyFile: ./etc/certs/omc-server.key
database:
type: mysql

29
tools/mkcert/ca.crt Normal file
View File

@@ -0,0 +1,29 @@
-----BEGIN CERTIFICATE-----
MIIE3TCCAsWgAwIBAgIBATANBgkqhkiG9w0BAQsFADAQMQ4wDAYDVQQKEwVHbyBD
QTAeFw0yNDAxMDkwNzEyNTVaFw0zNDAxMDYwNzEyNTVaMBAxDjAMBgNVBAoTBUdv
IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAx/mmbhCZS4XFvbn0
btk8SuetjziP3kJ4/ijpwr8WD0JeskFf2qILNOCQMBOWqyxrd6kYCMyrrb/c5mX9
q23TgV6qghp/0xoA70SHvcqv6F4ssOJSvaN29ud3puKyWgvToNGY/z5pU0IQCUtQ
6CJWJo4gUaB/5vH1ipheU7Xsiw5bNeFaWQ/nxsTwvoZVfk7noiAMd/W8nAGJbhxC
ByJhs1AZQ9d4yEezLrpyDqOdehffrEse+8BlytqkKhHYinAE4pqgeDcln05fxWrz
zzYRw2GiHFfioo4labueTe8eoOBHYJpFmthfdsgrth9+aSA5GKHpXQ0rzaahgcGU
+S9XFjYxWkMXMiUQhCFNd+1IFi0NsLas04UwXLu1x4CL7d/BRlzR6ezwq6hnxTOc
FMXAcpnfnKzF7WOHvGa/dsr92hpX48K64cHtlCLfeRR4E/60LJ6FYjqpNKgai+s+
sbeOOyKskCQ0wHNElrebojdYlkXzam0rKbnNJNERx8/v48cwt0F5LNnN6a2CDVPN
LGMwBSNDZbiiI53Q6DE7H71XkZjkR0NRqmcIm+ElecpBLavicqfNlg8JLoorJQSW
oiSJmyxqIjnqNrfmk/l30jI2lVal4c1QSBFrFsob9rBLkXGM1EWb0PSMrwZM29et
Ch8zvN7FlOPC76cIw2QmAxWVJ+kCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgKkMA8G
A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOCdRGl2aikRXamo4qJu9wQ7kqI9MA0G
CSqGSIb3DQEBCwUAA4ICAQC/osh2VHoJoyG8Z3vdLH+0XZ04I8Ih2BQBcPKPZ1v0
vdVDrQ6ldkgSKhM+/of9XtzvtphV7Yxq4LFipu9HE2xNmZjOMXZgsGgQ4qS3KkDk
u0/q7ZmE8MG7uLW76m7PGNO4Ugz3k6yVx0KVC/Fy9YdWwKkl8nL93nPqWRsN/jwE
WRyZ822Xnz19cY5vFbaO5fO1hW5+3U50Kh7BWuyd7TZ+OT8KmY834DKLDDnWdcPW
/k6Je1Y0H79E/SIjFkCxCNTDNS5SVHfTr0BCbVMXXi5dbNTjhY41TM+JwIKa1fVB
YhzWqk16riDYa+bg2xcdda8B0lQT8qRrMGFtjPsqyNhNoTFRUXx9HKX3VBIXqmlD
7v7lCWbvXkCjb2mAEG5ayy1lHKkOd6Q1E0HXZST2PHIippOFwndGz0P9tij+g1Df
cDisGxdfOZwpJTLhO5QYDom6YQgcWxfOUPK1HVnRrbniEQIykHldoIk3YL+vGwRZ
qEcJDf4F98KyxfYv9OvMGfP+imyOg4Yh4HKt4Cm+WxoKbF+qO3kPgXzGgLfthKNe
qi8fKCnbe91yuXzvKfjtfS7SYz9E0mlZkUUcpQ9r7thk4xEF5PHxHjFzZYzLX5c3
SMfjmtiTnD0wPFlaDtd/3absBC7xHCfs3v+DfyKyuYOvi2CUHiR2k8sZIDaEpwxF
Dw==
-----END CERTIFICATE-----

51
tools/mkcert/ca.key Normal file
View File

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

176
tools/mkcert/mkcert.go Normal file
View File

@@ -0,0 +1,176 @@
package main
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"crypto/x509/pkix"
"encoding/pem"
"fmt"
"math/big"
"os"
"time"
)
func writeDataToFile(fn string, data []byte) {
// 创建一个新文件来写入数据
file, err := os.Create(fn)
if err != nil {
panic(err)
}
defer file.Close()
// 将 data 写入到文件中
_, err = file.Write(data)
if err != nil {
panic(err)
}
}
func main() {
// 生成CA根证书密钥对
caKey, err := rsa.GenerateKey(rand.Reader, 4096)
if err != nil {
fmt.Println(err)
}
// 生成CA证书模板
caTemplate := x509.Certificate{
SerialNumber: big.NewInt(1),
Subject: pkix.Name{
Organization: []string{"Go CA"},
},
NotBefore: time.Now(),
NotAfter: time.Now().Add(time.Hour * 24 * 3650),
KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign,
BasicConstraintsValid: true,
IsCA: true,
}
// 使用模板自签名生成CA证书
caCert, err := x509.CreateCertificate(rand.Reader, &caTemplate, &caTemplate, &caKey.PublicKey, caKey)
if err != nil {
fmt.Println(err)
}
// 生成中间CA密钥对
interKey, err := rsa.GenerateKey(rand.Reader, 2048)
if err != nil {
fmt.Println(err)
}
// 生成中间CA证书模板
interTemplate := x509.Certificate{
SerialNumber: big.NewInt(2),
Subject: pkix.Name{
Organization: []string{"Go OMC CA"},
},
NotBefore: time.Now(),
NotAfter: time.Now().Add(time.Hour * 24 * 3650),
KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign,
BasicConstraintsValid: true,
IsCA: true,
}
// 用CA证书签名生成中间CA证书
interCert, err := x509.CreateCertificate(rand.Reader, &interTemplate, &caTemplate, &interKey.PublicKey, caKey)
if err != nil {
fmt.Println(err)
}
// 生成叶子证书密钥对
leafKey, err := rsa.GenerateKey(rand.Reader, 2048)
if err != nil {
fmt.Println(err)
}
// 生成叶子证书模板,CN为server.com
leafTemplate := x509.Certificate{
SerialNumber: big.NewInt(3),
Subject: pkix.Name{
Organization: []string{"OMC Server"},
CommonName: "",
},
NotBefore: time.Now(),
NotAfter: time.Now().Add(time.Hour * 24 * 3650),
KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
//IPAddresses: []net.IP{net.ParseIP("192.168.2.219")},
//DNSNames: []string{""},
SubjectKeyId: []byte{1, 2, 3, 4},
}
// 用中间CA证书签名生成叶子证书
leafCert, err := x509.CreateCertificate(rand.Reader, &leafTemplate, &interTemplate, &leafKey.PublicKey, interKey)
if err != nil {
fmt.Println(err)
}
// 生成server1.com叶子证书
leafKey1, _ := rsa.GenerateKey(rand.Reader, 2048)
leafTemplate1 := x509.Certificate{
SerialNumber: big.NewInt(4),
Subject: pkix.Name{
CommonName: "server1.com",
},
NotBefore: time.Now(),
NotAfter: time.Now().Add(time.Hour * 24 * 3650),
KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
DNSNames: []string{"server1.com"},
}
leafCert1, _ := x509.CreateCertificate(rand.Reader, &leafTemplate1, &interTemplate, &leafKey1.PublicKey, interKey)
// 生成server2.com叶子证书
leafKey2, _ := rsa.GenerateKey(rand.Reader, 2048)
leafTemplate2 := x509.Certificate{
SerialNumber: big.NewInt(5),
Subject: pkix.Name{
CommonName: "server2.com",
},
NotBefore: time.Now(),
NotAfter: time.Now().Add(time.Hour * 24 * 3650),
KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
DNSNames: []string{"server2.com"},
}
leafCert2, _ := x509.CreateCertificate(rand.Reader, &leafTemplate2, &interTemplate, &leafKey2.PublicKey, interKey)
// 将证书和密钥编码为PEM格式
caCertPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: caCert})
caKeyPEM := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(caKey)})
interCertPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: interCert})
interKeyPEM := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(interKey)})
leafCertPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: leafCert})
leafKeyPEM := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(leafKey)})
leafCertPEM1 := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: leafCert1})
leafKeyPEM1 := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(leafKey1)})
leafCertPEM2 := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: leafCert2})
leafKeyPEM2 := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(leafKey2)})
// 将PEM写入文件
writeDataToFile("ca.crt", caCertPEM)
writeDataToFile("ca.key", caKeyPEM)
writeDataToFile("omc-ca.crt", interCertPEM)
writeDataToFile("omc-ca.key", interKeyPEM)
writeDataToFile("omc-server.crt", leafCertPEM)
writeDataToFile("omc-server.key", leafKeyPEM)
writeDataToFile("omc-web.crt", leafCertPEM1)
writeDataToFile("omc-web.key", leafKeyPEM1)
writeDataToFile("omc-server2-cert.pem", leafCertPEM2)
writeDataToFile("omc-server2-key.pem", leafKeyPEM2)
}

23
tools/mkcert/omc-ca.crt Normal file
View File

@@ -0,0 +1,23 @@
-----BEGIN CERTIFICATE-----
MIID4TCCAcmgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAQMQ4wDAYDVQQKEwVHbyBD
QTAeFw0yNDAxMDkwNzEyNTVaFw0zNDAxMDYwNzEyNTVaMBQxEjAQBgNVBAoTCUdv
IE9NQyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPidCkI9UhWg
7EOKoS/JGH95Q3ekfU+rK0EULJbJfeszJkYZ2u2gQ5gbBcyWUQvFhOuFpgcchsGA
Vy3QfudO0Jxysf67rBFFjyB2NQXc68B3zJS5L+N9P0XEwgz9hr9rijDrNT8RvY+z
L8Blrbl4oBEssOEyFOBYkHIMlvUEIMZYaA1NPA+Wwk8x3ENS1YVGml5u7JBk2oe2
gHDktHe98hU0Nd88K3ZxGte3pwmeynMslTw9Oct6Wy2fu0zcZlnJZPmoY2LXYyhx
mj9oO3n5KgXxHlfGxPl5N2lqu/tmAr/1fAwUKVHUZzpmIbEyqMTDow8qTvjYa4o/
41Bvg1JOrDsCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgKkMA8GA1UdEwEB/wQFMAMB
Af8wHQYDVR0OBBYEFJ2woDwnDKwmU3bU8cA+EAG0MVMwMA0GCSqGSIb3DQEBCwUA
A4ICAQAuT4aMkcJWZeAJXGjSxSCoLclnrQw4SAVjNvIUNS83+0flHLTFzj1fAU4M
/RZjZE22mdF+wgAhMfC+zoJq7plHELSkG9HY1dmscK7MVRrVdnooYD+HXS8rjOaD
oUapFmEK5ivXF6Cx1gQoPeo/Q0FRDd9Ky5rjB0vWFxsnU/BZkfOLCC2zQoZcL+UN
rmSq+iPkUMvFDVWSR/XY+xtXaW9GboqaqtoNvR24RSquI5xe1Co7JuDuu+j83lv/
5YpOG14pNA3IF6TNFChR63l/VkaT15QDSnKxSgIQdcaPuv9yvA7OPIiaTOAqcDKi
4RSTqRezh6TnbWIFSJI03EY8gFa7PkelcWqurCXgc4vevC3bLAHuys4QIVboq0yw
CmCMVmJtgyXT15yc4x+ivwHyDT25wI2ynPnoXgKqzudFav0ZhoR7l2YmH2by7wrN
5AnNbyer72NJhKRleLyboPtqWwTLfvtOW2Aqbg+cWKwTq9NNAqJ47tZ1ZrCuWI/H
oOehNKM5QpW5k6shWuOmhYD9kROE/D1U9huzGEzijUZkT4yUF0udCNoFofz6wl4t
Czk1+Pjd3tecIj9/NitBiDzjCPJVXeAOphvCO0Z0R5fKA+Y/4kd+HmiuNiW1tnGG
D7z+beF+SsnagRquwdfZTpICfu/2+ogHwfxpsm8cHhx8DzMslA==
-----END CERTIFICATE-----

27
tools/mkcert/omc-ca.key Normal file
View File

@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA+J0KQj1SFaDsQ4qhL8kYf3lDd6R9T6srQRQslsl96zMmRhna
7aBDmBsFzJZRC8WE64WmBxyGwYBXLdB+507QnHKx/rusEUWPIHY1BdzrwHfMlLkv
430/RcTCDP2Gv2uKMOs1PxG9j7MvwGWtuXigESyw4TIU4FiQcgyW9QQgxlhoDU08
D5bCTzHcQ1LVhUaaXm7skGTah7aAcOS0d73yFTQ13zwrdnEa17enCZ7KcyyVPD05
y3pbLZ+7TNxmWclk+ahjYtdjKHGaP2g7efkqBfEeV8bE+Xk3aWq7+2YCv/V8DBQp
UdRnOmYhsTKoxMOjDypO+Nhrij/jUG+DUk6sOwIDAQABAoIBAQCBh0hOBKbcr/AI
rJSYUfyahbJ6BlBnjrXFfV5R3X7maMrbISNoROSSvhmCYxqsuGctUn+TGvC2pkhF
jWhg2TZlHHjSUDMw+H2+mve7K0QFDiWfovBpZNrvXbkAjaKD3uKr5A/k4ThTQzdw
1Ujy5f73k8JAQhiQXnQ7h4Wq+FCfJW+A3MOS28d3yh88ZYv5CHj/asnp2DfWr85h
bDsZZlWfns8lRRlLJ4NV9xMbFrH5EmqhzGPjKSZouBP5VQ0VoCUJQXMSsjN15Eh5
A9OrZHFNW2fwgX4XQTS163S6uK/AAFMxJHaDAqXKfBlxQztCzbm6E2k8MB+6cpnB
mzlKTJjRAoGBAP/Mx1oFYOPaFPiV1DDNF+J6eCRMNypWSv6taPIFqE0qY3EKvkNO
g4zsI6e5/pmRzcZ9gJdpXBu61uwPmtymIltxcdkxmK/7+1ChM5dF6vy1bwPxjZtD
oyi1XXQTkLpTFww6dMYQS4wr3sqXHab3E0BvqfUa79e3rZ0AAX88BEQDAoGBAPjO
0oS8swOFQgYjuTIWODHh0kKB3cxFi7U3gG8dSQgOYzm+lwi3JydMmXCeW5qafJUH
NuPPLPQbjE64/le9w8rdkVa8gfz8Obh1NwNSWgfnXciHKAMGgaEJkP+dLZOiaFQF
t6bqtKCReOSqcK6JYzAKEaQ8pqNaWuHPOf/giO1pAoGAXvub/npGyvR8mv2Ph/tv
5gHRwLCoP0lBmaWsdUnSf6zAtgXmNjneMSKx7qLqvf1c6lpJuG8/63AKRCdbOplZ
4piSTLLU3mvzmrHw5TfqFKIOMemsyj1oRUJrDCIDuJwHz9uY5r7APrE/jfxk302Z
UXDlLAUvj+s9RTHuXF9duh8CgYEAyWm8F8Id9GKiwQ+YMwizswXIzRgOMfe2kht8
9/YwEbp77tnvsBl8M58Zs4YuR6h547Z0Y9Rp4q6OVYgCNYsj/YyBxEJTxDV2kHEq
+KBoy28rh1KKPHC+7VsuKw7VP2dAp4v9UL09PaKlyA6Fq3UCe3gbMeX7S8+wNI4p
uI7OqckCgYEAmj8mIxEt0AASeRvDlpJL4boYMeLDtwwjGA9l9M+HtEPHjfYL5gG0
KtcyFwcBMI01HwC+c/itmiEmzRZBCGrZjdvCauIxg5wW37O5bzQIcd+HY57Tkvx3
PGH0E4/TCQq9RJQ+9oTKjwQVb+C4aj+/H+HNU/aVWyI8BpfMivC/A7k=
-----END RSA PRIVATE KEY-----

View File

@@ -0,0 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC2jCCAcKgAwIBAgIBAzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQKEwlHbyBP
TUMgQ0EwHhcNMjQwMTA5MDcxMjU1WhcNMzQwMTA2MDcxMjU1WjAVMRMwEQYDVQQK
EwpPTUMgU2VydmVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApSTG
HNOWScYVHHiGw9z8q2u3ZMUaOFBm6+F4p4PrpM1h3FtHmYv5IWr5kqoMgCU/FmPG
HrSqDzrm+J4QMdguq40Jd4QOadiDg5oyLIM6Su32sjtG/y5an3abtY9hNCoWDdpy
kNRb1i9NQ2uTSBHm1lTVWutZWgm7D9jES8JB2byDwAOONwGlqAw6buxUlIP2vCtn
SpMF8Mqdypnw8K17DLXpP+D8Exw4mjOmJEVOGnw/pinjDCHm9SEiFtagdXIWliwl
DgbyVeSE70JhaGV2bGlmldV2sN2qPvG/W99pCeObxNcCko9JdJqsDVQTiOTY6uaH
o/GdDnzZh4TbbDutDQIDAQABozYwNDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww
CgYIKwYBBQUHAwEwDQYDVR0OBAYEBAECAwQwDQYJKoZIhvcNAQELBQADggEBAJY6
eI54wSn+kNteFEdoFS2jVM+GAMS0x4blX2wzNro6HqhlYC6oJ8TxRS6V22ugWLFX
M/pcqV5FA1XCSibYdwscdaoUSUYc6inlkHxrbfSryiQqXAkEv8Ote3dqtOu7Z0BY
PkykdMrCUXn5ksYgoTa7G1CdAiaKMeuTz801l1g8AIOpNV1+Xhi29TKA134VDW9S
2aDcD6jEs63rqKx/knStli0F58N0kOKjmmt45stP90o5NsshAMumzP0xhfwC94Gg
eBXg6ThM3nuOBQyzPEtUZioRKKV4XmgZF/F4ePCnS4ST9ft09kx7UcR9MVzGIHov
whwVw6o5O7h1xQr6Pjw=
-----END CERTIFICATE-----

View File

@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEApSTGHNOWScYVHHiGw9z8q2u3ZMUaOFBm6+F4p4PrpM1h3FtH
mYv5IWr5kqoMgCU/FmPGHrSqDzrm+J4QMdguq40Jd4QOadiDg5oyLIM6Su32sjtG
/y5an3abtY9hNCoWDdpykNRb1i9NQ2uTSBHm1lTVWutZWgm7D9jES8JB2byDwAOO
NwGlqAw6buxUlIP2vCtnSpMF8Mqdypnw8K17DLXpP+D8Exw4mjOmJEVOGnw/pinj
DCHm9SEiFtagdXIWliwlDgbyVeSE70JhaGV2bGlmldV2sN2qPvG/W99pCeObxNcC
ko9JdJqsDVQTiOTY6uaHo/GdDnzZh4TbbDutDQIDAQABAoIBAHxE49+lSJ5TNGes
Op0AmhHUiLiHqWde+VPe4xALMTNeaZmMBqEAt4PyH8PBuo5jeMm8YsWQZbf4Nv42
0zDu4I+vHcSV1tLHXo+VZNQiG6du0gjkmlRD6WW9twY00oySbu4Vx8g8RK80AQwO
01GURwRZ6gL0vtQGJoGSOIRZtXvGLltVR52OfkgNMjNepwtJvMV7PW5xYwEcnx+i
sZD/6hl49Qv5g4dCCGrnr8Garx9+cUkVP/ipkBnjyKACfzYQhoauo03Rv4iuNdy6
QD9KB95ALHq66vYXF72YW75JQhQ3C1qGcghNn68RIlufSnA7D7J9VCG5VSXfVrk2
a5Xw2HECgYEAzaXU75hl87fmf88X+8M6+OuaMnnLAwIadbcecakkO4bgzNF1SYwv
dbZ608LvdUt+BYVU43CCX3//a/MI+Ncp5sk85TLsXUxXGWonO1zXpa3+BAEXJe1n
xnWVdytWMeoyzhBZ/Vkx7/NAu5WSViXgQ3trB0Wr3OGw3Nksb4Son8cCgYEAzZQc
SlglEiU+Z+BsCV07FEkU6xgsmxQQuptPuGcm713Ik8c8a5KAyjbhpp+oBvn8v69i
hVGHcFmZYeazBL39dC4/6E/wDOVEwN2fY8oYBnrPvoz7FUTvObRjZakrgVj+XAjS
lg9RuMm1tYPFR52V5BTngJ9Rkj/AewxWnGMDtIsCgYEAng1i/5ZQXSUs+XPwCeY9
b8yb4Ulr9u7p6SkJM+/8UefS5HfjPdiJLV5HPnOm2K5ht9qGqJrzCHT2mT/b2Gx9
3ssxizI9KWOf2X+VkXFEqCh2fxtbcCHrTUNX0ZQ0Ff7adzdoAmhIEhQR31oQczd/
Cj5Tvu4ULZoj9UjQdxEtDEcCgYAYrW3T8s7IZdYe7A6r9RgRcFBlhCpel0MG03v3
W9KNq0lXi/QRya1SGNJviPzHkZyoeeourMHAV9EUsnfM2u2g06hyP55GPgNJz5DB
jtHhfT6Q1iWRwQuidqfz3SHOzhsCe0CkKMSblQMN/fphhWYn0eaURwuoraRyYOHI
tg4MzwKBgGImdyBx/l6bkWa4GywZ9iw5RDe7KYN9UclnBcHDkIELXskp8bTbwpBy
m/IyLC5eLOzdK7c2Odtd3LP/AG5fYPAzQ5S6YmSDPp1JEKODbg51wcMJpLSvG2Q/
P5paV/ZAKbxgXpilBrjSejM/QLYqD8756z5lgo5biR7bGkBA+nkj
-----END RSA PRIVATE KEY-----

View File

@@ -0,0 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC5DCCAcygAwIBAgIBBTANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQKEwlHbyBP
TUMgQ0EwHhcNMjQwMTA5MDcxMjU2WhcNMzQwMTA2MDcxMjU2WjAWMRQwEgYDVQQD
EwtzZXJ2ZXIyLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJGR
xOgLorltV4S9LyJUNmtI/WEfJ+tIXmwQtS1owri/SA1yJlSjxCKfnYxjmTmcno2E
RSnwVjetvZgNktmUaptW5zaxGJQYfyvylft9C6sBamRfz+ossbx25sxiwwvT6oAX
r82k1oBJHuubWqqM7k3VxoDLoRcgirZOA1U9O0ahit7U74qy9SCbb0oxgxLa/mAP
BTzu7+cH/nNFp6cyL1HrILI0ZpXMSDqEo+OZ5yqT1AUDmRnmsOVjRheJZa0UK0Wj
ATY/STU42HC3mGI8OKZJgmUK9YTmnLuzQ8WwP6NhWrCwZnEH3+H6cJqxZK53Ptq/
hX1ny7/Ymzzb16bkjUcCAwEAAaM/MD0wDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQM
MAoGCCsGAQUFBwMBMBYGA1UdEQQPMA2CC3NlcnZlcjIuY29tMA0GCSqGSIb3DQEB
CwUAA4IBAQCkbE+dKoibOUBwv3ijOA69LdLDXhIw5eob9WQYUUFc+qmNPLBvuIl1
v3eig4kQK2oxpO6n7DiXgSlj76zy4pSSZvBazHmyLFQxU8KuO562KC5m09YBGfpG
bTdQzFRWrD53X8sN2cJJsypveshM5AimeqHiICFM2kK1Gz3MzPvK5/s4U4jOGaOY
WVvaY4dY5VyNyhj1fXEv4g8I/G7EOPCTClgJEwVexyDU8WJf3BX2g8It97gAqi5U
T9hyNYoVMWCy9m2y+RzHjE5PlUt4VoNkfKfIKs2ha4/9mMXsMcWlQebOfPa3oRF3
ik6389nUiq0aeVtUECA6b0lwXBsNtWml
-----END CERTIFICATE-----

View File

@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAkZHE6AuiuW1XhL0vIlQ2a0j9YR8n60hebBC1LWjCuL9IDXIm
VKPEIp+djGOZOZyejYRFKfBWN629mA2S2ZRqm1bnNrEYlBh/K/KV+30LqwFqZF/P
6iyxvHbmzGLDC9PqgBevzaTWgEke65taqozuTdXGgMuhFyCKtk4DVT07RqGK3tTv
irL1IJtvSjGDEtr+YA8FPO7v5wf+c0WnpzIvUesgsjRmlcxIOoSj45nnKpPUBQOZ
Geaw5WNGF4llrRQrRaMBNj9JNTjYcLeYYjw4pkmCZQr1hOacu7NDxbA/o2FasLBm
cQff4fpwmrFkrnc+2r+FfWfLv9ibPNvXpuSNRwIDAQABAoIBAFylN3qvnRsCegbj
GNJyYkgZphlf6NoXrvB8GbMSz4shQkw8cCTCLZwTlgO5h9Vg1pAetJ4iddzt2JKj
YOjVSpwezPzD7W6jwJxJwibSyNBHEF1dlUfmth/KVM2Ttasbbk2jxaHN3S68Ws98
ilGtbCVhfvqNnrLHZUDtmbVwSP+D7tMrZtUnzbj+zOKgx/KpfwdD+YnSI9dmBDpN
0GJ13emAnEs3CG+6bJCLJZ8W6W6T2FxliMeVxueEoJde+6SBDbNO1Ia+vNK9KSNQ
7V8gEDnKFcSekcN1bmQBpCE0i9C8AYc0wW0twf961wWIwyZyQmLhEWrULoDcJ+LQ
v2a0I3ECgYEAwQeK3MBa+PnQTbWejXcYeULdDfHlm4WNAee9sexPwhA11vGILkh3
N9f8AYGtFFWph7tnIDPFbIuOOJf7wA6uBmZ89E3pAbq7ffPHDJHK5td+vN4jKzDw
QUbl32IVePJNZny0heORH0QfTQI5AzFc1RKx6KctNz1mc/TCKCH4EQsCgYEAwQ6y
x/gs7ipGxJ+fspOpXrM90aVu6MRClYeBKt4pdhYgvAYbB9W0cNZ2emzYxmAe7a5L
F687T+G1rTL1Xc/Ql/ZIwObkoB8DxJ3l8sp0r9yM+xRZ0y2huG6tQTcglQr1U1pt
nZdy2pukLgPUrJGhiKvV9HVE64KQitcQ63Zq0jUCgYEAqyL8wmroPQV+4Oa9A78r
O5dEVTC52QC225GSZUSWEgA9O6w4iJBG4oPjMZK+2OB5xZUpASvlRS8VkKdu1AAv
2gzTi+XnR1k/EZQoTcSUl8VG4DwyAgEJgVZSR5K2ZtysMsktY+c2qvnCpovp8CK7
o01H3nUZaXhOdU/zM5GqVbECgYEAm4r+HAMmIBVLwytgfX5e3X/IdNq3Cy7k/piY
RzOLcCrP4O2CZcOWh7si5exAk0PqZ1EgC0sRnICb4ZnG+vhudaDmaRUeaqvSW11k
YUMg1Hf71mdFH9IKFBCH4p1J0QttMOUQoAHfdaYklzZa6VbEMNtRnI3HI4CkeFhi
t3NHCWkCgYADC03DzcN7c2cOm7MrXkaVP9L/cZ/nK0BymK3hF3xV1VIjwB1Rk0wB
2vbW4yw4dWyDryWgbWXMnwWUzA11Xp/cNz+20gQcLPYl64Ah/nHW5WgXEJ0IoU8n
C8fOeRHyn9VEpi6GaBUi9vVw2krktvHaJWoCDZpLm7n3ZXG8+yzAIg==
-----END RSA PRIVATE KEY-----

18
tools/mkcert/omc-web.crt Normal file
View File

@@ -0,0 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC5DCCAcygAwIBAgIBBDANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQKEwlHbyBP
TUMgQ0EwHhcNMjQwMTA5MDcxMjU2WhcNMzQwMTA2MDcxMjU2WjAWMRQwEgYDVQQD
EwtzZXJ2ZXIxLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK2S
c4sRbErMBY8q8JVzNWRDBUUIWRBI6ENWCR/SzvF1a5gkxTnTWLtn4Szkclbsbwij
YWEXcuGaodIiY7gjJ8KM+x2qaFRVOxIoyTZvshBQUS8R8YPhnmQZHvEmoVScw9R3
yKNLmIiXaTltP1tLoF+KSl6icqmY1bepDuhrZrYc4rLlU+BKvcWHf2xOozzd5KxX
ENaLWkIEWNWHOHWoScp8nfYNttEmz+kOwjikothkEfsXbFImNsdDrNk3ZYFUFnjv
S2lJPzwlc0hd+iHU5yC1YBDgAGpITSni0HqOzghNPHwwakGa96jGYw69AU1fAssI
TEELmhhwlHGm/MX+5IcCAwEAAaM/MD0wDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQM
MAoGCCsGAQUFBwMBMBYGA1UdEQQPMA2CC3NlcnZlcjEuY29tMA0GCSqGSIb3DQEB
CwUAA4IBAQDqoK6iKz7Q8L+0GgqD84tXJFbJKGnJNkyJaw/jCxlL6A8QTO7IB/ym
zZL3PcdNZYlyiNbyN62WzBKjYUaZMsXxEFtutav1GQsWmtQb3SO5Nn/8t+HFUwEt
YJc09LoLlYLOII0n8mN+CaMwv1mfZjWKewdXgwXvNzMrhOWJF9r+tRaJefNDpuT/
dRj+iKFXG0aH4gCOc7Ur0HYjlQ+OFvUgWEOpk2OS1JeBNi4HjiQdAZbREg7PQI0D
sjMaHMIHC9WPZzEQ9InLmZzu0n++FKHFo8htz2bQFsNJNSB44pcKkJvpt1Xq854/
rvcwWe89C7y5JCJGlzvHpGRecEMFPsZU
-----END CERTIFICATE-----

27
tools/mkcert/omc-web.key Normal file
View File

@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEArZJzixFsSswFjyrwlXM1ZEMFRQhZEEjoQ1YJH9LO8XVrmCTF
OdNYu2fhLORyVuxvCKNhYRdy4Zqh0iJjuCMnwoz7HapoVFU7EijJNm+yEFBRLxHx
g+GeZBke8SahVJzD1HfIo0uYiJdpOW0/W0ugX4pKXqJyqZjVt6kO6GtmthzisuVT
4Eq9xYd/bE6jPN3krFcQ1otaQgRY1Yc4dahJynyd9g220SbP6Q7COKSi2GQR+xds
UiY2x0Os2TdlgVQWeO9LaUk/PCVzSF36IdTnILVgEOAAakhNKeLQeo7OCE08fDBq
QZr3qMZjDr0BTV8CywhMQQuaGHCUcab8xf7khwIDAQABAoIBAE+rFe+yGpOmW7Lg
Ebd3Pv17KbMK5t5rqHgnyF5cA3Ke47jcv84P7P1v69IQNU8ijMBZRXwsKCXXNQlf
kYfWUwygay6tpd93k3p9UAX1dLS6ONkzEjjnWS02vpYPliNhJR2jsWsKasPfQ4QB
WgBMkRrpPcN8KscfiJEZPud9TJKvo/ffMDNOM01d2Lyytqt4mVvbQa68EjwoBSGe
6AEsEjoiLnnxlzuXXGCEcTXOEfcUeF8Bbk74lCJDdeXgrUB/Uy28FlhELsLpg2TD
IvwgJ3vFYEZzNKAVTsr4V8no8n4GButdQlSCpofACWx6mhq03535b+mSgN4AKLzR
YkhaQcECgYEA0x00F6rCneNzQ/b1wFK24OD59Nwu0NjKWYylXR++bbDHD/raJSCY
hBGFk/QB6KPVxH9ovoSSzov3o7nYBSXlTZCCm3Y1feaykHWkhKEsHcJ1tQXPehxe
40do8KI4vbaZwFk/gB4K5PQorizKDf3LEzz4R6TEFxVkzv4y4pq4yycCgYEA0nnc
tJnU1OtJNVW12+ABeiKxFbtAMpHGtqbg+ZJ9VRLJa813WkKbAtDMFTyvQa4sdIzV
F4yeApow4LILLICIcj8XfU0noGxmHAB66PgGPfx3Rj+AUxP7e24/vgF4DydKIr2J
5jwQc5EmCFBR0aQpmJsd808PtKPXJT5mIJrod6ECgYEAvmQ39qApo/rcmQ6/0xLF
m0lKI2nvTqo0003kVHesZYBoBiFVWuZqpbCnpycIEaavwuaksC0fuObCDwYrq3jh
s3IAV/PjigfkQiPWm0Y/Yxdc0ETNOHMdoBtmqJ2kTnO/dZkHi6OMb69CgNIj5zpb
Sp5Ry0rtDWRd5c+aVIL05UECgYEAtRPQlLQQDkqKhk9CEXOL8cbs8VRS6+7MthGm
VjD4kPuDvLJdb5MEB40ZN2ApK2msp20OW59HxddgG8Axqsy+FwQ+sjdx0yvPQWIM
XGgd/rA48X/qaA81+cAlKNPctbTIrFDC1ghw4uxKezaW3bTNcJRrVQt86J1YmJsx
g/Wh8GECgYEAhYFWpiMqcwoYYY7BFrYK4QGxPZ5OESevnJOvMRra5m+qlHhS8X9f
0Ewos6yV2qFZB7lRiPMve85ysUySwKl3rTWoJuwAlZZOkXU3MCjJ+5+nvMm7jzgf
eKWNu8avLOENdRu1bIFKM8iTVs+zDpe8LpcuEs4D+Ql7Gw2+9cZmanw=
-----END RSA PRIVATE KEY-----