Commit 45537ae0 authored by ma's avatar ma
parents 439d6d7e 17525a14
-----BEGIN CERTIFICATE-----
MIIDGjCCAgICCQC5E5d7SzWMUjANBgkqhkiG9w0BAQUFADBPMQswCQYDVQQGEwJD
TjELMAkGA1UECAwCR0QxCzAJBgNVBAcMAkdaMQswCQYDVQQKDAJTUjELMAkGA1UE
CwwCU1IxDDAKBgNVBAMMA0FDQzAeFw0yMzAyMDEwMzMwNTFaFw0yMzAzMDMwMzMw
NTFaME8xCzAJBgNVBAYTAkNOMQswCQYDVQQIDAJHRDELMAkGA1UEBwwCR1oxCzAJ
BgNVBAoMAlNSMQswCQYDVQQLDAJTUjEMMAoGA1UEAwwDQUNDMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv/BN9LIP4vK69VbvY6Zbf+tHhYTTHDW4UU5p
dCBc+w2u7PQweCNtH8rO6IJhlcwkxSRbdx6DmVulmkoNAv3vgOzcPXcyGfJFBRSs
QOM36oEAXgG6Hz/laqwCIuz5uQ+vS6g4hUKlVZ0hO0wOBtlXyNlpbJCblCdpXKTL
ZLNkfP5bvdlOTACSf+IML3qeRBCiXxst752fWNFlmRC8ziMSMlnQlGrk/IUvlP2A
f5XUc50Cbmddqt7Uxv657IAzKEtsX/uW1rbRbYon4cUiV5nuM+4kmcW9PETJWEoT
2OMcGyrhFLBpPWsLbcM6z/7fE8CEii2AdRc+Mpp5BDfg0axHBQIDAQABMA0GCSqG
SIb3DQEBBQUAA4IBAQBJhbe97oBg/NLGAy6mP4qpFUR4eHJg/PqGQ9DDnQFyaa2z
ZMlMwWvMUDEr7G9EHKFhZcRt8aJnDTADZ+JUHShWI2eFV0nKcne2GMvRpFV5vUKE
SAqBOq220Ulmac/2nfQ84sBsBCOXEaEm2wB7J0VK9DcZpBE7356ml+gORryBo6uw
3/GF4XJ8+m4uo1I+ZEOCXsLwos7CKjtu2v1kSCp6OW6C8nsbwGWAnSOVAlvw+WYk
6x40W0KoOSBlI0RTK5IOL9peQGKX0tHUq8geqbCK0HeNoPzifgkdFreEGsR9lXxX
xMWrSf2MbP1dGsZSyZGTn7p/8y2bEmLtYZtry8DP
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE REQUEST-----
MIICrjCCAZYCAQAwTzELMAkGA1UEBhMCQ04xCzAJBgNVBAgMAkdEMQswCQYDVQQH
DAJHWjELMAkGA1UECgwCU1IxCzAJBgNVBAsMAlNSMQwwCgYDVQQDDANBQ0MwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/8E30sg/i8rr1Vu9jplt/60eF
hNMcNbhRTml0IFz7Da7s9DB4I20fys7ogmGVzCTFJFt3HoOZW6WaSg0C/e+A7Nw9
dzIZ8kUFFKxA4zfqgQBeAbofP+VqrAIi7Pm5D69LqDiFQqVVnSE7TA4G2VfI2Wls
kJuUJ2lcpMtks2R8/lu92U5MAJJ/4gwvep5EEKJfGy3vnZ9Y0WWZELzOIxIyWdCU
auT8hS+U/YB/ldRznQJuZ12q3tTG/rnsgDMoS2xf+5bWttFtiifhxSJXme4z7iSZ
xb08RMlYShPY4xwbKuEUsGk9awttwzrP/t8TwISKLYB1Fz4ymnkEN+DRrEcFAgMB
AAGgGjAYBgkqhkiG9w0BCQcxCwwJc3J0aGlua2VyMA0GCSqGSIb3DQEBCwUAA4IB
AQBRyccBv7lwv4/GNiXTWTcuLPXbauSXAGyVT2Vk2XFg3dI5ZBYbE/Ir05Afhf4+
gdTBIzeRBSI1hcYrdYDHhFXaq/JS8lO/wEMULvJBcHVEsUa9LHf9hBRmr6+aO6Sn
QYWGUtPfYSn3/WzUUBYeSWvotCqwOUjfmdcPXtbOIHapy5fUuF3UHST4DLHdkjVq
ihbwyr4XS68W63hHzs1mvjgD+v5fn0KMfxm8QUEtJ9duDLF3RMGv71K0F3qHk+5a
qT2vmkBGs4nDYfUHs930mjb+/nUkRxk4KQZupJ64WSiTjNkIEf0dsj/MmCfQoTJK
nlb2i5Qp2A6N71bqoH0eWunw
-----END CERTIFICATE REQUEST-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAv/BN9LIP4vK69VbvY6Zbf+tHhYTTHDW4UU5pdCBc+w2u7PQw
eCNtH8rO6IJhlcwkxSRbdx6DmVulmkoNAv3vgOzcPXcyGfJFBRSsQOM36oEAXgG6
Hz/laqwCIuz5uQ+vS6g4hUKlVZ0hO0wOBtlXyNlpbJCblCdpXKTLZLNkfP5bvdlO
TACSf+IML3qeRBCiXxst752fWNFlmRC8ziMSMlnQlGrk/IUvlP2Af5XUc50Cbmdd
qt7Uxv657IAzKEtsX/uW1rbRbYon4cUiV5nuM+4kmcW9PETJWEoT2OMcGyrhFLBp
PWsLbcM6z/7fE8CEii2AdRc+Mpp5BDfg0axHBQIDAQABAoIBAQCrKxWKS6VpQghC
tPWly3y79kmBI/PUq3+lWqUmf5oL9aby/82dxhISER42Mdfu6/A6s3KyJ08624Uy
tCkoaudE9XZvhjXy96BfqJD5COkbw1FdhHLEXYoteBorpWQKipdMhEdraATj9c3m
AKxdpUPpBSJERC3KkN8gVIJiWq0Z3XuL5dCwY6pQURIgvmFnpH90FLjvztWeokFM
DazuhS5GfVzUCZpOdwk1tub1Om8N0Er0Qv9j1N8yAZ4ximnokh5ANSHrqNOTXZox
qkDEXDcr28fZo+qVXG/T5vPFaJR2cyKJTDF0BYvvYg/GV1oZ4MdlNQ4XzhcJzXis
fwOji7edAoGBAPFiyRuNIhgzalu3AUrCSAurG9zrlcwGa5Kdr/v0KO8rbvFzLHb7
jLwQlBb2r0v/wppUiHEwGfkxIL3OIJOoK28JdXBYlNXqRUhb7HaeOpGpisgjggLB
vnu3mfQRzPVPXLlVF0+ijSXZmK+/dGWyNf9iAk4fxWsxUiH00N9eVnF/AoGBAMuP
JGEqeJ4nrTn2CdvKv8Z76aOLfkOLaSqh6+hUSNhk+8p2XvN5/lpPc1AaU0vTR0OZ
OZT9j2kdOXbTEjJoWoOZGMfqqEhHcZRJnwjPJGFEN76bYh8e9gubp/ccRnYQcLDf
Zj4l3P2DLgm1Ccuj0Xb+7oMfPtP7dYYklzfA7cF7AoGAaLxILmAqbv3AJFNfiCSM
RiPUTyMZOBGBE3jAJz5llIDv/mvO20GCawd2ehBHN16d/YC4QwRwAKPEZRbPI8JQ
NjmQb1LAIaEotqDMFRvKpfE+emCNxMxz7hJYBoLCv53TycaV+sO5IrcrfPZBdu7A
ZzMLdQJsEnqv/HPRPVodf9kCgYEAqJkJj7UGrC++qVggeDwotPPi4sNhs/4e/+GX
LBnLL/gMGHgMUutDAXf20WzMeuwmhVW+vKl7A5viAYn282s9NOwz+zlfYmZSK3kC
0OAIiMtgxG2cSpxxO9ITv3da4OTjAYw2+diQfiUNl5qr30/y6PVjhZT2i8slXxKl
cNdJ1UsCgYB/A20NgmppWMxiTIk9Ywp+7aVQETzX/DYah6Dlep8qoNTIf1IjsqD+
K7XM1lehNU/HItDXzrhq5R2RydhrJkkxm1NQOxSamX2L0GpFfouRMT6x+vJ+FPMe
jJfmbYJwk4GwD6dIQ2vsxebeCBZICDgyJqIQ59wLVlrX3wrX/QHa6g==
-----END RSA PRIVATE KEY-----
B81C2DC0B70ABED4
-----BEGIN CERTIFICATE-----
MIIDGjCCAgICCQC4HC3Atwq+1DANBgkqhkiG9w0BAQUFADBPMQswCQYDVQQGEwJD
TjELMAkGA1UECAwCR0QxCzAJBgNVBAcMAkdaMQswCQYDVQQKDAJTUjELMAkGA1UE
CwwCU1IxDDAKBgNVBAMMA0FDQzAeFw0yMzAyMDEwMzM0MzhaFw0yMzAzMDMwMzM0
MzhaME8xCzAJBgNVBAYTAkNOMQswCQYDVQQIDAJHRDELMAkGA1UEBwwCR1oxCzAJ
BgNVBAoMAlNSMQswCQYDVQQLDAJTUjEMMAoGA1UEAwwDQUNDMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9TwfkKoMSmJ7Ksqbt5U+bukwwQoXa5/dbrYw
8p7yJNHyo6zgL5c6boKESx0pKc+ZFssO9u6LXauDAXTMc1TdrnRAQnXDXpH4M5tW
YVpe9ZTV+7A04oCHXe4QZzWWP7mM9G0XRMZKHapsdPFRDZ3OF5I9RCMOWAdPt4Sw
QtGNgG/vqiqt8fe1evjnqKqrtcLUSwOFVdhqkx24PY6KAZiVLD7tVuDFT1+Tou0J
Hpj3lsn2Ogt8/1K/Yn3Pv+VCKyJIfU297teW2dh8dOC35MHYlDluGoFS0Cggf29b
xWk+7LnguA6JwUsaVbW5yNL4gzy2De1XfQLk8xfHHmKRryHefwIDAQABMA0GCSqG
SIb3DQEBBQUAA4IBAQAk3Ltl4kzr/YccfX3hnci/dt3Pu2AE2XcLaNg9AXjGNtaB
085pab3vA2SpnVzFdZyNAwz7CUJCkKlsqNWP5XRxZWqhyihi9lSx+KGHeKSF7+53
doM3hubGg8taicaBbQr2FyZI0jFjWKwShr0SdSU3xGsa+XXrGMJCWl9CXXGnrcPv
V7YYoSMi8xB4lfmwA9gPNSYyI4f8VpLYgJYMW8/wX0EZbcF2nJH/05ojr5MKl7sH
sxop3m3h+ymVZXqnDoiZl5yX/wzkm8P2xOHQVqXqAFvn/pLl+qROkyUe/sl4wAxj
tUoRi2J0InDfbxArZzw/OQ1WY6Svlp7KmS/oFWKk
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE REQUEST-----
MIICrjCCAZYCAQAwTzELMAkGA1UEBhMCQ04xCzAJBgNVBAgMAkdEMQswCQYDVQQH
DAJHWjELMAkGA1UECgwCU1IxCzAJBgNVBAsMAlNSMQwwCgYDVQQDDANBQ0MwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD1PB+QqgxKYnsqypu3lT5u6TDB
Chdrn91utjDynvIk0fKjrOAvlzpugoRLHSkpz5kWyw727otdq4MBdMxzVN2udEBC
dcNekfgzm1ZhWl71lNX7sDTigIdd7hBnNZY/uYz0bRdExkodqmx08VENnc4Xkj1E
Iw5YB0+3hLBC0Y2Ab++qKq3x97V6+Oeoqqu1wtRLA4VV2GqTHbg9jooBmJUsPu1W
4MVPX5Oi7QkemPeWyfY6C3z/Ur9ifc+/5UIrIkh9Tb3u15bZ2Hx04LfkwdiUOW4a
gVLQKCB/b1vFaT7sueC4DonBSxpVtbnI0viDPLYN7Vd9AuTzF8ceYpGvId5/AgMB
AAGgGjAYBgkqhkiG9w0BCQcxCwwJc3J0aGlua2VyMA0GCSqGSIb3DQEBCwUAA4IB
AQBhTESkmnhrk9h+Otd4LXk0REuDtcT/JYxoTwm8I5Umpys+a3sw9oqgK/6zogm+
uEJyC2XcshFJVo2sf0qCvc6EeZHPiW8Ip5PfFk+7FzYIPJC74VEbWSx8O7KMXknl
aaujpf5Z8kT/ZjoutV6cb38bwHuKeYTSj9iZIMoyIo/DCmnBFAGA0BcsVzYOplCQ
M3YYOa1INc5LukZQyL+vlLUmWwG4iDktcrql0Cre1wXOQtNfgAcdhajNtEih60Av
KQNV/iazeQJI+wqn2gZu0muQJsK5uWFyj5kexxPtL/vriWXw4M6Kkirg96TH9l9W
CyPnz6CoTaohfq58sGTiorrS
-----END CERTIFICATE REQUEST-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA9TwfkKoMSmJ7Ksqbt5U+bukwwQoXa5/dbrYw8p7yJNHyo6zg
L5c6boKESx0pKc+ZFssO9u6LXauDAXTMc1TdrnRAQnXDXpH4M5tWYVpe9ZTV+7A0
4oCHXe4QZzWWP7mM9G0XRMZKHapsdPFRDZ3OF5I9RCMOWAdPt4SwQtGNgG/vqiqt
8fe1evjnqKqrtcLUSwOFVdhqkx24PY6KAZiVLD7tVuDFT1+Tou0JHpj3lsn2Ogt8
/1K/Yn3Pv+VCKyJIfU297teW2dh8dOC35MHYlDluGoFS0Cggf29bxWk+7LnguA6J
wUsaVbW5yNL4gzy2De1XfQLk8xfHHmKRryHefwIDAQABAoIBAQDgKBSyJr0VQO9U
Ld4n8EMhHgVybcb6mSXODLqxCphLD5y5/0rsNU8ztBk4j28QyLEmJHWJQIIjHKKi
siAvS2NWEuyp0vrBdqtogJR0aCZkU6dEZ8vvPYx+TxyvOkwb837j7NNYCee1NhHs
0qdDyvqWkRVvMpvp2sUC+kYizWiJ+/z/bH1GX6ruu3wrLXOjCLvmjuIaYwl/F5vl
fM3rmycpB37j8/OKy8Q89XkqVadlHo+DUXqSXxlvtnxEZBwUFdLRVncZO5W6JFIe
0Rc7ESRifx6NGaquAGbzxtdQeYIktg0pQ+ul00AfmBcBCUFNszpkpFaIoN89+7iF
zgPtENABAoGBAP2Lq6fpafO4Y2Uubz3aMc7A/7zrqf2DPzh6mOm7FIvK3JMEEE6B
MCejMwwNdy0MNgxDjMcQuiTseRsVso8ybnixD5UWqIGycXX138P+LcJCRK/2645z
b7A9X6GKr6M+XjvPXC1ts4a9jssvdfKG+39pN+lGMSlJXpi2Kme9u5ZFAoGBAPeb
23tsQlUeCzTpGNX+CyVWRsEgljRM/hw36etRAcS2hKTN8o089RnpDXMVt96HizXa
Lts/t5h7saVe2JPTSuSwt0kwCSNrh8sh3J6D8cPGUS7FQmIkMcjsiEuiT66yfnCJ
K7UJeiY/tOvBtELg9Az3/wYXIScEr2AtqVpfzn/zAoGAJ0eBE2VU1b4mH+G+uB1a
hAZgWDtGPZEctTpBAEzMVQ/bdic2A4N+G1XsLZzUbrUqlmHMqHZN8DR2WpzU6dxN
QwNjP5ygBF/JthWeUfXJzwOHMp+VRJ9bmTkY3KToquiZnrh0NlF9c41gVtgGdMk2
ozmAwPHv4c6NCimGjkXVjuUCgYEAuSEm8Rj4X3ufFWhS0WyoGLpxHGSo6WHHfIGx
u+dNUy7D7hStjTxOZZkCHVHXr+HYC+OdtP/m3XNeVy6a76vDC0m1QFtR+dGkLhSb
R0mPsbjNahLCl25Iatmu7h3lRdDfCHUG4My9L2vicYLarEZVMn0ZiAwzFWFDXr3F
KXUIiFECgYEAm3tNcCmSpny7PRp4bmBMcClsPlMuDlH0+LzVmnjY01ocyMXnq0s6
F/Vjp5eJumM1U5TOgYHkYgkULf/gDVLRg1vB9esZwhNpim5qBzvlRI0gKiGB/S/L
EAL2AziaS5+VOWJSz7rwF+y8mnIVt/u94S2y5tpdqq1S+wGEahgKpro=
-----END RSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9TwfkKoMSmJ7Ksqbt5U+
bukwwQoXa5/dbrYw8p7yJNHyo6zgL5c6boKESx0pKc+ZFssO9u6LXauDAXTMc1Td
rnRAQnXDXpH4M5tWYVpe9ZTV+7A04oCHXe4QZzWWP7mM9G0XRMZKHapsdPFRDZ3O
F5I9RCMOWAdPt4SwQtGNgG/vqiqt8fe1evjnqKqrtcLUSwOFVdhqkx24PY6KAZiV
LD7tVuDFT1+Tou0JHpj3lsn2Ogt8/1K/Yn3Pv+VCKyJIfU297teW2dh8dOC35MHY
lDluGoFS0Cggf29bxWk+7LnguA6JwUsaVbW5yNL4gzy2De1XfQLk8xfHHmKRryHe
fwIDAQAB
-----END PUBLIC KEY-----
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQD1PB+QqgxKYnsq
ypu3lT5u6TDBChdrn91utjDynvIk0fKjrOAvlzpugoRLHSkpz5kWyw727otdq4MB
dMxzVN2udEBCdcNekfgzm1ZhWl71lNX7sDTigIdd7hBnNZY/uYz0bRdExkodqmx0
8VENnc4Xkj1EIw5YB0+3hLBC0Y2Ab++qKq3x97V6+Oeoqqu1wtRLA4VV2GqTHbg9
jooBmJUsPu1W4MVPX5Oi7QkemPeWyfY6C3z/Ur9ifc+/5UIrIkh9Tb3u15bZ2Hx0
4LfkwdiUOW4agVLQKCB/b1vFaT7sueC4DonBSxpVtbnI0viDPLYN7Vd9AuTzF8ce
YpGvId5/AgMBAAECggEBAOAoFLImvRVA71Qt3ifwQyEeBXJtxvqZJc4MurEKmEsP
nLn/Suw1TzO0GTiPbxDIsSYkdYlAgiMcoqKyIC9LY1YS7KnS+sF2q2iAlHRoJmRT
p0Rny+89jH5PHK86TBvzfuPs01gJ57U2EezSp0PK+paRFW8ym+naxQL6RiLNaIn7
/P9sfUZfqu67fCstc6MIu+aO4hpjCX8Xm+V8zeubJykHfuPz84rLxDz1eSpVp2Ue
j4NRepJfGW+2fERkHBQV0tFWdxk7lbokUh7RFzsRJGJ/Ho0Zqq4AZvPG11B5giS2
DSlD66XTQB+YFwEJQU2zOmSkVoig3z37uIXOA+0Q0AECgYEA/Yurp+lp87hjZS5v
PdoxzsD/vOup/YM/OHqY6bsUi8rckwQQToEwJ6MzDA13LQw2DEOMxxC6JOx5GxWy
jzJueLEPlRaogbJxdfXfw/4twkJEr/brjnNvsD1foYqvoz5eO89cLW2zhr2Oyy91
8ob7f2k36UYxKUlemLYqZ727lkUCgYEA95vbe2xCVR4LNOkY1f4LJVZGwSCWNEz+
HDfp61EBxLaEpM3yjTz1GekNcxW33oeLNdou2z+3mHuxpV7Yk9NK5LC3STAJI2uH
yyHcnoPxw8ZRLsVCYiQxyOyIS6JPrrJ+cIkrtQl6Jj+068G0QuD0DPf/BhchJwSv
YC2pWl/Of/MCgYAnR4ETZVTVviYf4b64HVqEBmBYO0Y9kRy1OkEATMxVD9t2JzYD
g34bVewtnNRutSqWYcyodk3wNHZanNTp3E1DA2M/nKAEX8m2FZ5R9cnPA4cyn5VE
n1uZORjcpOiq6JmeuHQ2UX1zjWBW2AZ0yTajOYDA8e/hzo0KKYaORdWO5QKBgQC5
ISbxGPhfe58VaFLRbKgYunEcZKjpYcd8gbG7501TLsPuFK2NPE5lmQIdUdev4dgL
4520/+bdc15XLprvq8MLSbVAW1H50aQuFJtHSY+xuM1qEsKXbkhq2a7uHeVF0N8I
dQbgzL0va+JxgtqsRlUyfRmIDDMVYUNevcUpdQiIUQKBgQCbe01wKZKmfLs9Gnhu
YExwKWw+Uy4OUfT4vNWaeNjTWhzIxeerSzoX9WOnl4m6YzVTlM6BgeRiCRQt/+AN
UtGDW8H16xnCE2mKbmoHO+VEjSAqIYH9L8sQAvYDOJpLn5U5YlLPuvAX7LyachW3
+73hLbLm2l2qrVL7AYRqGAqmug==
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDGjCCAgICCQC4HC3Atwq+0zANBgkqhkiG9w0BAQUFADBPMQswCQYDVQQGEwJD
TjELMAkGA1UECAwCR0QxCzAJBgNVBAcMAkdaMQswCQYDVQQKDAJTUjELMAkGA1UE
CwwCU1IxDDAKBgNVBAMMA0FDQzAeFw0yMzAyMDEwMzMyNTBaFw0yMzAzMDMwMzMy
NTBaME8xCzAJBgNVBAYTAkNOMQswCQYDVQQIDAJHRDELMAkGA1UEBwwCR1oxCzAJ
BgNVBAoMAlNSMQswCQYDVQQLDAJTUjEMMAoGA1UEAwwDQUNDMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEArSevYBRhek89GA1hEOWb5tc8hIMic3fuQB99
01QOkgAFM1h33vtX+FOjVlEchdn/S0RLVGatnRSIkcnJufOewDVmuvPYrfIxg0bE
gyG0h+VyX4fZtOJPl7T5aq69n3XuAAMd9vw250WwnbaJ465EdHporZnwTf5qWkFg
xkVOc/6vC1dNOrWo2g18pIy+tLSYb/hw5l95T4EhS8qMOvq7wHh2ukUsb1hhm5Hu
I3aGTByVYLjxssruTQXMaryUmiao1/JsgAnZwgwMJJv5KlTy2iW03NzItKqh5kdb
K/WglktBgrEkJLtgIVcHa4yC5WQz1gQ/NsgA3dIMprQWdXxBBQIDAQABMA0GCSqG
SIb3DQEBBQUAA4IBAQCeGRWtKf6bZOcKxoT6H5U0qMKHdAeJudtOyxYB/Nv66Ah6
Rzl5v46EAU4kStpKURKfu/uDiezilCNILLL7FiuSZh9Q8evunmC6zjs5lVwdvBeC
TdAK7NlNGyNxoFdmsrgySUcf84SqsZypWvKnKNd1Kavrl9IpgHuUANTjh5CH9hX8
ua73Yy5yOQ6p+m9gx4QnwdXeCYoywb5EL59LoYMyI0sZDx3by3CO7ISGYjkTEEgr
UxycDYiKXgxUWPvRaS7jjrA6jEhMaEvYDVNlT0OvKvesIuUayKFCiVEWcV4jJxyv
oxp2hAzSo3Fho74YBeYoZ2E/FcgDExjgLDUhCF8I
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE REQUEST-----
MIICrjCCAZYCAQAwTzELMAkGA1UEBhMCQ04xCzAJBgNVBAgMAkdEMQswCQYDVQQH
DAJHWjELMAkGA1UECgwCU1IxCzAJBgNVBAsMAlNSMQwwCgYDVQQDDANBQ0MwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtJ69gFGF6Tz0YDWEQ5Zvm1zyE
gyJzd+5AH33TVA6SAAUzWHfe+1f4U6NWURyF2f9LREtUZq2dFIiRycm5857ANWa6
89it8jGDRsSDIbSH5XJfh9m04k+XtPlqrr2fde4AAx32/DbnRbCdtonjrkR0emit
mfBN/mpaQWDGRU5z/q8LV006tajaDXykjL60tJhv+HDmX3lPgSFLyow6+rvAeHa6
RSxvWGGbke4jdoZMHJVguPGyyu5NBcxqvJSaJqjX8myACdnCDAwkm/kqVPLaJbTc
3Mi0qqHmR1sr9aCWS0GCsSQku2AhVwdrjILlZDPWBD82yADd0gymtBZ1fEEFAgMB
AAGgGjAYBgkqhkiG9w0BCQcxCwwJc3J0aGlua2VyMA0GCSqGSIb3DQEBCwUAA4IB
AQA4prOJNCytDJw8WxVu92t8JR4Acxa1bDKsrvvl/OKkDzZT0/yfZUsVq4pSdxzI
OgYiuYSgwC7kBoq4MqzV1MBeO6/kOaOKiPHbJyIrKuqEZ8Nxe9RKOZ40AE+zCUBA
TzSX+errvc+ZQweGsmjTenic3nT9wuFgM2B7VnpDagzvhbSlG7NdGldrhBMWL3JY
IKiovSmAoSndeT+7+7qkGPx48l8sTGdPvziRxPVHtmFPfLMacUDMVE8BRdEQ+xtt
Nh6R+GPPfchGOfH3/mEeYAgUgS4/m0AqzODyEB3SUcz/UDlYBfO9uhOPkCnbzsdz
L0JCPdF3ZR5yjQEWJJGnEM0r
-----END CERTIFICATE REQUEST-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEArSevYBRhek89GA1hEOWb5tc8hIMic3fuQB9901QOkgAFM1h3
3vtX+FOjVlEchdn/S0RLVGatnRSIkcnJufOewDVmuvPYrfIxg0bEgyG0h+VyX4fZ
tOJPl7T5aq69n3XuAAMd9vw250WwnbaJ465EdHporZnwTf5qWkFgxkVOc/6vC1dN
OrWo2g18pIy+tLSYb/hw5l95T4EhS8qMOvq7wHh2ukUsb1hhm5HuI3aGTByVYLjx
ssruTQXMaryUmiao1/JsgAnZwgwMJJv5KlTy2iW03NzItKqh5kdbK/WglktBgrEk
JLtgIVcHa4yC5WQz1gQ/NsgA3dIMprQWdXxBBQIDAQABAoIBAB0lyQfLZn1ISWh7
GBPYEt5Q7QcBbBMz5Q82PeANDkbVagqyobsPZEeRDLXDAaImiCsLXALhJeiDRFoG
Ncbvk5GXa6uc0KS3WE5Y40uPqOwXW6FpJOSmE+/drv6eW500JNQrsieZXUShHpHt
4FhLRYq18FkIyMLYSN7YkonNsN8lgT8e55RlBWSBI+zEGYglihIYQFSIi6TDMAMC
L32bP/vJ+WvdZwa6qhmSq7ddbyQhe4TRmfxn8ygC4l+y8F6GaZ6BNHAqz18U+J1l
khMkXI8EC38ESS0Oj4/29QK8gs/xtzcYBo+jTBWPG8zTI+eMyXf0+jIAC1dNHY3c
jTQYVCECgYEA1FV03i76VWTZ0GjZZ/KAAQoKt2Lnkg4v8V+LeRVQLU+xpIcxoAua
nQssW5ZQzVqu/kHc292KKIz6Wq0qyov8MmOPTQRPDF9pE9THwcPrtKrNOfl4e+J9
pQSHu+ZDujxRHjk/aRXEYkclC/nEQIceycbTwPsZA2TdTFLJ5YcWZVcCgYEA0MOe
VVnHuPftfYAEIfAUnAw1soilYafRil9LFWExkusRsw/U64co3Sf0lFxL/9JpVCSu
cfUjc4MDl40t6ZSZSZnSQQ151p+cqkmPK4CfdQ55GD3N7P+qANCEqIPZf5aTrt7n
S93pif3zNCjZgcuZHXb/zhU0KC9ua2ugyqCr1wMCgYEAxEU14QblqTeuyyGQDLCw
t8UzgK5wxaZNlL0vrD4SPcATwbSiH4F6ar3gQ8yfZiLz7NyuraGLys39wQGes1lQ
RreWx6c69oHfHFCsUSSr5PWY/IToZQNIBtg4K2y+oBCPHvPl9FoFjJ6c1QQL72W3
BOa/5/ty9JswoBNKwtrqzcMCgYEAtGQ0jt/zetuRdd6Gs6S2yliqlckJzyaqI/1P
7ft8UM2bD7VgcNzr7J4383MFoNr6dOD1dDc1GP1evzgZMjtbcYPfcKLqYxCs2WCS
vC56mzWUYeQV6vLIvcdwugSkjmFY38Rw7Nemk7zCyJF70XJSrmlDhZpA5XCG43+v
AyhvFG0CgYEAtqzZQDTob14+ZEKdaheWkve1U3eR/wMz0wkPHLZuowG2x2196yE4
FFxG1qvGRk3e1bp1D6PwYgQGmLpKV9R0TlEt49BR1McXu68saEsB+SjqI0ReDTJ+
9i4TcQaOtJOWrQ+8jqbG5JU8c+FcgwELSIOPN6jHplDePB8RupdcDYg=
-----END RSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArSevYBRhek89GA1hEOWb
5tc8hIMic3fuQB9901QOkgAFM1h33vtX+FOjVlEchdn/S0RLVGatnRSIkcnJufOe
wDVmuvPYrfIxg0bEgyG0h+VyX4fZtOJPl7T5aq69n3XuAAMd9vw250WwnbaJ465E
dHporZnwTf5qWkFgxkVOc/6vC1dNOrWo2g18pIy+tLSYb/hw5l95T4EhS8qMOvq7
wHh2ukUsb1hhm5HuI3aGTByVYLjxssruTQXMaryUmiao1/JsgAnZwgwMJJv5KlTy
2iW03NzItKqh5kdbK/WglktBgrEkJLtgIVcHa4yC5WQz1gQ/NsgA3dIMprQWdXxB
BQIDAQAB
-----END PUBLIC KEY-----
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCtJ69gFGF6Tz0Y
DWEQ5Zvm1zyEgyJzd+5AH33TVA6SAAUzWHfe+1f4U6NWURyF2f9LREtUZq2dFIiR
ycm5857ANWa689it8jGDRsSDIbSH5XJfh9m04k+XtPlqrr2fde4AAx32/DbnRbCd
tonjrkR0emitmfBN/mpaQWDGRU5z/q8LV006tajaDXykjL60tJhv+HDmX3lPgSFL
yow6+rvAeHa6RSxvWGGbke4jdoZMHJVguPGyyu5NBcxqvJSaJqjX8myACdnCDAwk
m/kqVPLaJbTc3Mi0qqHmR1sr9aCWS0GCsSQku2AhVwdrjILlZDPWBD82yADd0gym
tBZ1fEEFAgMBAAECggEAHSXJB8tmfUhJaHsYE9gS3lDtBwFsEzPlDzY94A0ORtVq
CrKhuw9kR5EMtcMBoiaIKwtcAuEl6INEWgY1xu+TkZdrq5zQpLdYTljjS4+o7Bdb
oWkk5KYT792u/p5bnTQk1CuyJ5ldRKEeke3gWEtFirXwWQjIwthI3tiSic2w3yWB
Px7nlGUFZIEj7MQZiCWKEhhAVIiLpMMwAwIvfZs/+8n5a91nBrqqGZKrt11vJCF7
hNGZ/GfzKALiX7LwXoZpnoE0cCrPXxT4nWWSEyRcjwQLfwRJLQ6Pj/b1AryCz/G3
NxgGj6NMFY8bzNMj54zJd/T6MgALV00djdyNNBhUIQKBgQDUVXTeLvpVZNnQaNln
8oABCgq3YueSDi/xX4t5FVAtT7GkhzGgC5qdCyxbllDNWq7+Qdzb3YoojPparSrK
i/wyY49NBE8MX2kT1MfBw+u0qs05+Xh74n2lBIe75kO6PFEeOT9pFcRiRyUL+cRA
hx7JxtPA+xkDZN1MUsnlhxZlVwKBgQDQw55VWce49+19gAQh8BScDDWyiKVhp9GK
X0sVYTGS6xGzD9TrhyjdJ/SUXEv/0mlUJK5x9SNzgwOXjS3plJlJmdJBDXnWn5yq
SY8rgJ91DnkYPc3s/6oA0ISog9l/lpOu3udL3emJ/fM0KNmBy5kddv/OFTQoL25r
a6DKoKvXAwKBgQDERTXhBuWpN67LIZAMsLC3xTOArnDFpk2UvS+sPhI9wBPBtKIf
gXpqveBDzJ9mIvPs3K6toYvKzf3BAZ6zWVBGt5bHpzr2gd8cUKxRJKvk9Zj8hOhl
A0gG2DgrbL6gEI8e8+X0WgWMnpzVBAvvZbcE5r/n+3L0mzCgE0rC2urNwwKBgQC0
ZDSO3/N625F13oazpLbKWKqVyQnPJqoj/U/t+3xQzZsPtWBw3OvsnjfzcwWg2vp0
4PV0NzUY/V6/OBkyO1txg99woupjEKzZYJK8LnqbNZRh5BXq8si9x3C6BKSOYVjf
xHDs16aTvMLIkXvRclKuaUOFmkDlcIbjf68DKG8UbQKBgQC2rNlANOhvXj5kQp1q
F5aS97VTd5H/AzPTCQ8ctm6jAbbHbX3rITgUXEbWq8ZGTd7VunUPo/BiBAaYukpX
1HROUS3j0FHUxxe7ryxoSwH5KOojRF4NMn72LhNxBo60k5atD7yOpsbklTxz4VyD
AQtIg483qMemUN48HxG6l1wNiA==
-----END PRIVATE KEY-----
......@@ -2,12 +2,22 @@ package iot.sixiang.license.net;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelOption;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.ssl.ClientAuth;
import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.SslContextBuilder;
import iot.sixiang.license.util.CommonUtil;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
@Slf4j
public class TcpServer {
private int port;
......@@ -18,7 +28,15 @@ public class TcpServer {
this.channelInitializer = channelInitializer;
}
@SneakyThrows
public void start() {
String topPath = CommonUtil.getServerParentDirectory() + File.separator + "/sec/";
SslContext sslContext = SslContextBuilder
.forServer(new File(topPath + "server.crt"), new File(topPath + "server.pkcs8.key"))
.trustManager(new File(topPath + "ca.crt"))
.clientAuth(ClientAuth.REQUIRE)
.build();
//创建两个线程组 bossGroup、workerGroup
EventLoopGroup bossGroup = new NioEventLoopGroup(4);
EventLoopGroup workerGroup = new NioEventLoopGroup(4);
......@@ -29,8 +47,17 @@ public class TcpServer {
b.group(bossGroup, workerGroup)
//设置服务端通道实现类型
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() { //配置具体的数据处理方式
@Override
protected void initChannel(SocketChannel socketChannel) throws Exception {
ChannelPipeline pipeline = socketChannel.pipeline();
pipeline.addFirst("ssl", sslContext.newHandler(socketChannel.alloc()));
//业务handler
pipeline.addLast(channelInitializer);
}
})
// .handler(new LoggingHandler(LogLevel.INFO))
.childHandler(channelInitializer)
//.childHandler(channelInitializer)
// 设置tcp缓冲区
.option(ChannelOption.SO_BACKLOG, 1024)
//设置保持活动连接状态
......
......@@ -14,7 +14,7 @@ public interface PmsUseService {
void createFailUseLog(String sn, String message);
void success(int useLogId);
void success(ReportErrorMsgDTO reportErrorMsgDTO);
PageInfoModel<PmsUseLog> getPmsUseLogList(int pageNo, int pageSize, String sn, Integer status, String startTime, String endTime);
......
......@@ -7,6 +7,8 @@ import iot.sixiang.license.mapper.PmsUseLogMapper;
import iot.sixiang.license.model.PageInfoModel;
import iot.sixiang.license.model.dto.ReportErrorMsgDTO;
import iot.sixiang.license.service.PmsUseService;
import iot.sixiang.license.util.CommonUtil;
import org.owasp.esapi.ESAPI;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
......@@ -41,10 +43,24 @@ public class PmsUseServiceImpl implements PmsUseService {
}
@Override
public void success(int useLogId) {
public void success(ReportErrorMsgDTO reportErrorMsgDTO) {
PmsUseLog pmsUseLog = new PmsUseLog();
pmsUseLog.setId(useLogId);
pmsUseLog.setId(reportErrorMsgDTO.getId());
pmsUseLog.setStatus(1);
if (reportErrorMsgDTO.getErrorMsg() != null) {
String[] successMessage = reportErrorMsgDTO.getErrorMsg().split(",");
if (successMessage.length == 2) {
// 身份证脱敏
String idCardString = ESAPI.encoder().encodeForDN(CommonUtil.idCardEncrypt(successMessage[1]));
// 姓名脱敏
String nameString = ESAPI.encoder().encodeForDN(CommonUtil.nameDesensitization(CommonUtil.unicodeToStr(successMessage[0])));
pmsUseLog.setMessage(nameString + "," + idCardString);
} else {
pmsUseLog.setMessage(reportErrorMsgDTO.getErrorMsg());
}
}
pmsUseLogMapper.updateById(pmsUseLog);
}
......
......@@ -7,7 +7,11 @@ import iot.sixiang.license.jwt.JwtUtil;
import iot.sixiang.license.jwt.LoginUser;
import iot.sixiang.license.model.BaseResult;
import iot.sixiang.license.model.ResResult;
import iot.sixiang.license.model.dto.*;
import iot.sixiang.license.model.dto.GetTerminalDeviceTokenDTO;
import iot.sixiang.license.model.dto.PlatFormBindDTO;
import iot.sixiang.license.model.dto.ReportErrorMsgDTO;
import iot.sixiang.license.model.dto.TerminalDevieBindDTO;
import iot.sixiang.license.model.dto.TerminalDevieUnBindDTO;
import iot.sixiang.license.service.DeviceService;
import iot.sixiang.license.service.PmsUseService;
import iot.sixiang.license.service.TerminalDeviceService;
......@@ -17,7 +21,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Comparator;
import java.util.List;
@Slf4j
......@@ -69,7 +72,7 @@ public class TerminalDeviceServiceImpl implements TerminalDeviceService {
return BaseResult.validate_failed();
}
if ("0".equals(reportErrorMsgDTO.getErrorCode())) {
pmsUseService.success(reportErrorMsgDTO.getId());
pmsUseService.success(reportErrorMsgDTO);
} else if ("-1".equals(reportErrorMsgDTO.getErrorCode())) {
pmsUseService.deletePmsUseLogById(id);
} else {
......
......@@ -6,6 +6,7 @@ import iot.sixiang.license.util.CommonUtil;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.io.File;
/**
* Title: LibHelper
......@@ -21,7 +22,7 @@ public class LibHelper {
@PostConstruct
public void init() {
LibPathUtil.libDir = CommonUtil.getServerParentDirectory();
LibPathUtil.libDir = CommonUtil.getServerParentDirectory() + File.separator + "/libs";
safety = new Safety();
}
......
......@@ -14,7 +14,12 @@ import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
......@@ -264,7 +269,7 @@ public class CommonUtil {
}
public static String getServerParentDirectory() {
return new File(new ApplicationHome(Constant.class).getSource().getParentFile().getPath()).getParent() + File.separator + "lib";
return new File(new ApplicationHome(Constant.class).getSource().getParentFile().getPath()) + File.separator + "file";
}
/**
......@@ -301,7 +306,7 @@ public class CommonUtil {
return myName;
}
//身份证前三后四脱敏
// 身份证前三后四脱敏
public static String idCardEncrypt(String idcard) {
if (idcard == null || idcard.length() == 0 || idcard.contains("*")) {
return idcard;
......@@ -386,4 +391,21 @@ public class CommonUtil {
}
).collect(Collectors.toList());
}
/**
* UNICODE转字符串
*
* @param unicode
* @return
*/
public static String unicodeToStr(String unicode) {
StringBuilder sb = new StringBuilder();
String[] hex = unicode.split("\\\\u");
for (int i = 1; i < hex.length; i++) {
int index = Integer.parseInt(hex[i], 16);
sb.append((char) index);
}
return sb.toString();
}
}
......@@ -77,9 +77,9 @@ ESAPI.Validator=org.owasp.esapi.reference.DefaultValidator
# ESAPI Authenticator
#
Authenticator.AllowedLoginAttempts=3
Authenticator.MaxOldPasswordHashes=ENC(F0TJ9iT6D4VW8xVjZf9Nqw==)
Authenticator.MaxOldPasswordHashes=13
Authenticator.UsernameParameterName=username
Authenticator.PasswordParameterName=ENC(F0TJ9iT6D4VW8xVjZf9Nqw==)
Authenticator.PasswordParameterName=password
# RememberTokenDuration (in days)
Authenticator.RememberTokenDuration=14
# Session Timeouts (in minutes)
......
......@@ -2,13 +2,13 @@ server:
port: 8868
logging:
level:
root: debug
root: info
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/iot_license?serverTimezone=GMT%2B8
username: root
password: ENC(F0TJ9iT6D4VW8xVjZif9Nqw==)
url: jdbc:mysql://rm-wz9w0x7a26q11av687o.mysql.rds.aliyuncs.com:3306/iot_license?serverTimezone=GMT%2B8
username: dada
password: Acc2019123
mybatis-plus:
mapper-locations: classpath:/mapper/**.xml
type-aliases-package: iot.sixiang.license.entity
......@@ -16,4 +16,8 @@ knife4j:
enable: true
other:
sm4-key: sixiang890123456
\ No newline at end of file
sm4-key: sixiang890123456
jasypt:
encryptor:
password: acc
\ No newline at end of file
......@@ -10,7 +10,7 @@ spring:
host: smtp.mxhichina.com
port: 465
username: dev_team@huahuico.com
password: ENC(eUd8aq15PjmiIF1GBeRwkJJvGZKaAYKu)
password: Jas@7777777
# 需要配置成管理员邮箱
to: MAllk33@163.com
default-encoding: UTF-8
......
package iot.sixiang.license;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
/**
* Created by M=54G
* Date 9/14/22 3:08 PM
* Description
*/
@SpringBootTest
@ActiveProfiles({"test-acc"})
@Slf4j
public class BaseTest {
protected void log(Object object) {
log.info(JSON.toJSONString(object));
}
}
\ No newline at end of file
package iot.sixiang.license.service;
import iot.sixiang.license.BaseTest;
import iot.sixiang.license.model.dto.ReportErrorMsgDTO;
import org.junit.jupiter.api.Test;
import javax.annotation.Resource;
......@@ -21,6 +22,8 @@ public class PmsUseServiceTest extends BaseTest {
@Test
void updateLog() {
pmsUseService.success(1);
ReportErrorMsgDTO reportErrorMsgDTO = new ReportErrorMsgDTO();
reportErrorMsgDTO.setId(1);
pmsUseService.success(reportErrorMsgDTO);
}
}
\ No newline at end of file
package iot.sixiang.license.util;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
/**
* Title: HmacShaUtils
* Description:
*
* @author YFW
* @version V1.0
* @date 2022-03-14
*/
public class HmacShaUtils {
private static final String HMAC_ALGORITHM = "hmacsha1";
private static final String secretKey = "90d2fca50ea8ed5472c5776c9fc53699";
/**
* 使用HMAC_ALGORITHM加密。
*
* @param content,明文。
* @param secret,密钥。
* @return 密文。
*/
public static String encrypt(String content, String secret) {
if (PubUtils.isNull(secret)) secret = secretKey;
try {
byte[] text = content.getBytes(StandardCharsets.UTF_8);
byte[] key = secret.getBytes(StandardCharsets.UTF_8);
SecretKeySpec secretKey = new SecretKeySpec(key, HMAC_ALGORITHM);
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey);
return byte2hex(mac.doFinal(text));
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 二进制转十六进制字符串。
*
* @param b,二进制数组。
* @return 十六进制字符串。
*/
public static String byte2hex(byte[] b) {
StringBuffer sb = new StringBuffer();
for (int n = 0; b != null && n < b.length; n++) {
String stmp = Integer.toHexString(b[n] & 0XFF);
if (stmp.length() == 1) {
sb.append('0');
}
sb.append(stmp);
}
return sb.toString().toUpperCase();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment