Skip to content

Commit

Permalink
add mitm to https
Browse files Browse the repository at this point in the history
  • Loading branch information
cxjava committed Dec 31, 2018
1 parent e5dc01d commit da8ebd5
Show file tree
Hide file tree
Showing 9 changed files with 804 additions and 30 deletions.
19 changes: 19 additions & 0 deletions ca-cert.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDIjCCAgqgAwIBAgIIFXVvcHwf0pAwDQYJKoZIhvcNAQELBQAwLzEXMBUGA1UE
ChMOZ29taXRtcHJveHkxLjExFDASBgNVBAMTC2dvbWl0bXByb3h5MB4XDTE4MTIw
MTEzNTYxNVoXDTE5MTIzMTEzNTYxNVowLzEXMBUGA1UEChMOZ29taXRtcHJveHkx
LjExFDASBgNVBAMTC2dvbWl0bXByb3h5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAvJt45t6GtcMOPtLmpGLHJg4VxA3v5nV/T6adaqgz+pBA5Pbw1MLo
5wWhdda254asqI9laKPk0QgluySw/IyP3dJ3EMB0jmdlXy+BRQobt7ls16/AW+If
fIt8OmUF75b5iPdJq6DvM8xNOVHGyEvWjpCNwZhDFsqRelssH6wO2CndxqHe9R1k
ffKGxhaeG21/5ung1+oZPiP4CccfJoDWtR2SvQhvl3Y5Aaqv824c1UbPnTATBEPK
iYpnQvzAwwi15Z8bfnWW2CvAaQJ0TW8YGHaRTehN7YidAHk1WXUl192sihiDTfGI
dCpXTuICCD3xkvRUJeHdw99Kv4CBG/qRtwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC
AqQwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8GA1UdEwEB/wQFMAMB
Af8wDQYJKoZIhvcNAQELBQADggEBABUw6XQR1lQSTiRxAuzm9gWo5NKuW7vTSf9Z
hQtb7+OVetj/GqI+AUqA5JpWAngWDOcaJi/bjWbEvasdh98Ho93yNslyKLRbI8Co
rXJCVhC2aQxZ7fQlIKKH5S39yVgLR4/LAl8Yuug9gynCvYCuUfYL1dhlntgGm/m9
gK4XOucimqnhsoWSDYq4xU80oetTykTlmy8Ms2hJo16eNcvDQGcMVxjsHGOScUl3
qo+7nylKV/vHj1oCtHKOviUJ3F0JLjaEffOUZb8Gq99jE/Mu0OmS6LWWo0Lhh/mC
syjLfCrIUE4aSdn30jzJKwoqVakjhaZIpF4UF/dfcO0HtzBwy+g=
-----END CERTIFICATE-----
27 changes: 27 additions & 0 deletions ca-pk.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAvJt45t6GtcMOPtLmpGLHJg4VxA3v5nV/T6adaqgz+pBA5Pbw
1MLo5wWhdda254asqI9laKPk0QgluySw/IyP3dJ3EMB0jmdlXy+BRQobt7ls16/A
W+IffIt8OmUF75b5iPdJq6DvM8xNOVHGyEvWjpCNwZhDFsqRelssH6wO2CndxqHe
9R1kffKGxhaeG21/5ung1+oZPiP4CccfJoDWtR2SvQhvl3Y5Aaqv824c1UbPnTAT
BEPKiYpnQvzAwwi15Z8bfnWW2CvAaQJ0TW8YGHaRTehN7YidAHk1WXUl192sihiD
TfGIdCpXTuICCD3xkvRUJeHdw99Kv4CBG/qRtwIDAQABAoIBAAe90e6X/6uCQBlw
CquAqm/zcA1GDSzGcd1RF3EDSm7kcOV1BVmWTnz9DC2MDKHgM0IP8Lek0oWJ8hKG
ZQVYt6cBNoXngGE/+Tc4+fNdgNm/sKoBusGKvIQeLZEwCFhXOBLZI5r51heoMRtD
MgeSpVHguRDTMR3EXshI6by7ETjqHPguZNTvhAKVZPiTBpG3oaTGVUJ4n8LXyXe+
Q7+G3dW9xdexAF0bJ9B9WRp0Y39ifGd6QxFuk/jNm08z2IZ+8bm707MT3ToiZsrz
StyJrDYSOzwUSlTOWyB7RSWkqwkb9oFiW1OnoVKogRaqEl+N8Kr93FGtCGYXQ8W6
w/i4JQECgYEA3d/mt9VBOxBhBcln+YECCiBdFux/6TkVxdryLpT1xy3i0dFBJFDM
b0Cm11cEU+/xtd2vBXOD4hV6IUhTZQhgx3niHTz/Ul/JTjRtT256fmn0+ZAwSVVC
OKiCn3evxHdbXAYzs0xU3kclJEQ1A+KRs1eCDbR4KMnggDXyL0sVd8ECgYEA2Z20
A5h/wnKS4Osr9vKGjGMB11tXs/jqw6Ssox9IsdNmkfWYd2xlLhgT33tX5dknD0h7
SoBqH7WUKh0AjrTOW5u+wphLyzouNMn8tDWBwd3bfyiKreNkR+dwDeVnq9GpwB0H
9O4bVaPON3+e/+VPVrJa7ftG3lzPmehKlsQhp3cCgYAAg7xtQLleAbO357euBHaU
v2531ySUzeUXCGL3aLEJPToBcpLMGsPeni/E4BbKewv8d/8n7BSqOZKG8TwAR/yx
eb7kgne1ITO+UrDONltiX6yJx6PVB7WXnAxxgj2OHxi/JeSIzeyEd3XGl8HnuGbO
G63ZikmdDprOsVFWer4aAQKBgQDFg4Cuvsw+1bUAVhMaWXfLldVG/Q32OJgEKMPU
boGRfTmcgtf2lLilBI+NCKt34Ae2tGfK8BDiZPFs49PssqiVtx+GCarJcy4bFbW6
btIt/srJeCeeukP7i1FGG5Bj/7FdwDvHkBHZQgrajofm5N+E5e7oD2h8TKrUm2SP
wMZ28wKBgQCCLPNxueLu4f2xyBmt2Qc/DCfh1sj9CwcvLuwalhQKkDKoB15sR0PL
hH1wNKWxJ8zvTPUA5zvT/jCHfYBhEKuI4DpKxU1z3fjWK5Df1Iqx1OFriCK8AQ+S
uGCsfQBHdb9pZyqt/HwNMybAzAVzTLo9PX7szpeT6Qghdt90reZeuw==
-----END RSA PRIVATE KEY-----
51 changes: 51 additions & 0 deletions cache.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// package cache implements a really primitive cache that associates expiring
// values with string keys. This cache never clears itself out.
package main

import (
"sync"
"time"
)

// Cache is a cache for binary data
type Cache struct {
entries map[string]*entry
mutex *sync.Mutex
}

// entry is an entry in a Cache
type entry struct {
data interface{}
expiration time.Time
}

// NewCache creates a new Cache
func NewCache() *Cache {
c := &Cache{}
c.entries = make(map[string]*entry)
c.mutex = &sync.Mutex{}
return c
}

// Get returns the currently cached value for the given key, as long as it
// hasn't expired. If the key was never set, or has expired, found will be
// false.
func (cache *Cache) Get(key string) (val interface{}, found bool) {
cache.mutex.Lock()
defer cache.mutex.Unlock()
entry := cache.entries[key]
if entry == nil {
return nil, false
} else if entry.expiration.Before(time.Now()) {
return nil, false
} else {
return entry.data, true
}
}

// Set sets a value in the cache with an expiration of now + ttl.
func (cache *Cache) Set(key string, data interface{}, ttl time.Duration) {
cache.mutex.Lock()
defer cache.mutex.Unlock()
cache.entries[key] = &entry{data, time.Now().Add(ttl)}
}
43 changes: 43 additions & 0 deletions config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package main

import "crypto/tls"

// TLSConfig Configuration for TLS
type TLSConfig struct {
PrivateKeyFile string
CertFile string
Organization string
CommonName string
ServerTLSConfig *tls.Config
}

// NewTLSConfig init the TlsConfig
func NewTLSConfig(pk, cert, org, cn string) *TLSConfig {
return &TLSConfig{
PrivateKeyFile: pk,
CertFile: cert,
Organization: org,
CommonName: cn,
ServerTLSConfig: &tls.Config{
CipherSuites: []uint16{
tls.TLS_RSA_WITH_RC4_128_SHA,
tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA,
tls.TLS_RSA_WITH_AES_128_CBC_SHA,
tls.TLS_RSA_WITH_AES_256_CBC_SHA,
tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA,
tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
},
PreferServerCipherSuites: true,
InsecureSkipVerify: true,
},
}
}
Loading

0 comments on commit da8ebd5

Please sign in to comment.