major change of websocket dbmHandler structure
This commit is contained in:
89
cert/cert.go
Normal file
89
cert/cert.go
Normal file
@@ -0,0 +1,89 @@
|
||||
package cert
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"crypto/rsa"
|
||||
"crypto/x509"
|
||||
"crypto/x509/pkix"
|
||||
"encoding/pem"
|
||||
"math/big"
|
||||
"os"
|
||||
"path"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Cert struct {
|
||||
Organization string
|
||||
CertFile string
|
||||
KeyFile string
|
||||
}
|
||||
|
||||
// Initialize a new ssl certificate handler with organization name
|
||||
func NewCertHandler(org string) *Cert {
|
||||
return &Cert{
|
||||
Organization: org,
|
||||
}
|
||||
}
|
||||
|
||||
// generates a new self signed ssl certificate foe localhost and development use
|
||||
func (c *Cert) GenerateSelfSignedCert() error {
|
||||
|
||||
// do not generate certs if they exist
|
||||
// _, err := os.Stat(c.CertFile)
|
||||
// _, err2 := os.Stat(c.KeyFile)
|
||||
// if !os.IsNotExist(err) && !os.IsNotExist(err2) {
|
||||
// return nil
|
||||
// }
|
||||
|
||||
priv, err := rsa.GenerateKey(rand.Reader, 2048)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
serialNumber, _ := rand.Int(rand.Reader, big.NewInt(1<<62))
|
||||
|
||||
template := x509.Certificate{
|
||||
SerialNumber: serialNumber,
|
||||
Subject: pkix.Name{
|
||||
CommonName: "localhost",
|
||||
Organization: []string{c.Organization},
|
||||
},
|
||||
NotBefore: time.Now(),
|
||||
NotAfter: time.Now().Add(365 * 24 * time.Hour),
|
||||
|
||||
KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
|
||||
ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
|
||||
BasicConstraintsValid: true,
|
||||
DNSNames: []string{"localhost"},
|
||||
}
|
||||
|
||||
certDER, err := x509.CreateCertificate(rand.Reader, &template, &template, &priv.PublicKey, priv)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err := os.Stat(path.Dir(c.CertFile)); os.IsNotExist(err) {
|
||||
os.MkdirAll(path.Dir(c.CertFile), 0666)
|
||||
}
|
||||
|
||||
certOut, err := os.Create(c.CertFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer certOut.Close()
|
||||
pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: certDER})
|
||||
|
||||
if _, err := os.Stat(path.Dir(c.KeyFile)); os.IsNotExist(err) {
|
||||
os.MkdirAll(path.Dir(c.KeyFile), 0666)
|
||||
}
|
||||
|
||||
keyOut, err := os.Create(c.KeyFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer keyOut.Close()
|
||||
|
||||
pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)})
|
||||
|
||||
return nil
|
||||
}
|
19
cert/cert.pem
Normal file
19
cert/cert.pem
Normal file
@@ -0,0 +1,19 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDGzCCAgOgAwIBAgIIB2N9YzgUYFAwDQYJKoZIhvcNAQELBQAwJzERMA8GA1UE
|
||||
ChMIdGVjYW1pbm8xEjAQBgNVBAMTCWxvY2FsaG9zdDAeFw0yNTA0MTYxNjE2NDJa
|
||||
Fw0yNjA0MTYxNjE2NDJaMCcxETAPBgNVBAoTCHRlY2FtaW5vMRIwEAYDVQQDEwls
|
||||
b2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDFOsJDNRd
|
||||
wX25lB1QGCFhvjK+yN/pZHNtjQvHOcajON+Fhm56RWKbuKR4BQdNWF/uWe/wH6kC
|
||||
xrYXzuAqJIzB/trFZ14whNblxjjxSmGhkMNFFTIIIdTICcoQu3+zzXxUc4s9ni4R
|
||||
uGXudFB7uSZBx5x2TWrdFzBIfAuWfQfCwMWqiDoTH09T7DxJJyuvKf4yNPyDq+oe
|
||||
4WGEXCpk3VBjggqYDGknMUzreEEa8JaIuDMFhQz4J4A5QGZOHOEyaP839cDblY31
|
||||
ot5Pd6PUAs5yvmvIZUCscW7bJH2vUqDC2tJ4WjkVkykULLIDIbe4Thi4//9oKzKV
|
||||
fhP2TM9t+OeVAgMBAAGjSzBJMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggr
|
||||
BgEFBQcDATAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDANBgkq
|
||||
hkiG9w0BAQsFAAOCAQEANfjOOkU/fl7Y2pJ6V+qKv9vdBb4nEpiNOnSl8sSgZP4r
|
||||
wa1ArfALCPY1Gu+XDrwqcVLii511xT4cFuegxaOdu2+5j4+WjIR9ke/AeEuyNU1X
|
||||
mm/xgBOSibxqSWVHTGhLLY4jwyU3GYx+4ODNmLoQ2eNQ7NDsCDAQq+OAbR+f5486
|
||||
j8AcrjEjWI5Nh9p4DiqEA1DwNCKnpYcw8QBiawNFli3mvFSu1KSTG5UGM8vwzCOu
|
||||
nk2GtBvhDODVhDuM3BjqAmT7xbIJGXdW25+FG9++Vc+36LVSJVxMeOWx4u07Ggqk
|
||||
4y39spP+xOzXegFCJXu+OkxjvZ7mRGaPp1zKeaoVVQ==
|
||||
-----END CERTIFICATE-----
|
27
cert/key.pem
Normal file
27
cert/key.pem
Normal file
@@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAwxTrCQzUXcF9uZQdUBghYb4yvsjf6WRzbY0LxznGozjfhYZu
|
||||
ekVim7ikeAUHTVhf7lnv8B+pAsa2F87gKiSMwf7axWdeMITW5cY48UphoZDDRRUy
|
||||
CCHUyAnKELt/s818VHOLPZ4uEbhl7nRQe7kmQcecdk1q3RcwSHwLln0HwsDFqog6
|
||||
Ex9PU+w8SScrryn+MjT8g6vqHuFhhFwqZN1QY4IKmAxpJzFM63hBGvCWiLgzBYUM
|
||||
+CeAOUBmThzhMmj/N/XA25WN9aLeT3ej1ALOcr5ryGVArHFu2yR9r1KgwtrSeFo5
|
||||
FZMpFCyyAyG3uE4YuP//aCsylX4T9kzPbfjnlQIDAQABAoIBAAfekaahTyj8puMA
|
||||
39489ifFVOW2U7X/nw2Y+Xpb0P2azAV//HfpOAbN5kopjCrC35SaKZNdq5ZllRXi
|
||||
LgL1MeQBF5ElnNQtn6YDa4U5E2j0xOb5NmkpxQKDk2E+aj92EOEu2G78l24pxDVG
|
||||
Zhkl/GGXheIna4hBdbZCCFoI1b9o4w1iFLsc1MJxDszRqxD5M9uZ4YMtI6rGrUtx
|
||||
xAeYqSvEnMfYHRXbQlFhZF2F9suW+rsUpL264bQ7OPMNsQAtsu5Q9x1dEMuuj+NX
|
||||
4Tavu78CyVGjBrBrCDJ0P/r/EyK72n8noZBto+Xzk4S3PjxWfb0HVsHYVaeq2O+I
|
||||
3et0C+cCgYEA8fd9NB31KU2sjJtNWBq7Vs/6F6IPlZat6FCHFDjt0wCm9LK0gMii
|
||||
l79mJyKwI3i2K3HKVDrpuplYBJ9Z7XQCQin6844Bcp0OizIHX4OYf1CSWsQbJZFm
|
||||
SdrUwKyijYR9nHKmjbFa+PWFh/HD630kkkLEFt+Ti+CsdNe0+Hmfc7cCgYEAzmVS
|
||||
JX9DZVZMvEUPanPrHI1vAkFTd9YSGPx088yadomF8cL6QbYXUFq+ZMq3st70S+qr
|
||||
XxBXjjmDTuE8tLepZemIIM9UC6AQ+2IE/RiThLyKrhk9b/7myqWSz9cY8/SqMOsW
|
||||
015U4Jc+KRS1/Tse8Y7tyzHFlthACoKX5HrxNxMCgYBuOQ1B1nu9ivKVQpGjFtpM
|
||||
G4WTinGK9Q7XiwddgOlleyCSy21KVRssATZpkXWnUu+5Lqa6Y/Pg2sWrpWNztarp
|
||||
tPHqTMAAE+dyJSISsoGfTXa9/iNXo7py3kqYUovh537I67lPRoFoc3+Wg915wpIM
|
||||
RnnI6aPuzjQBLdn0boLiVQKBgQC/cv6y54ylmFqPnOPC1Am3r33UMrJxC3I4GR2G
|
||||
9DgnUkOb0Ud/4p9XmwTWy6+ATQ2AygnyoV8F/1VMuuMrot2QOgJapNaJ/g0ikXad
|
||||
KsnTq2xcN+9kTqbYPKOlBRoRWNbxj2/Z2ruSpNg1FRAG+GsomHL9M4rb9HXbCe5J
|
||||
Mr1DXwKBgQDmsYhXErxHiQ0jwDgqFmcKRjm/UvEGzuJ1wMZzCBU1GNAOid25QHvI
|
||||
VIsJjYT6idRNHNxFr7AoW5bpTRMsfh8nLD4VfK9k2HbiRbZmDhC03zxXpgbzRWrp
|
||||
bWTuoTIidPr5pt6XFlPU9NYPfgpGJvcCSbE15UQBd4DLts+UcZZ3Zw==
|
||||
-----END RSA PRIVATE KEY-----
|
Reference in New Issue
Block a user