parent
aed801d6fd
commit
981482d707
|
@ -80,7 +80,8 @@ services:
|
||||||
ldap_server:
|
ldap_server:
|
||||||
container_name: openldap
|
container_name: openldap
|
||||||
build:
|
build:
|
||||||
context: ./emqx_ldap
|
context: ../..
|
||||||
|
dockerfile: .ci/apps_tests/openldap/Dockerfile
|
||||||
args:
|
args:
|
||||||
LDAP_TAG: ${LDAP_TAG}
|
LDAP_TAG: ${LDAP_TAG}
|
||||||
image: emqx-ldap:1.0
|
image: emqx-ldap:1.0
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDUTCCAjmgAwIBAgIJAPPYCjTmxdt/MA0GCSqGSIb3DQEBCwUAMD8xCzAJBgNV
|
|
||||||
BAYTAkNOMREwDwYDVQQIDAhoYW5nemhvdTEMMAoGA1UECgwDRU1RMQ8wDQYDVQQD
|
|
||||||
DAZSb290Q0EwHhcNMjAwNTA4MDgwNjUyWhcNMzAwNTA2MDgwNjUyWjA/MQswCQYD
|
|
||||||
VQQGEwJDTjERMA8GA1UECAwIaGFuZ3pob3UxDDAKBgNVBAoMA0VNUTEPMA0GA1UE
|
|
||||||
AwwGUm9vdENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzcgVLex1
|
|
||||||
EZ9ON64EX8v+wcSjzOZpiEOsAOuSXOEN3wb8FKUxCdsGrsJYB7a5VM/Jot25Mod2
|
|
||||||
juS3OBMg6r85k2TWjdxUoUs+HiUB/pP/ARaaW6VntpAEokpij/przWMPgJnBF3Ur
|
|
||||||
MjtbLayH9hGmpQrI5c2vmHQ2reRZnSFbY+2b8SXZ+3lZZgz9+BaQYWdQWfaUWEHZ
|
|
||||||
uDaNiViVO0OT8DRjCuiDp3yYDj3iLWbTA/gDL6Tf5XuHuEwcOQUrd+h0hyIphO8D
|
|
||||||
tsrsHZ14j4AWYLk1CPA6pq1HIUvEl2rANx2lVUNv+nt64K/Mr3RnVQd9s8bK+TXQ
|
|
||||||
KGHd2Lv/PALYuwIDAQABo1AwTjAdBgNVHQ4EFgQUGBmW+iDzxctWAWxmhgdlE8Pj
|
|
||||||
EbQwHwYDVR0jBBgwFoAUGBmW+iDzxctWAWxmhgdlE8PjEbQwDAYDVR0TBAUwAwEB
|
|
||||||
/zANBgkqhkiG9w0BAQsFAAOCAQEAGbhRUjpIred4cFAFJ7bbYD9hKu/yzWPWkMRa
|
|
||||||
ErlCKHmuYsYk+5d16JQhJaFy6MGXfLgo3KV2itl0d+OWNH0U9ULXcglTxy6+njo5
|
|
||||||
CFqdUBPwN1jxhzo9yteDMKF4+AHIxbvCAJa17qcwUKR5MKNvv09C6pvQDJLzid7y
|
|
||||||
E2dkgSuggik3oa0427KvctFf8uhOV94RvEDyqvT5+pgNYZ2Yfga9pD/jjpoHEUlo
|
|
||||||
88IGU8/wJCx3Ds2yc8+oBg/ynxG8f/HmCC1ET6EHHoe2jlo8FpU/SgGtghS1YL30
|
|
||||||
IWxNsPrUP+XsZpBJy/mvOhE5QXo6Y35zDqqj8tI7AGmAWu22jg==
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1,19 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDEzCCAfugAwIBAgIBAjANBgkqhkiG9w0BAQsFADA/MQswCQYDVQQGEwJDTjER
|
|
||||||
MA8GA1UECAwIaGFuZ3pob3UxDDAKBgNVBAoMA0VNUTEPMA0GA1UEAwwGUm9vdENB
|
|
||||||
MB4XDTIwMDUwODA4MDcwNVoXDTMwMDUwNjA4MDcwNVowPzELMAkGA1UEBhMCQ04x
|
|
||||||
ETAPBgNVBAgMCGhhbmd6aG91MQwwCgYDVQQKDANFTVExDzANBgNVBAMMBlNlcnZl
|
|
||||||
cjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNeWT3pE+QFfiRJzKmn
|
|
||||||
AMUrWo3K2j/Tm3+Xnl6WLz67/0rcYrJbbKvS3uyRP/stXyXEKw9CepyQ1ViBVFkW
|
|
||||||
Aoy8qQEOWFDsZc/5UzhXUnb6LXr3qTkFEjNmhj+7uzv/lbBxlUG1NlYzSeOB6/RT
|
|
||||||
8zH/lhOeKhLnWYPXdXKsa1FL6ij4X8DeDO1kY7fvAGmBn/THh1uTpDizM4YmeI+7
|
|
||||||
4dmayA5xXvARte5h4Vu5SIze7iC057N+vymToMk2Jgk+ZZFpyXrnq+yo6RaD3ANc
|
|
||||||
lrc4FbeUQZ5a5s5Sxgs9a0Y3WMG+7c5VnVXcbjBRz/aq2NtOnQQjikKKQA8GF080
|
|
||||||
BQkCAwEAAaMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwDQYJKoZIhvcNAQEL
|
|
||||||
BQADggEBAJefnMZpaRDHQSNUIEL3iwGXE9c6PmIsQVE2ustr+CakBp3TZ4l0enLt
|
|
||||||
iGMfEVFju69cO4oyokWv+hl5eCMkHBf14Kv51vj448jowYnF1zmzn7SEzm5Uzlsa
|
|
||||||
sqjtAprnLyof69WtLU1j5rYWBuFX86yOTwRAFNjm9fvhAcrEONBsQtqipBWkMROp
|
|
||||||
iUYMkRqbKcQMdwxov+lHBYKq9zbWRoqLROAn54SRqgQk6c15JdEfgOOjShbsOkIH
|
|
||||||
UhqcwRkQic7n1zwHVGVDgNIZVgmJ2IdIWBlPEC7oLrRrBD/X1iEEXtKab6p5o22n
|
|
||||||
KB5mN+iQaE+Oe2cpGKZJiJRdM+IqDDQ=
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1,19 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDEzCCAfugAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MQswCQYDVQQGEwJDTjER
|
|
||||||
MA8GA1UECAwIaGFuZ3pob3UxDDAKBgNVBAoMA0VNUTEPMA0GA1UEAwwGUm9vdENB
|
|
||||||
MB4XDTIwMDUwODA4MDY1N1oXDTMwMDUwNjA4MDY1N1owPzELMAkGA1UEBhMCQ04x
|
|
||||||
ETAPBgNVBAgMCGhhbmd6aG91MQwwCgYDVQQKDANFTVExDzANBgNVBAMMBkNsaWVu
|
|
||||||
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMy4hoksKcZBDbY680u6
|
|
||||||
TS25U51nuB1FBcGMlF9B/t057wPOlxF/OcmbxY5MwepS41JDGPgulE1V7fpsXkiW
|
|
||||||
1LUimYV/tsqBfymIe0mlY7oORahKji7zKQ2UBIVFhdlvQxunlIDnw6F9popUgyHt
|
|
||||||
dMhtlgZK8oqRwHxO5dbfoukYd6J/r+etS5q26sgVkf3C6dt0Td7B25H9qW+f7oLV
|
|
||||||
PbcHYCa+i73u9670nrpXsC+Qc7Mygwa2Kq/jwU+ftyLQnOeW07DuzOwsziC/fQZa
|
|
||||||
nbxR+8U9FNftgRcC3uP/JMKYUqsiRAuaDokARZxVTV5hUElfpO6z6/NItSDvvh3i
|
|
||||||
eikCAwEAAaMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwDQYJKoZIhvcNAQEL
|
|
||||||
BQADggEBABchYxKo0YMma7g1qDswJXsR5s56Czx/I+B41YcpMBMTrRqpUC0nHtLk
|
|
||||||
M7/tZp592u/tT8gzEnQjZLKBAhFeZaR3aaKyknLqwiPqJIgg0pgsBGITrAK3Pv4z
|
|
||||||
5/YvAJJKgTe5UdeTz6U4lvNEux/4juZ4pmqH4qSFJTOzQS7LmgSmNIdd072rwXBd
|
|
||||||
UzcSHzsJgEMb88u/LDLjj1pQ7AtZ4Tta8JZTvcgBFmjB0QUi6fgkHY6oGat/W4kR
|
|
||||||
jSRUBlMUbM/drr2PVzRc2dwbFIl3X+ZE6n5Sl3ZwRAC/s92JU6CPMRW02muVu6xl
|
|
||||||
goraNgPISnrbpR6KjxLZkVembXzjNNc=
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1,27 +0,0 @@
|
||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEpAIBAAKCAQEAzLiGiSwpxkENtjrzS7pNLblTnWe4HUUFwYyUX0H+3TnvA86X
|
|
||||||
EX85yZvFjkzB6lLjUkMY+C6UTVXt+mxeSJbUtSKZhX+2yoF/KYh7SaVjug5FqEqO
|
|
||||||
LvMpDZQEhUWF2W9DG6eUgOfDoX2milSDIe10yG2WBkryipHAfE7l1t+i6Rh3on+v
|
|
||||||
561LmrbqyBWR/cLp23RN3sHbkf2pb5/ugtU9twdgJr6Lve73rvSeulewL5BzszKD
|
|
||||||
BrYqr+PBT5+3ItCc55bTsO7M7CzOIL99BlqdvFH7xT0U1+2BFwLe4/8kwphSqyJE
|
|
||||||
C5oOiQBFnFVNXmFQSV+k7rPr80i1IO++HeJ6KQIDAQABAoIBAGWgvPjfuaU3qizq
|
|
||||||
uti/FY07USz0zkuJdkANH6LiSjlchzDmn8wJ0pApCjuIE0PV/g9aS8z4opp5q/gD
|
|
||||||
UBLM/a8mC/xf2EhTXOMrY7i9p/I3H5FZ4ZehEqIw9sWKK9YzC6dw26HabB2BGOnW
|
|
||||||
5nozPSQ6cp2RGzJ7BIkxSZwPzPnVTgy3OAuPOiJytvK+hGLhsNaT+Y9bNDvplVT2
|
|
||||||
ZwYTV8GlHZC+4b2wNROILm0O86v96O+Qd8nn3fXjGHbMsAnONBq10bZS16L4fvkH
|
|
||||||
5G+W/1PeSXmtZFppdRRDxIW+DWcXK0D48WRliuxcV4eOOxI+a9N2ZJZZiNLQZGwg
|
|
||||||
w3A8+mECgYEA8HuJFrlRvdoBe2U/EwUtG74dcyy30L4yEBnN5QscXmEEikhaQCfX
|
|
||||||
Wm6EieMcIB/5I5TQmSw0cmBMeZjSXYoFdoI16/X6yMMuATdxpvhOZGdUGXxhAH+x
|
|
||||||
xoTUavWZnEqW3fkUU71kT5E2f2i+0zoatFESXHeslJyz85aAYpP92H0CgYEA2e5A
|
|
||||||
Yozt5eaA1Gyhd8SeptkEU4xPirNUnVQHStpMWUb1kzTNXrPmNWccQ7JpfpG6DcYl
|
|
||||||
zUF6p6mlzY+zkMiyPQjwEJlhiHM2NlL1QS7td0R8ewgsFoyn8WsBI4RejWrEG9td
|
|
||||||
EDniuIw+pBFkcWthnTLHwECHdzgquToyTMjrBB0CgYEA28tdGbrZXhcyAZEhHAZA
|
|
||||||
Gzog+pKlkpEzeonLKIuGKzCrEKRecIK5jrqyQsCjhS0T7ZRnL4g6i0s+umiV5M5w
|
|
||||||
fcc292pEA1h45L3DD6OlKplSQVTv55/OYS4oY3YEJtf5mfm8vWi9lQeY8sxOlQpn
|
|
||||||
O+VZTdBHmTC8PGeTAgZXHZUCgYA6Tyv88lYowB7SN2qQgBQu8jvdGtqhcs/99GCr
|
|
||||||
H3N0I69LPsKAR0QeH8OJPXBKhDUywESXAaEOwS5yrLNP1tMRz5Vj65YUCzeDG3kx
|
|
||||||
gpvY4IMp7ArX0bSRvJ6mYSFnVxy3k174G3TVCfksrtagHioVBGQ7xUg5ltafjrms
|
|
||||||
n8l55QKBgQDVzU8tQvBVqY8/1lnw11Vj4fkE/drZHJ5UkdC1eenOfSWhlSLfUJ8j
|
|
||||||
ds7vEWpRPPoVuPZYeR1y78cyxKe1GBx6Wa2lF5c7xjmiu0xbRnrxYeLolce9/ntp
|
|
||||||
asClqpnHT8/VJYTD7Kqj0fouTTZf0zkig/y+2XERppd8k+pSKjUCPQ==
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
|
@ -1,27 +0,0 @@
|
||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEowIBAAKCAQEAs15ZPekT5AV+JEnMqacAxStajcraP9Obf5eeXpYvPrv/Stxi
|
|
||||||
sltsq9Le7JE/+y1fJcQrD0J6nJDVWIFUWRYCjLypAQ5YUOxlz/lTOFdSdvotevep
|
|
||||||
OQUSM2aGP7u7O/+VsHGVQbU2VjNJ44Hr9FPzMf+WE54qEudZg9d1cqxrUUvqKPhf
|
|
||||||
wN4M7WRjt+8AaYGf9MeHW5OkOLMzhiZ4j7vh2ZrIDnFe8BG17mHhW7lIjN7uILTn
|
|
||||||
s36/KZOgyTYmCT5lkWnJeuer7KjpFoPcA1yWtzgVt5RBnlrmzlLGCz1rRjdYwb7t
|
|
||||||
zlWdVdxuMFHP9qrY206dBCOKQopADwYXTzQFCQIDAQABAoIBAQCuvCbr7Pd3lvI/
|
|
||||||
n7VFQG+7pHRe1VKwAxDkx2t8cYos7y/QWcm8Ptwqtw58HzPZGWYrgGMCRpzzkRSF
|
|
||||||
V9g3wP1S5Scu5C6dBu5YIGc157tqNGXB+SpdZddJQ4Nc6yGHXYERllT04ffBGc3N
|
|
||||||
WG/oYS/1cSteiSIrsDy/91FvGRCi7FPxH3wIgHssY/tw69s1Cfvaq5lr2NTFzxIG
|
|
||||||
xCvpJKEdSfVfS9I7LYiymVjst3IOR/w76/ZFY9cRa8ZtmQSWWsm0TUpRC1jdcbkm
|
|
||||||
ZoJptYWlP+gSwx/fpMYftrkJFGOJhHJHQhwxT5X/ajAISeqjjwkWSEJLwnHQd11C
|
|
||||||
Zy2+29lBAoGBANlEAIK4VxCqyPXNKfoOOi5dS64NfvyH4A1v2+KaHWc7lqaqPN49
|
|
||||||
ezfN2n3X+KWx4cviDD914Yc2JQ1vVJjSaHci7yivocDo2OfZDmjBqzaMp/y+rX1R
|
|
||||||
/f3MmiTqMa468rjaxI9RRZu7vDgpTR+za1+OBCgMzjvAng8dJuN/5gjlAoGBANNY
|
|
||||||
uYPKtearBmkqdrSV7eTUe49Nhr0XotLaVBH37TCW0Xv9wjO2xmbm5Ga/DCtPIsBb
|
|
||||||
yPeYwX9FjoasuadUD7hRvbFu6dBa0HGLmkXRJZTcD7MEX2Lhu4BuC72yDLLFd0r+
|
|
||||||
Ep9WP7F5iJyagYqIZtz+4uf7gBvUDdmvXz3sGr1VAoGAdXTD6eeKeiI6PlhKBztF
|
|
||||||
zOb3EQOO0SsLv3fnodu7ZaHbUgLaoTMPuB17r2jgrYM7FKQCBxTNdfGZmmfDjlLB
|
|
||||||
0xZ5wL8ibU30ZXL8zTlWPElST9sto4B+FYVVF/vcG9sWeUUb2ncPcJ/Po3UAktDG
|
|
||||||
jYQTTyuNGtSJHpad/YOZctkCgYBtWRaC7bq3of0rJGFOhdQT9SwItN/lrfj8hyHA
|
|
||||||
OjpqTV4NfPmhsAtu6j96OZaeQc+FHvgXwt06cE6Rt4RG4uNPRluTFgO7XYFDfitP
|
|
||||||
vCppnoIw6S5BBvHwPP+uIhUX2bsi/dm8vu8tb+gSvo4PkwtFhEr6I9HglBKmcmog
|
|
||||||
q6waEQKBgHyecFBeM6Ls11Cd64vborwJPAuxIW7HBAFj/BS99oeG4TjBx4Sz2dFd
|
|
||||||
rzUibJt4ndnHIvCN8JQkjNG14i9hJln+H3mRss8fbZ9vQdqG+2vOWADYSzzsNI55
|
|
||||||
RFY7JjluKcVkp/zCDeUxTU3O6sS+v6/3VE11Cob6OYQx3lN5wrZ3
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
|
@ -1,135 +0,0 @@
|
||||||
## create emqx.io
|
|
||||||
|
|
||||||
dn:dc=emqx,dc=io
|
|
||||||
objectclass: top
|
|
||||||
objectclass: dcobject
|
|
||||||
objectclass: organization
|
|
||||||
dc:emqx
|
|
||||||
o:emqx,Inc.
|
|
||||||
|
|
||||||
# create testdevice.emqx.io
|
|
||||||
dn:ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: top
|
|
||||||
objectclass:organizationalUnit
|
|
||||||
ou:testdevice
|
|
||||||
|
|
||||||
# create user admin
|
|
||||||
dn:uid=admin,ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: top
|
|
||||||
objectClass: simpleSecurityObject
|
|
||||||
objectClass: account
|
|
||||||
userPassword:: e1NIQX1XNnBoNU1tNVB6OEdnaVVMYlBnekczN21qOWc9
|
|
||||||
uid: admin
|
|
||||||
|
|
||||||
## create user=mqttuser0001,
|
|
||||||
# password=mqttuser0001,
|
|
||||||
# passhash={SHA}mlb3fat40MKBTXUVZwCKmL73R/0=
|
|
||||||
# base64passhash=e1NIQX1tbGIzZmF0NDBNS0JUWFVWWndDS21MNzNSLzA9
|
|
||||||
dn:uid=mqttuser0001,ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: top
|
|
||||||
objectClass: mqttUser
|
|
||||||
objectClass: mqttDevice
|
|
||||||
objectClass: mqttSecurity
|
|
||||||
uid: mqttuser0001
|
|
||||||
isEnabled: TRUE
|
|
||||||
mqttAccountName: user1
|
|
||||||
mqttPublishTopic: mqttuser0001/pub/1
|
|
||||||
mqttPublishTopic: mqttuser0001/pub/+
|
|
||||||
mqttPublishTopic: mqttuser0001/pub/#
|
|
||||||
mqttSubscriptionTopic: mqttuser0001/sub/1
|
|
||||||
mqttSubscriptionTopic: mqttuser0001/sub/+
|
|
||||||
mqttSubscriptionTopic: mqttuser0001/sub/#
|
|
||||||
mqttPubSubTopic: mqttuser0001/pubsub/1
|
|
||||||
mqttPubSubTopic: mqttuser0001/pubsub/+
|
|
||||||
mqttPubSubTopic: mqttuser0001/pubsub/#
|
|
||||||
userPassword:: e1NIQX1tbGIzZmF0NDBNS0JUWFVWWndDS21MNzNSLzA9
|
|
||||||
|
|
||||||
## create user=mqttuser0002
|
|
||||||
# password=mqttuser0002,
|
|
||||||
# passhash={SSHA}n9XdtoG4Q/TQ3TQF4Y+khJbMBH4qXj4M
|
|
||||||
# base64passhash=e1NTSEF9bjlYZHRvRzRRL1RRM1RRRjRZK2toSmJNQkg0cVhqNE0=
|
|
||||||
dn:uid=mqttuser0002,ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: top
|
|
||||||
objectClass: mqttUser
|
|
||||||
objectClass: mqttDevice
|
|
||||||
objectClass: mqttSecurity
|
|
||||||
uid: mqttuser0002
|
|
||||||
isEnabled: TRUE
|
|
||||||
mqttAccountName: user2
|
|
||||||
mqttPublishTopic: mqttuser0002/pub/1
|
|
||||||
mqttPublishTopic: mqttuser0002/pub/+
|
|
||||||
mqttPublishTopic: mqttuser0002/pub/#
|
|
||||||
mqttSubscriptionTopic: mqttuser0002/sub/1
|
|
||||||
mqttSubscriptionTopic: mqttuser0002/sub/+
|
|
||||||
mqttSubscriptionTopic: mqttuser0002/sub/#
|
|
||||||
mqttPubSubTopic: mqttuser0002/pubsub/1
|
|
||||||
mqttPubSubTopic: mqttuser0002/pubsub/+
|
|
||||||
mqttPubSubTopic: mqttuser0002/pubsub/#
|
|
||||||
userPassword:: e1NTSEF9bjlYZHRvRzRRL1RRM1RRRjRZK2toSmJNQkg0cVhqNE0=
|
|
||||||
|
|
||||||
## create user mqttuser0003
|
|
||||||
# password=mqttuser0003,
|
|
||||||
# passhash={MD5}ybsPGoaK3nDyiQvveiCOIw==
|
|
||||||
# base64passhash=e01ENX15YnNQR29hSzNuRHlpUXZ2ZWlDT0l3PT0=
|
|
||||||
dn:uid=mqttuser0003,ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: top
|
|
||||||
objectClass: mqttUser
|
|
||||||
objectClass: mqttDevice
|
|
||||||
objectClass: mqttSecurity
|
|
||||||
uid: mqttuser0003
|
|
||||||
isEnabled: TRUE
|
|
||||||
mqttPublishTopic: mqttuser0003/pub/1
|
|
||||||
mqttPublishTopic: mqttuser0003/pub/+
|
|
||||||
mqttPublishTopic: mqttuser0003/pub/#
|
|
||||||
mqttSubscriptionTopic: mqttuser0003/sub/1
|
|
||||||
mqttSubscriptionTopic: mqttuser0003/sub/+
|
|
||||||
mqttSubscriptionTopic: mqttuser0003/sub/#
|
|
||||||
mqttPubSubTopic: mqttuser0003/pubsub/1
|
|
||||||
mqttPubSubTopic: mqttuser0003/pubsub/+
|
|
||||||
mqttPubSubTopic: mqttuser0003/pubsub/#
|
|
||||||
userPassword:: e01ENX15YnNQR29hSzNuRHlpUXZ2ZWlDT0l3PT0=
|
|
||||||
|
|
||||||
## create user mqttuser0004
|
|
||||||
# password=mqttuser0004,
|
|
||||||
# passhash={MD5}2Br6pPDSEDIEvUlu9+s+MA==
|
|
||||||
# base64passhash=e01ENX0yQnI2cFBEU0VESUV2VWx1OStzK01BPT0=
|
|
||||||
dn:uid=mqttuser0004,ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: top
|
|
||||||
objectClass: mqttUser
|
|
||||||
objectClass: mqttDevice
|
|
||||||
objectClass: mqttSecurity
|
|
||||||
uid: mqttuser0004
|
|
||||||
isEnabled: TRUE
|
|
||||||
mqttPublishTopic: mqttuser0004/pub/1
|
|
||||||
mqttPublishTopic: mqttuser0004/pub/+
|
|
||||||
mqttPublishTopic: mqttuser0004/pub/#
|
|
||||||
mqttSubscriptionTopic: mqttuser0004/sub/1
|
|
||||||
mqttSubscriptionTopic: mqttuser0004/sub/+
|
|
||||||
mqttSubscriptionTopic: mqttuser0004/sub/#
|
|
||||||
mqttPubSubTopic: mqttuser0004/pubsub/1
|
|
||||||
mqttPubSubTopic: mqttuser0004/pubsub/+
|
|
||||||
mqttPubSubTopic: mqttuser0004/pubsub/#
|
|
||||||
userPassword: {MD5}2Br6pPDSEDIEvUlu9+s+MA==
|
|
||||||
|
|
||||||
## create user mqttuser0005
|
|
||||||
# password=mqttuser0005,
|
|
||||||
# passhash={SHA}jKnxeEDGR14kE8AR7yuVFOelhz4=
|
|
||||||
# base64passhash=e1NIQX1qS254ZUVER1IxNGtFOEFSN3l1VkZPZWxoejQ9
|
|
||||||
objectClass: top
|
|
||||||
dn:uid=mqttuser0005,ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: mqttUser
|
|
||||||
objectClass: mqttDevice
|
|
||||||
objectClass: mqttSecurity
|
|
||||||
uid: mqttuser0005
|
|
||||||
isEnabled: TRUE
|
|
||||||
mqttPublishTopic: mqttuser0005/pub/1
|
|
||||||
mqttPublishTopic: mqttuser0005/pub/+
|
|
||||||
mqttPublishTopic: mqttuser0005/pub/#
|
|
||||||
mqttSubscriptionTopic: mqttuser0005/sub/1
|
|
||||||
mqttSubscriptionTopic: mqttuser0005/sub/+
|
|
||||||
mqttSubscriptionTopic: mqttuser0005/sub/#
|
|
||||||
mqttPubSubTopic: mqttuser0005/pubsub/1
|
|
||||||
mqttPubSubTopic: mqttuser0005/pubsub/+
|
|
||||||
mqttPubSubTopic: mqttuser0005/pubsub/#
|
|
||||||
userPassword: {SHA}jKnxeEDGR14kE8AR7yuVFOelhz4=
|
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
#
|
|
||||||
# Preliminary Apple OS X Native LDAP Schema
|
|
||||||
# This file is subject to change.
|
|
||||||
#
|
|
||||||
attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.1.3 NAME 'isEnabled'
|
|
||||||
EQUALITY booleanMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
|
|
||||||
SINGLE-VALUE
|
|
||||||
USAGE userApplications )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.1 NAME ( 'mqttPublishTopic' 'mpt' )
|
|
||||||
EQUALITY caseIgnoreMatch
|
|
||||||
SUBSTR caseIgnoreSubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
|
||||||
USAGE userApplications )
|
|
||||||
attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.2 NAME ( 'mqttSubscriptionTopic' 'mst' )
|
|
||||||
EQUALITY caseIgnoreMatch
|
|
||||||
SUBSTR caseIgnoreSubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
|
||||||
USAGE userApplications )
|
|
||||||
attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.3 NAME ( 'mqttPubSubTopic' 'mpst' )
|
|
||||||
EQUALITY caseIgnoreMatch
|
|
||||||
SUBSTR caseIgnoreSubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
|
||||||
USAGE userApplications )
|
|
||||||
attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.4 NAME ( 'mqttAccountName' 'man' )
|
|
||||||
EQUALITY caseIgnoreMatch
|
|
||||||
SUBSTR caseIgnoreSubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
|
||||||
USAGE userApplications )
|
|
||||||
|
|
||||||
|
|
||||||
objectclass ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4 NAME 'mqttUser'
|
|
||||||
AUXILIARY
|
|
||||||
MAY ( mqttPublishTopic $ mqttSubscriptionTopic $ mqttPubSubTopic $ mqttAccountName) )
|
|
||||||
|
|
||||||
objectclass ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.2 NAME 'mqttDevice'
|
|
||||||
SUP top
|
|
||||||
STRUCTURAL
|
|
||||||
MUST ( uid )
|
|
||||||
MAY ( isEnabled ) )
|
|
||||||
|
|
||||||
objectclass ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.3 NAME 'mqttSecurity'
|
|
||||||
SUP top
|
|
||||||
AUXILIARY
|
|
||||||
MAY ( userPassword $ userPKCS12 $ pwdAttribute $ pwdLockout ) )
|
|
|
@ -9,10 +9,10 @@ RUN wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-${LDAP_TA
|
||||||
&& ./configure && make depend && make && make install \
|
&& ./configure && make depend && make && make install \
|
||||||
&& cd .. && rm -rf openldap-${LDAP_TAG}
|
&& cd .. && rm -rf openldap-${LDAP_TAG}
|
||||||
|
|
||||||
COPY ./slapd.conf /usr/local/etc/openldap/slapd.conf
|
COPY .ci/apps_tests/openldap/slapd.conf /usr/local/etc/openldap/slapd.conf
|
||||||
COPY ./schema/emqx.io.ldif /usr/local/etc/openldap/schema/emqx.io.ldif
|
COPY apps/emqx_auth_ldap/emqx.io.ldif /usr/local/etc/openldap/schema/emqx.io.ldif
|
||||||
COPY ./schema/emqx.schema /usr/local/etc/openldap/schema/emqx.schema
|
COPY apps/emqx_auth_ldap/emqx.schema /usr/local/etc/openldap/schema/emqx.schema
|
||||||
COPY ./certs/*.pem /usr/local/etc/openldap/
|
COPY apps/emqx_auth_ldap/test/certs/*.pem /usr/local/etc/openldap/
|
||||||
|
|
||||||
RUN mkdir -p /usr/local/etc/openldap/data \
|
RUN mkdir -p /usr/local/etc/openldap/data \
|
||||||
&& slapadd -l /usr/local/etc/openldap/schema/emqx.io.ldif -f /usr/local/etc/openldap/slapd.conf
|
&& slapadd -l /usr/local/etc/openldap/schema/emqx.io.ldif -f /usr/local/etc/openldap/slapd.conf
|
|
@ -16,7 +16,8 @@ services:
|
||||||
ldap_server:
|
ldap_server:
|
||||||
container_name: ldap
|
container_name: ldap
|
||||||
build:
|
build:
|
||||||
context: ./openldap
|
context: ../..
|
||||||
|
dockerfile: .ci/compatibility_tests/openldap/Dockerfile
|
||||||
args:
|
args:
|
||||||
LDAP_TAG: ${LDAP_TAG}
|
LDAP_TAG: ${LDAP_TAG}
|
||||||
image: openldap
|
image: openldap
|
||||||
|
|
|
@ -15,19 +15,31 @@ services:
|
||||||
|
|
||||||
pgsql_server:
|
pgsql_server:
|
||||||
container_name: pgsql
|
container_name: pgsql
|
||||||
image: postgres:${PGSQL_TAG}
|
build:
|
||||||
|
context: ../..
|
||||||
|
dockerfile: .ci/compatibility_tests/pgsql/Dockerfile
|
||||||
|
args:
|
||||||
|
POSTGRES_USER: postgres
|
||||||
|
BUILD_FROM: postgres:${PGSQL_TAG}
|
||||||
|
image: emqx_pgsql:${PGSQL_TAG}
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_PASSWORD: public
|
POSTGRES_DB: postgres
|
||||||
POSTGRES_USER: root
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_DB: mqtt
|
POSTGRES_PASSWORD: postgres
|
||||||
volumes:
|
ports:
|
||||||
- ../../apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/pg.conf:/etc/postgresql/postgresql.conf
|
- "5432:5432"
|
||||||
- ../../apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/server-cert.pem:/etc/postgresql/server-cert.pem
|
|
||||||
- ../../apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/server-key.pem:/etc/postgresql/server-key.pem
|
|
||||||
command:
|
command:
|
||||||
- -c
|
- -c
|
||||||
- config_file=/etc/postgresql/postgresql.conf
|
- ssl=on
|
||||||
|
- -c
|
||||||
|
- ssl_cert_file=/var/lib/postgresql/server.crt
|
||||||
|
- -c
|
||||||
|
- ssl_key_file=/var/lib/postgresql/server.key
|
||||||
|
- -c
|
||||||
|
- ssl_ca_file=/var/lib/postgresql/root.crt
|
||||||
|
- -c
|
||||||
|
- hba_file=/var/lib/postgresql/pg_hba.conf
|
||||||
networks:
|
networks:
|
||||||
- emqx_bridge
|
- emqx_bridge
|
||||||
|
|
||||||
|
|
|
@ -9,10 +9,10 @@ RUN wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-${LDAP_TA
|
||||||
&& ./configure && make depend && make && make install \
|
&& ./configure && make depend && make && make install \
|
||||||
&& cd .. && rm -rf openldap-${LDAP_TAG}
|
&& cd .. && rm -rf openldap-${LDAP_TAG}
|
||||||
|
|
||||||
COPY ./slapd.conf /usr/local/etc/openldap/slapd.conf
|
COPY .ci/compatibility_tests/openldap/slapd.conf /usr/local/etc/openldap/slapd.conf
|
||||||
COPY ./schema/emqx.io.ldif /usr/local/etc/openldap/schema/emqx.io.ldif
|
COPY apps/emqx_auth_ldap/emqx.io.ldif /usr/local/etc/openldap/schema/emqx.io.ldif
|
||||||
COPY ./schema/emqx.schema /usr/local/etc/openldap/schema/emqx.schema
|
COPY apps/emqx_auth_ldap/emqx.schema /usr/local/etc/openldap/schema/emqx.schema
|
||||||
COPY ./certs/*.pem /usr/local/etc/openldap/
|
COPY apps/emqx_auth_ldap/test/certs/*.pem /usr/local/etc/openldap/
|
||||||
|
|
||||||
RUN mkdir -p /usr/local/etc/openldap/data \
|
RUN mkdir -p /usr/local/etc/openldap/data \
|
||||||
&& slapadd -l /usr/local/etc/openldap/schema/emqx.io.ldif -f /usr/local/etc/openldap/slapd.conf
|
&& slapadd -l /usr/local/etc/openldap/schema/emqx.io.ldif -f /usr/local/etc/openldap/slapd.conf
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDUTCCAjmgAwIBAgIJAPPYCjTmxdt/MA0GCSqGSIb3DQEBCwUAMD8xCzAJBgNV
|
|
||||||
BAYTAkNOMREwDwYDVQQIDAhoYW5nemhvdTEMMAoGA1UECgwDRU1RMQ8wDQYDVQQD
|
|
||||||
DAZSb290Q0EwHhcNMjAwNTA4MDgwNjUyWhcNMzAwNTA2MDgwNjUyWjA/MQswCQYD
|
|
||||||
VQQGEwJDTjERMA8GA1UECAwIaGFuZ3pob3UxDDAKBgNVBAoMA0VNUTEPMA0GA1UE
|
|
||||||
AwwGUm9vdENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzcgVLex1
|
|
||||||
EZ9ON64EX8v+wcSjzOZpiEOsAOuSXOEN3wb8FKUxCdsGrsJYB7a5VM/Jot25Mod2
|
|
||||||
juS3OBMg6r85k2TWjdxUoUs+HiUB/pP/ARaaW6VntpAEokpij/przWMPgJnBF3Ur
|
|
||||||
MjtbLayH9hGmpQrI5c2vmHQ2reRZnSFbY+2b8SXZ+3lZZgz9+BaQYWdQWfaUWEHZ
|
|
||||||
uDaNiViVO0OT8DRjCuiDp3yYDj3iLWbTA/gDL6Tf5XuHuEwcOQUrd+h0hyIphO8D
|
|
||||||
tsrsHZ14j4AWYLk1CPA6pq1HIUvEl2rANx2lVUNv+nt64K/Mr3RnVQd9s8bK+TXQ
|
|
||||||
KGHd2Lv/PALYuwIDAQABo1AwTjAdBgNVHQ4EFgQUGBmW+iDzxctWAWxmhgdlE8Pj
|
|
||||||
EbQwHwYDVR0jBBgwFoAUGBmW+iDzxctWAWxmhgdlE8PjEbQwDAYDVR0TBAUwAwEB
|
|
||||||
/zANBgkqhkiG9w0BAQsFAAOCAQEAGbhRUjpIred4cFAFJ7bbYD9hKu/yzWPWkMRa
|
|
||||||
ErlCKHmuYsYk+5d16JQhJaFy6MGXfLgo3KV2itl0d+OWNH0U9ULXcglTxy6+njo5
|
|
||||||
CFqdUBPwN1jxhzo9yteDMKF4+AHIxbvCAJa17qcwUKR5MKNvv09C6pvQDJLzid7y
|
|
||||||
E2dkgSuggik3oa0427KvctFf8uhOV94RvEDyqvT5+pgNYZ2Yfga9pD/jjpoHEUlo
|
|
||||||
88IGU8/wJCx3Ds2yc8+oBg/ynxG8f/HmCC1ET6EHHoe2jlo8FpU/SgGtghS1YL30
|
|
||||||
IWxNsPrUP+XsZpBJy/mvOhE5QXo6Y35zDqqj8tI7AGmAWu22jg==
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1,19 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDEzCCAfugAwIBAgIBAjANBgkqhkiG9w0BAQsFADA/MQswCQYDVQQGEwJDTjER
|
|
||||||
MA8GA1UECAwIaGFuZ3pob3UxDDAKBgNVBAoMA0VNUTEPMA0GA1UEAwwGUm9vdENB
|
|
||||||
MB4XDTIwMDUwODA4MDcwNVoXDTMwMDUwNjA4MDcwNVowPzELMAkGA1UEBhMCQ04x
|
|
||||||
ETAPBgNVBAgMCGhhbmd6aG91MQwwCgYDVQQKDANFTVExDzANBgNVBAMMBlNlcnZl
|
|
||||||
cjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNeWT3pE+QFfiRJzKmn
|
|
||||||
AMUrWo3K2j/Tm3+Xnl6WLz67/0rcYrJbbKvS3uyRP/stXyXEKw9CepyQ1ViBVFkW
|
|
||||||
Aoy8qQEOWFDsZc/5UzhXUnb6LXr3qTkFEjNmhj+7uzv/lbBxlUG1NlYzSeOB6/RT
|
|
||||||
8zH/lhOeKhLnWYPXdXKsa1FL6ij4X8DeDO1kY7fvAGmBn/THh1uTpDizM4YmeI+7
|
|
||||||
4dmayA5xXvARte5h4Vu5SIze7iC057N+vymToMk2Jgk+ZZFpyXrnq+yo6RaD3ANc
|
|
||||||
lrc4FbeUQZ5a5s5Sxgs9a0Y3WMG+7c5VnVXcbjBRz/aq2NtOnQQjikKKQA8GF080
|
|
||||||
BQkCAwEAAaMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwDQYJKoZIhvcNAQEL
|
|
||||||
BQADggEBAJefnMZpaRDHQSNUIEL3iwGXE9c6PmIsQVE2ustr+CakBp3TZ4l0enLt
|
|
||||||
iGMfEVFju69cO4oyokWv+hl5eCMkHBf14Kv51vj448jowYnF1zmzn7SEzm5Uzlsa
|
|
||||||
sqjtAprnLyof69WtLU1j5rYWBuFX86yOTwRAFNjm9fvhAcrEONBsQtqipBWkMROp
|
|
||||||
iUYMkRqbKcQMdwxov+lHBYKq9zbWRoqLROAn54SRqgQk6c15JdEfgOOjShbsOkIH
|
|
||||||
UhqcwRkQic7n1zwHVGVDgNIZVgmJ2IdIWBlPEC7oLrRrBD/X1iEEXtKab6p5o22n
|
|
||||||
KB5mN+iQaE+Oe2cpGKZJiJRdM+IqDDQ=
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1,19 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDEzCCAfugAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MQswCQYDVQQGEwJDTjER
|
|
||||||
MA8GA1UECAwIaGFuZ3pob3UxDDAKBgNVBAoMA0VNUTEPMA0GA1UEAwwGUm9vdENB
|
|
||||||
MB4XDTIwMDUwODA4MDY1N1oXDTMwMDUwNjA4MDY1N1owPzELMAkGA1UEBhMCQ04x
|
|
||||||
ETAPBgNVBAgMCGhhbmd6aG91MQwwCgYDVQQKDANFTVExDzANBgNVBAMMBkNsaWVu
|
|
||||||
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMy4hoksKcZBDbY680u6
|
|
||||||
TS25U51nuB1FBcGMlF9B/t057wPOlxF/OcmbxY5MwepS41JDGPgulE1V7fpsXkiW
|
|
||||||
1LUimYV/tsqBfymIe0mlY7oORahKji7zKQ2UBIVFhdlvQxunlIDnw6F9popUgyHt
|
|
||||||
dMhtlgZK8oqRwHxO5dbfoukYd6J/r+etS5q26sgVkf3C6dt0Td7B25H9qW+f7oLV
|
|
||||||
PbcHYCa+i73u9670nrpXsC+Qc7Mygwa2Kq/jwU+ftyLQnOeW07DuzOwsziC/fQZa
|
|
||||||
nbxR+8U9FNftgRcC3uP/JMKYUqsiRAuaDokARZxVTV5hUElfpO6z6/NItSDvvh3i
|
|
||||||
eikCAwEAAaMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwDQYJKoZIhvcNAQEL
|
|
||||||
BQADggEBABchYxKo0YMma7g1qDswJXsR5s56Czx/I+B41YcpMBMTrRqpUC0nHtLk
|
|
||||||
M7/tZp592u/tT8gzEnQjZLKBAhFeZaR3aaKyknLqwiPqJIgg0pgsBGITrAK3Pv4z
|
|
||||||
5/YvAJJKgTe5UdeTz6U4lvNEux/4juZ4pmqH4qSFJTOzQS7LmgSmNIdd072rwXBd
|
|
||||||
UzcSHzsJgEMb88u/LDLjj1pQ7AtZ4Tta8JZTvcgBFmjB0QUi6fgkHY6oGat/W4kR
|
|
||||||
jSRUBlMUbM/drr2PVzRc2dwbFIl3X+ZE6n5Sl3ZwRAC/s92JU6CPMRW02muVu6xl
|
|
||||||
goraNgPISnrbpR6KjxLZkVembXzjNNc=
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1,27 +0,0 @@
|
||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEpAIBAAKCAQEAzLiGiSwpxkENtjrzS7pNLblTnWe4HUUFwYyUX0H+3TnvA86X
|
|
||||||
EX85yZvFjkzB6lLjUkMY+C6UTVXt+mxeSJbUtSKZhX+2yoF/KYh7SaVjug5FqEqO
|
|
||||||
LvMpDZQEhUWF2W9DG6eUgOfDoX2milSDIe10yG2WBkryipHAfE7l1t+i6Rh3on+v
|
|
||||||
561LmrbqyBWR/cLp23RN3sHbkf2pb5/ugtU9twdgJr6Lve73rvSeulewL5BzszKD
|
|
||||||
BrYqr+PBT5+3ItCc55bTsO7M7CzOIL99BlqdvFH7xT0U1+2BFwLe4/8kwphSqyJE
|
|
||||||
C5oOiQBFnFVNXmFQSV+k7rPr80i1IO++HeJ6KQIDAQABAoIBAGWgvPjfuaU3qizq
|
|
||||||
uti/FY07USz0zkuJdkANH6LiSjlchzDmn8wJ0pApCjuIE0PV/g9aS8z4opp5q/gD
|
|
||||||
UBLM/a8mC/xf2EhTXOMrY7i9p/I3H5FZ4ZehEqIw9sWKK9YzC6dw26HabB2BGOnW
|
|
||||||
5nozPSQ6cp2RGzJ7BIkxSZwPzPnVTgy3OAuPOiJytvK+hGLhsNaT+Y9bNDvplVT2
|
|
||||||
ZwYTV8GlHZC+4b2wNROILm0O86v96O+Qd8nn3fXjGHbMsAnONBq10bZS16L4fvkH
|
|
||||||
5G+W/1PeSXmtZFppdRRDxIW+DWcXK0D48WRliuxcV4eOOxI+a9N2ZJZZiNLQZGwg
|
|
||||||
w3A8+mECgYEA8HuJFrlRvdoBe2U/EwUtG74dcyy30L4yEBnN5QscXmEEikhaQCfX
|
|
||||||
Wm6EieMcIB/5I5TQmSw0cmBMeZjSXYoFdoI16/X6yMMuATdxpvhOZGdUGXxhAH+x
|
|
||||||
xoTUavWZnEqW3fkUU71kT5E2f2i+0zoatFESXHeslJyz85aAYpP92H0CgYEA2e5A
|
|
||||||
Yozt5eaA1Gyhd8SeptkEU4xPirNUnVQHStpMWUb1kzTNXrPmNWccQ7JpfpG6DcYl
|
|
||||||
zUF6p6mlzY+zkMiyPQjwEJlhiHM2NlL1QS7td0R8ewgsFoyn8WsBI4RejWrEG9td
|
|
||||||
EDniuIw+pBFkcWthnTLHwECHdzgquToyTMjrBB0CgYEA28tdGbrZXhcyAZEhHAZA
|
|
||||||
Gzog+pKlkpEzeonLKIuGKzCrEKRecIK5jrqyQsCjhS0T7ZRnL4g6i0s+umiV5M5w
|
|
||||||
fcc292pEA1h45L3DD6OlKplSQVTv55/OYS4oY3YEJtf5mfm8vWi9lQeY8sxOlQpn
|
|
||||||
O+VZTdBHmTC8PGeTAgZXHZUCgYA6Tyv88lYowB7SN2qQgBQu8jvdGtqhcs/99GCr
|
|
||||||
H3N0I69LPsKAR0QeH8OJPXBKhDUywESXAaEOwS5yrLNP1tMRz5Vj65YUCzeDG3kx
|
|
||||||
gpvY4IMp7ArX0bSRvJ6mYSFnVxy3k174G3TVCfksrtagHioVBGQ7xUg5ltafjrms
|
|
||||||
n8l55QKBgQDVzU8tQvBVqY8/1lnw11Vj4fkE/drZHJ5UkdC1eenOfSWhlSLfUJ8j
|
|
||||||
ds7vEWpRPPoVuPZYeR1y78cyxKe1GBx6Wa2lF5c7xjmiu0xbRnrxYeLolce9/ntp
|
|
||||||
asClqpnHT8/VJYTD7Kqj0fouTTZf0zkig/y+2XERppd8k+pSKjUCPQ==
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
|
@ -1,27 +0,0 @@
|
||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEowIBAAKCAQEAs15ZPekT5AV+JEnMqacAxStajcraP9Obf5eeXpYvPrv/Stxi
|
|
||||||
sltsq9Le7JE/+y1fJcQrD0J6nJDVWIFUWRYCjLypAQ5YUOxlz/lTOFdSdvotevep
|
|
||||||
OQUSM2aGP7u7O/+VsHGVQbU2VjNJ44Hr9FPzMf+WE54qEudZg9d1cqxrUUvqKPhf
|
|
||||||
wN4M7WRjt+8AaYGf9MeHW5OkOLMzhiZ4j7vh2ZrIDnFe8BG17mHhW7lIjN7uILTn
|
|
||||||
s36/KZOgyTYmCT5lkWnJeuer7KjpFoPcA1yWtzgVt5RBnlrmzlLGCz1rRjdYwb7t
|
|
||||||
zlWdVdxuMFHP9qrY206dBCOKQopADwYXTzQFCQIDAQABAoIBAQCuvCbr7Pd3lvI/
|
|
||||||
n7VFQG+7pHRe1VKwAxDkx2t8cYos7y/QWcm8Ptwqtw58HzPZGWYrgGMCRpzzkRSF
|
|
||||||
V9g3wP1S5Scu5C6dBu5YIGc157tqNGXB+SpdZddJQ4Nc6yGHXYERllT04ffBGc3N
|
|
||||||
WG/oYS/1cSteiSIrsDy/91FvGRCi7FPxH3wIgHssY/tw69s1Cfvaq5lr2NTFzxIG
|
|
||||||
xCvpJKEdSfVfS9I7LYiymVjst3IOR/w76/ZFY9cRa8ZtmQSWWsm0TUpRC1jdcbkm
|
|
||||||
ZoJptYWlP+gSwx/fpMYftrkJFGOJhHJHQhwxT5X/ajAISeqjjwkWSEJLwnHQd11C
|
|
||||||
Zy2+29lBAoGBANlEAIK4VxCqyPXNKfoOOi5dS64NfvyH4A1v2+KaHWc7lqaqPN49
|
|
||||||
ezfN2n3X+KWx4cviDD914Yc2JQ1vVJjSaHci7yivocDo2OfZDmjBqzaMp/y+rX1R
|
|
||||||
/f3MmiTqMa468rjaxI9RRZu7vDgpTR+za1+OBCgMzjvAng8dJuN/5gjlAoGBANNY
|
|
||||||
uYPKtearBmkqdrSV7eTUe49Nhr0XotLaVBH37TCW0Xv9wjO2xmbm5Ga/DCtPIsBb
|
|
||||||
yPeYwX9FjoasuadUD7hRvbFu6dBa0HGLmkXRJZTcD7MEX2Lhu4BuC72yDLLFd0r+
|
|
||||||
Ep9WP7F5iJyagYqIZtz+4uf7gBvUDdmvXz3sGr1VAoGAdXTD6eeKeiI6PlhKBztF
|
|
||||||
zOb3EQOO0SsLv3fnodu7ZaHbUgLaoTMPuB17r2jgrYM7FKQCBxTNdfGZmmfDjlLB
|
|
||||||
0xZ5wL8ibU30ZXL8zTlWPElST9sto4B+FYVVF/vcG9sWeUUb2ncPcJ/Po3UAktDG
|
|
||||||
jYQTTyuNGtSJHpad/YOZctkCgYBtWRaC7bq3of0rJGFOhdQT9SwItN/lrfj8hyHA
|
|
||||||
OjpqTV4NfPmhsAtu6j96OZaeQc+FHvgXwt06cE6Rt4RG4uNPRluTFgO7XYFDfitP
|
|
||||||
vCppnoIw6S5BBvHwPP+uIhUX2bsi/dm8vu8tb+gSvo4PkwtFhEr6I9HglBKmcmog
|
|
||||||
q6waEQKBgHyecFBeM6Ls11Cd64vborwJPAuxIW7HBAFj/BS99oeG4TjBx4Sz2dFd
|
|
||||||
rzUibJt4ndnHIvCN8JQkjNG14i9hJln+H3mRss8fbZ9vQdqG+2vOWADYSzzsNI55
|
|
||||||
RFY7JjluKcVkp/zCDeUxTU3O6sS+v6/3VE11Cob6OYQx3lN5wrZ3
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
|
@ -1,135 +0,0 @@
|
||||||
## create emqx.io
|
|
||||||
|
|
||||||
dn:dc=emqx,dc=io
|
|
||||||
objectclass: top
|
|
||||||
objectclass: dcobject
|
|
||||||
objectclass: organization
|
|
||||||
dc:emqx
|
|
||||||
o:emqx,Inc.
|
|
||||||
|
|
||||||
# create testdevice.emqx.io
|
|
||||||
dn:ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: top
|
|
||||||
objectclass:organizationalUnit
|
|
||||||
ou:testdevice
|
|
||||||
|
|
||||||
# create user admin
|
|
||||||
dn:uid=admin,ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: top
|
|
||||||
objectClass: simpleSecurityObject
|
|
||||||
objectClass: account
|
|
||||||
userPassword:: e1NIQX1XNnBoNU1tNVB6OEdnaVVMYlBnekczN21qOWc9
|
|
||||||
uid: admin
|
|
||||||
|
|
||||||
## create user=mqttuser0001,
|
|
||||||
# password=mqttuser0001,
|
|
||||||
# passhash={SHA}mlb3fat40MKBTXUVZwCKmL73R/0=
|
|
||||||
# base64passhash=e1NIQX1tbGIzZmF0NDBNS0JUWFVWWndDS21MNzNSLzA9
|
|
||||||
dn:uid=mqttuser0001,ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: top
|
|
||||||
objectClass: mqttUser
|
|
||||||
objectClass: mqttDevice
|
|
||||||
objectClass: mqttSecurity
|
|
||||||
uid: mqttuser0001
|
|
||||||
isEnabled: TRUE
|
|
||||||
mqttAccountName: user1
|
|
||||||
mqttPublishTopic: mqttuser0001/pub/1
|
|
||||||
mqttPublishTopic: mqttuser0001/pub/+
|
|
||||||
mqttPublishTopic: mqttuser0001/pub/#
|
|
||||||
mqttSubscriptionTopic: mqttuser0001/sub/1
|
|
||||||
mqttSubscriptionTopic: mqttuser0001/sub/+
|
|
||||||
mqttSubscriptionTopic: mqttuser0001/sub/#
|
|
||||||
mqttPubSubTopic: mqttuser0001/pubsub/1
|
|
||||||
mqttPubSubTopic: mqttuser0001/pubsub/+
|
|
||||||
mqttPubSubTopic: mqttuser0001/pubsub/#
|
|
||||||
userPassword:: e1NIQX1tbGIzZmF0NDBNS0JUWFVWWndDS21MNzNSLzA9
|
|
||||||
|
|
||||||
## create user=mqttuser0002
|
|
||||||
# password=mqttuser0002,
|
|
||||||
# passhash={SSHA}n9XdtoG4Q/TQ3TQF4Y+khJbMBH4qXj4M
|
|
||||||
# base64passhash=e1NTSEF9bjlYZHRvRzRRL1RRM1RRRjRZK2toSmJNQkg0cVhqNE0=
|
|
||||||
dn:uid=mqttuser0002,ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: top
|
|
||||||
objectClass: mqttUser
|
|
||||||
objectClass: mqttDevice
|
|
||||||
objectClass: mqttSecurity
|
|
||||||
uid: mqttuser0002
|
|
||||||
isEnabled: TRUE
|
|
||||||
mqttAccountName: user2
|
|
||||||
mqttPublishTopic: mqttuser0002/pub/1
|
|
||||||
mqttPublishTopic: mqttuser0002/pub/+
|
|
||||||
mqttPublishTopic: mqttuser0002/pub/#
|
|
||||||
mqttSubscriptionTopic: mqttuser0002/sub/1
|
|
||||||
mqttSubscriptionTopic: mqttuser0002/sub/+
|
|
||||||
mqttSubscriptionTopic: mqttuser0002/sub/#
|
|
||||||
mqttPubSubTopic: mqttuser0002/pubsub/1
|
|
||||||
mqttPubSubTopic: mqttuser0002/pubsub/+
|
|
||||||
mqttPubSubTopic: mqttuser0002/pubsub/#
|
|
||||||
userPassword:: e1NTSEF9bjlYZHRvRzRRL1RRM1RRRjRZK2toSmJNQkg0cVhqNE0=
|
|
||||||
|
|
||||||
## create user mqttuser0003
|
|
||||||
# password=mqttuser0003,
|
|
||||||
# passhash={MD5}ybsPGoaK3nDyiQvveiCOIw==
|
|
||||||
# base64passhash=e01ENX15YnNQR29hSzNuRHlpUXZ2ZWlDT0l3PT0=
|
|
||||||
dn:uid=mqttuser0003,ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: top
|
|
||||||
objectClass: mqttUser
|
|
||||||
objectClass: mqttDevice
|
|
||||||
objectClass: mqttSecurity
|
|
||||||
uid: mqttuser0003
|
|
||||||
isEnabled: TRUE
|
|
||||||
mqttPublishTopic: mqttuser0003/pub/1
|
|
||||||
mqttPublishTopic: mqttuser0003/pub/+
|
|
||||||
mqttPublishTopic: mqttuser0003/pub/#
|
|
||||||
mqttSubscriptionTopic: mqttuser0003/sub/1
|
|
||||||
mqttSubscriptionTopic: mqttuser0003/sub/+
|
|
||||||
mqttSubscriptionTopic: mqttuser0003/sub/#
|
|
||||||
mqttPubSubTopic: mqttuser0003/pubsub/1
|
|
||||||
mqttPubSubTopic: mqttuser0003/pubsub/+
|
|
||||||
mqttPubSubTopic: mqttuser0003/pubsub/#
|
|
||||||
userPassword:: e01ENX15YnNQR29hSzNuRHlpUXZ2ZWlDT0l3PT0=
|
|
||||||
|
|
||||||
## create user mqttuser0004
|
|
||||||
# password=mqttuser0004,
|
|
||||||
# passhash={MD5}2Br6pPDSEDIEvUlu9+s+MA==
|
|
||||||
# base64passhash=e01ENX0yQnI2cFBEU0VESUV2VWx1OStzK01BPT0=
|
|
||||||
dn:uid=mqttuser0004,ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: top
|
|
||||||
objectClass: mqttUser
|
|
||||||
objectClass: mqttDevice
|
|
||||||
objectClass: mqttSecurity
|
|
||||||
uid: mqttuser0004
|
|
||||||
isEnabled: TRUE
|
|
||||||
mqttPublishTopic: mqttuser0004/pub/1
|
|
||||||
mqttPublishTopic: mqttuser0004/pub/+
|
|
||||||
mqttPublishTopic: mqttuser0004/pub/#
|
|
||||||
mqttSubscriptionTopic: mqttuser0004/sub/1
|
|
||||||
mqttSubscriptionTopic: mqttuser0004/sub/+
|
|
||||||
mqttSubscriptionTopic: mqttuser0004/sub/#
|
|
||||||
mqttPubSubTopic: mqttuser0004/pubsub/1
|
|
||||||
mqttPubSubTopic: mqttuser0004/pubsub/+
|
|
||||||
mqttPubSubTopic: mqttuser0004/pubsub/#
|
|
||||||
userPassword: {MD5}2Br6pPDSEDIEvUlu9+s+MA==
|
|
||||||
|
|
||||||
## create user mqttuser0005
|
|
||||||
# password=mqttuser0005,
|
|
||||||
# passhash={SHA}jKnxeEDGR14kE8AR7yuVFOelhz4=
|
|
||||||
# base64passhash=e1NIQX1qS254ZUVER1IxNGtFOEFSN3l1VkZPZWxoejQ9
|
|
||||||
objectClass: top
|
|
||||||
dn:uid=mqttuser0005,ou=testdevice,dc=emqx,dc=io
|
|
||||||
objectClass: mqttUser
|
|
||||||
objectClass: mqttDevice
|
|
||||||
objectClass: mqttSecurity
|
|
||||||
uid: mqttuser0005
|
|
||||||
isEnabled: TRUE
|
|
||||||
mqttPublishTopic: mqttuser0005/pub/1
|
|
||||||
mqttPublishTopic: mqttuser0005/pub/+
|
|
||||||
mqttPublishTopic: mqttuser0005/pub/#
|
|
||||||
mqttSubscriptionTopic: mqttuser0005/sub/1
|
|
||||||
mqttSubscriptionTopic: mqttuser0005/sub/+
|
|
||||||
mqttSubscriptionTopic: mqttuser0005/sub/#
|
|
||||||
mqttPubSubTopic: mqttuser0005/pubsub/1
|
|
||||||
mqttPubSubTopic: mqttuser0005/pubsub/+
|
|
||||||
mqttPubSubTopic: mqttuser0005/pubsub/#
|
|
||||||
userPassword: {SHA}jKnxeEDGR14kE8AR7yuVFOelhz4=
|
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
#
|
|
||||||
# Preliminary Apple OS X Native LDAP Schema
|
|
||||||
# This file is subject to change.
|
|
||||||
#
|
|
||||||
attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.1.3 NAME 'isEnabled'
|
|
||||||
EQUALITY booleanMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
|
|
||||||
SINGLE-VALUE
|
|
||||||
USAGE userApplications )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.1 NAME ( 'mqttPublishTopic' 'mpt' )
|
|
||||||
EQUALITY caseIgnoreMatch
|
|
||||||
SUBSTR caseIgnoreSubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
|
||||||
USAGE userApplications )
|
|
||||||
attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.2 NAME ( 'mqttSubscriptionTopic' 'mst' )
|
|
||||||
EQUALITY caseIgnoreMatch
|
|
||||||
SUBSTR caseIgnoreSubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
|
||||||
USAGE userApplications )
|
|
||||||
attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.3 NAME ( 'mqttPubSubTopic' 'mpst' )
|
|
||||||
EQUALITY caseIgnoreMatch
|
|
||||||
SUBSTR caseIgnoreSubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
|
||||||
USAGE userApplications )
|
|
||||||
attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.4 NAME ( 'mqttAccountName' 'man' )
|
|
||||||
EQUALITY caseIgnoreMatch
|
|
||||||
SUBSTR caseIgnoreSubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
|
||||||
USAGE userApplications )
|
|
||||||
|
|
||||||
|
|
||||||
objectclass ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4 NAME 'mqttUser'
|
|
||||||
AUXILIARY
|
|
||||||
MAY ( mqttPublishTopic $ mqttSubscriptionTopic $ mqttPubSubTopic $ mqttAccountName) )
|
|
||||||
|
|
||||||
objectclass ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.2 NAME 'mqttDevice'
|
|
||||||
SUP top
|
|
||||||
STRUCTURAL
|
|
||||||
MUST ( uid )
|
|
||||||
MAY ( isEnabled ) )
|
|
||||||
|
|
||||||
objectclass ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.3 NAME 'mqttSecurity'
|
|
||||||
SUP top
|
|
||||||
AUXILIARY
|
|
||||||
MAY ( userPassword $ userPKCS12 $ pwdAttribute $ pwdLockout ) )
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
ARG BUILD_FROM=postgres:11
|
||||||
|
FROM ${BUILD_FROM}
|
||||||
|
ARG POSTGRES_USER=postgres
|
||||||
|
COPY --chown=$POSTGRES_USER .ci/compatibility_tests/pgsql/pg_hba.conf /var/lib/postgresql/pg_hba.conf
|
||||||
|
COPY --chown=$POSTGRES_USER apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/server.key /var/lib/postgresql/server.key
|
||||||
|
COPY --chown=$POSTGRES_USER apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/server.crt /var/lib/postgresql/server.crt
|
||||||
|
COPY --chown=$POSTGRES_USER apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/root.crt /var/lib/postgresql/root.crt
|
||||||
|
RUN chmod 600 /var/lib/postgresql/pg_hba.conf
|
||||||
|
RUN chmod 600 /var/lib/postgresql/server.key
|
||||||
|
RUN chmod 600 /var/lib/postgresql/server.crt
|
||||||
|
RUN chmod 600 /var/lib/postgresql/root.crt
|
||||||
|
EXPOSE 5432
|
|
@ -1,21 +0,0 @@
|
||||||
# - Connection Settings -
|
|
||||||
|
|
||||||
listen_addresses = '*'
|
|
||||||
port = 5432 # (change requires restart)
|
|
||||||
max_connections = 100 # (change requires restart)
|
|
||||||
# - SSL -
|
|
||||||
|
|
||||||
ssl = on
|
|
||||||
ssl_cert_file = '/etc/postgresql/server-cert.pem'
|
|
||||||
ssl_key_file = '/etc/postgresql/server-key.pem'
|
|
||||||
shared_buffers = 128MB # min 128kB
|
|
||||||
checkpoint_timeout = 5min # range 30s-1d
|
|
||||||
max_wal_size = 1GB
|
|
||||||
min_wal_size = 80MB
|
|
||||||
datestyle = 'iso, mdy'
|
|
||||||
timezone = 'Etc/UTC'
|
|
||||||
lc_messages = 'en_US.utf8' # locale for system error message
|
|
||||||
lc_monetary = 'en_US.utf8' # locale for monetary formatting
|
|
||||||
lc_numeric = 'en_US.utf8' # locale for number formatting
|
|
||||||
lc_time = 'en_US.utf8' # locale for time formatting
|
|
||||||
default_text_search_config = 'pg_catalog.english'
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
# TYPE DATABASE USER CIDR-ADDRESS METHOD
|
||||||
|
local all all trust
|
||||||
|
host all all 0.0.0.0/0 trust
|
||||||
|
host all all ::/0 trust
|
||||||
|
hostssl all all 0.0.0.0/0 cert
|
||||||
|
hostssl all all ::/0 cert
|
||||||
|
|
||||||
|
hostssl all www-data 0.0.0.0/0 cert clientcert=1
|
||||||
|
hostssl all postgres 0.0.0.0/0 cert clientcert=1
|
|
@ -30,9 +30,6 @@ jobs:
|
||||||
env:
|
env:
|
||||||
LDAP_TAG: ${{ matrix.ldap_tag }}
|
LDAP_TAG: ${{ matrix.ldap_tag }}
|
||||||
run: |
|
run: |
|
||||||
cp -f apps/emqx_auth_ldap/emqx.io.ldif .ci/apps_tests/emqx_ldap/schema
|
|
||||||
cp -f apps/emqx_auth_ldap/emqx.schema .ci/apps_tests/emqx_ldap/schema
|
|
||||||
cp -f apps/emqx_auth_ldap/test/certs/* .ci/apps_tests/emqx_ldap/certs
|
|
||||||
docker-compose -f .ci/apps_tests/docker-compose.yaml build --no-cache
|
docker-compose -f .ci/apps_tests/docker-compose.yaml build --no-cache
|
||||||
docker-compose -f .ci/compatibility_tests/docker-compose-ldap.yaml up -d
|
docker-compose -f .ci/compatibility_tests/docker-compose-ldap.yaml up -d
|
||||||
- name: setup
|
- name: setup
|
||||||
|
@ -83,11 +80,6 @@ jobs:
|
||||||
echo 'auth.mongo.ssl.cacertfile = /emqx/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/ca.pem' >> apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf
|
echo 'auth.mongo.ssl.cacertfile = /emqx/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/ca.pem' >> apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf
|
||||||
echo 'auth.mongo.ssl.certfile = /emqx/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-cert.pem' >> apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf
|
echo 'auth.mongo.ssl.certfile = /emqx/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-cert.pem' >> apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf
|
||||||
echo 'auth.mongo.ssl.keyfile = /emqx/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-key.pem' >> apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf
|
echo 'auth.mongo.ssl.keyfile = /emqx/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-key.pem' >> apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf
|
||||||
|
|
||||||
# echo 'auth.mongo.ssl = true' >> apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf
|
|
||||||
# echo 'auth.mongo.ssl_opts.cacertfile = /emqx/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/ca.pem' >> apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf
|
|
||||||
# echo 'auth.mongo.ssl_opts.certfile = /emqx/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-cert.pem' >> apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf
|
|
||||||
# echo 'auth.mongo.ssl_opts.keyfile = /emqx/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-key.pem' >> apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf
|
|
||||||
- name: setup
|
- name: setup
|
||||||
env:
|
env:
|
||||||
MONGO_TAG: ${{ matrix.mongo_tag }}
|
MONGO_TAG: ${{ matrix.mongo_tag }}
|
||||||
|
@ -138,7 +130,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
docker-compose -f .ci/compatibility_tests/docker-compose-mysql-tls.yaml up -d
|
docker-compose -f .ci/compatibility_tests/docker-compose-mysql-tls.yaml up -d
|
||||||
echo '\n' >> apps/emqx_auth_mongo/etc/emqx_auth_mysql.conf
|
echo '\n' >> apps/emqx_auth_mongo/etc/emqx_auth_mysql.conf
|
||||||
echo 'auth.mysql.ssl = on' >> apps/emqx_auth_mysql/etc/emqx_auth_mysql.conf
|
sed -i '/auth.mysql.ssl = off/c auth.mysql.ssl = on' apps/emqx_auth_mysql/etc/emqx_auth_mysql.conf
|
||||||
echo "auth.mysql.ssl.cafile = /emqx/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/ca.pem" >> apps/emqx_auth_mysql/etc/emqx_auth_mysql.conf
|
echo "auth.mysql.ssl.cafile = /emqx/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/ca.pem" >> apps/emqx_auth_mysql/etc/emqx_auth_mysql.conf
|
||||||
echo "auth.mysql.ssl.certfile = /emqx/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-cert.pem" >> apps/emqx_auth_mysql/etc/emqx_auth_mysql.conf
|
echo "auth.mysql.ssl.certfile = /emqx/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-cert.pem" >> apps/emqx_auth_mysql/etc/emqx_auth_mysql.conf
|
||||||
echo "auth.mysql.ssl.keyfile = /emqx/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-key.pem" >> apps/emqx_auth_mysql/etc/emqx_auth_mysql.conf
|
echo "auth.mysql.ssl.keyfile = /emqx/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-key.pem" >> apps/emqx_auth_mysql/etc/emqx_auth_mysql.conf
|
||||||
|
@ -170,7 +162,7 @@ jobs:
|
||||||
|
|
||||||
pgsql:
|
pgsql:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
pgsql_tag:
|
pgsql_tag:
|
||||||
|
@ -183,9 +175,8 @@ jobs:
|
||||||
- ipv4
|
- ipv4
|
||||||
- ipv6
|
- ipv6
|
||||||
connect_type:
|
connect_type:
|
||||||
# - tls
|
- tls
|
||||||
- tcp
|
- tcp
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
- name: setup
|
- name: setup
|
||||||
|
@ -193,12 +184,14 @@ jobs:
|
||||||
PGSQL_TAG: ${{ matrix.pgsql_tag }}
|
PGSQL_TAG: ${{ matrix.pgsql_tag }}
|
||||||
if: matrix.connect_type == 'tls'
|
if: matrix.connect_type == 'tls'
|
||||||
run: |
|
run: |
|
||||||
|
docker-compose -f .ci/compatibility_tests/docker-compose-pgsql-tls.yaml build --no-cache
|
||||||
docker-compose -f .ci/compatibility_tests/docker-compose-pgsql-tls.yaml up -d
|
docker-compose -f .ci/compatibility_tests/docker-compose-pgsql-tls.yaml up -d
|
||||||
|
sed -i 's|auth.pgsql.username[ \t]*=.*|auth.pgsql.username = postgres|g' apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf
|
||||||
|
sed -i 's|auth.pgsql.password[ \t]*=.*|auth.pgsql.password = postgres|g' apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf
|
||||||
|
sed -i 's|auth.pgsql.database[ \t]*=.*|auth.pgsql.database= postgres|g' apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf
|
||||||
|
sed -i 's|auth.pgsql.ssl[ \t]*=.*|auth.pgsql.ssl = on|g' apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf
|
||||||
echo '\n' >> apps/emqx_auth_mongo/etc/emqx_auth_pgsql.conf
|
echo '\n' >> apps/emqx_auth_mongo/etc/emqx_auth_pgsql.conf
|
||||||
echo 'auth.pgsql.ssl = true' >> apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf
|
echo 'auth.pgsql.ssl.cacertfile = /emqx/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/root.crt' apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf
|
||||||
echo "auth.pgsql.ssl_opts.cacertfile = /emqx/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/ca.pem" >> apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf
|
|
||||||
echo "auth.pgsql.ssl_opts.certfile = /emqx/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/client-cert.pem" >> apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf
|
|
||||||
echo "auth.pgsql.ssl_opts.keyfile = /emqx/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/client-key.pem" >> apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf
|
|
||||||
- name: setup
|
- name: setup
|
||||||
env:
|
env:
|
||||||
PGSQL_TAG: ${{ matrix.pgsql_tag }}
|
PGSQL_TAG: ${{ matrix.pgsql_tag }}
|
||||||
|
|
|
@ -26,9 +26,6 @@ jobs:
|
||||||
PGSQL_TAG: 13
|
PGSQL_TAG: 13
|
||||||
LDAP_TAG: 2.4.50
|
LDAP_TAG: 2.4.50
|
||||||
run: |
|
run: |
|
||||||
cp -f apps/emqx_auth_ldap/emqx.io.ldif .ci/apps_tests/emqx_ldap/schema
|
|
||||||
cp -f apps/emqx_auth_ldap/emqx.schema .ci/apps_tests/emqx_ldap/schema
|
|
||||||
cp -f apps/emqx_auth_ldap/test/certs/* .ci/apps_tests/emqx_ldap/certs
|
|
||||||
docker-compose -f .ci/apps_tests/docker-compose.yaml build --no-cache
|
docker-compose -f .ci/apps_tests/docker-compose.yaml build --no-cache
|
||||||
docker-compose -f .ci/apps_tests/docker-compose.yaml up -d
|
docker-compose -f .ci/apps_tests/docker-compose.yaml up -d
|
||||||
- name: set config files
|
- name: set config files
|
||||||
|
|
|
@ -164,32 +164,22 @@ t_check_auth(_) ->
|
||||||
BcryptFoo = #{clientid => <<"bcrypt_foo">>, username => <<"bcrypt_foo">>, zone => external},
|
BcryptFoo = #{clientid => <<"bcrypt_foo">>, username => <<"bcrypt_foo">>, zone => external},
|
||||||
User1 = #{clientid => <<"bcrypt_foo">>, username => <<"user">>, zone => external},
|
User1 = #{clientid => <<"bcrypt_foo">>, username => <<"user">>, zone => external},
|
||||||
Bcrypt = #{clientid => <<"bcrypt">>, username => <<"bcrypt">>, zone => external},
|
Bcrypt = #{clientid => <<"bcrypt">>, username => <<"bcrypt">>, zone => external},
|
||||||
BcryptWrong = #{clientid => <<"bcrypt_wrong">>, username => <<"bcrypt_wrong">>, zone => external},
|
%
|
||||||
reload([{password_hash, plain}]),
|
reload([{password_hash, plain}]),
|
||||||
{ok,#{is_superuser := true}} =
|
{ok, #{is_superuser := true}} = emqx_access_control:authenticate(Plain#{password => <<"plain">>}),
|
||||||
emqx_access_control:authenticate(Plain#{password => <<"plain">>}),
|
|
||||||
reload([{password_hash, md5}]),
|
reload([{password_hash, md5}]),
|
||||||
{ok,#{is_superuser := false}} =
|
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(Md5#{password => <<"md5">>}),
|
||||||
emqx_access_control:authenticate(Md5#{password => <<"md5">>}),
|
|
||||||
reload([{password_hash, sha}]),
|
reload([{password_hash, sha}]),
|
||||||
{ok,#{is_superuser := false}} =
|
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(Sha#{password => <<"sha">>}),
|
||||||
emqx_access_control:authenticate(Sha#{password => <<"sha">>}),
|
|
||||||
reload([{password_hash, sha256}]),
|
reload([{password_hash, sha256}]),
|
||||||
{ok,#{is_superuser := false}} =
|
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(Sha256#{password => <<"sha256">>}),
|
||||||
emqx_access_control:authenticate(Sha256#{password => <<"sha256">>}),
|
|
||||||
reload([{password_hash, bcrypt}]),
|
reload([{password_hash, bcrypt}]),
|
||||||
{ok,#{is_superuser := false}} =
|
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}),
|
||||||
emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}),
|
|
||||||
{error, not_authorized} =
|
reload([{password_hash, {pbkdf2, sha, 1, 16}}, {auth_query, "select password, salt from mqtt_user where username = '%u' limit 1"}]),
|
||||||
emqx_access_control:authenticate(BcryptWrong#{password => <<"password">>}),
|
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(Pbkdf2#{password => <<"password">>}),
|
||||||
%%pbkdf2 sha
|
|
||||||
reload([{password_hash, {pbkdf2, sha, 1, 16}},
|
|
||||||
{auth_query, "select password, salt from mqtt_user where username = '%u' limit 1"}]),
|
|
||||||
{ok,#{is_superuser := false}} =
|
|
||||||
emqx_access_control:authenticate(Pbkdf2#{password => <<"password">>}),
|
|
||||||
reload([{password_hash, {salt, bcrypt}}]),
|
reload([{password_hash, {salt, bcrypt}}]),
|
||||||
{ok,#{is_superuser := false}} =
|
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(BcryptFoo#{password => <<"foo">>}),
|
||||||
emqx_access_control:authenticate(BcryptFoo#{password => <<"foo">>}),
|
|
||||||
{error, _} = emqx_access_control:authenticate(User1#{password => <<"foo">>}),
|
{error, _} = emqx_access_control:authenticate(User1#{password => <<"foo">>}),
|
||||||
{error, not_authorized} = emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}).
|
{error, not_authorized} = emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}).
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ auth.pgsql.username = root
|
||||||
## PostgreSQL password.
|
## PostgreSQL password.
|
||||||
##
|
##
|
||||||
## Value: String
|
## Value: String
|
||||||
## auth.pgsql.password =
|
auth.pgsql.password = public
|
||||||
|
|
||||||
## PostgreSQL database.
|
## PostgreSQL database.
|
||||||
##
|
##
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
-module(emqx_auth_pgsql_SUITE).
|
-module(emqx_auth_pgsql_SUITE).
|
||||||
|
|
||||||
-compile(nowarn_export_all).
|
|
||||||
-compile(export_all).
|
-compile(export_all).
|
||||||
|
|
||||||
-define(POOL, emqx_auth_pgsql).
|
-define(POOL, emqx_auth_pgsql).
|
||||||
|
@ -30,9 +29,9 @@
|
||||||
-include_lib("common_test/include/ct.hrl").
|
-include_lib("common_test/include/ct.hrl").
|
||||||
|
|
||||||
%%setp1 init table
|
%%setp1 init table
|
||||||
-define(DROP_ACL_TABLE, "DROP TABLE IF EXISTS mqtt_acl_test").
|
-define(DROP_ACL_TABLE, "DROP TABLE IF EXISTS mqtt_acl").
|
||||||
|
|
||||||
-define(CREATE_ACL_TABLE, "CREATE TABLE mqtt_acl_test (
|
-define(CREATE_ACL_TABLE, "CREATE TABLE mqtt_acl (
|
||||||
id SERIAL primary key,
|
id SERIAL primary key,
|
||||||
allow integer,
|
allow integer,
|
||||||
ipaddr character varying(60),
|
ipaddr character varying(60),
|
||||||
|
@ -41,23 +40,23 @@
|
||||||
access integer,
|
access integer,
|
||||||
topic character varying(100))").
|
topic character varying(100))").
|
||||||
|
|
||||||
-define(INIT_ACL, "INSERT INTO mqtt_acl_test (id, allow, ipaddr, username, clientid, access, topic)
|
-define(INIT_ACL, "INSERT INTO mqtt_acl (id, allow, ipaddr, username, clientid, access, topic)
|
||||||
VALUES
|
VALUES
|
||||||
(1,1,'127.0.0.1','u1','c1',1,'t1'),
|
(1,1,'127.0.0.1','u1','c1',1,'t1'),
|
||||||
(2,0,'127.0.0.1','u2','c2',1,'t1'),
|
(2,0,'127.0.0.1','u2','c2',1,'t1'),
|
||||||
(3,1,'10.10.0.110','u1','c1',1,'t1'),
|
(3,1,'10.10.0.110','u1','c1',1,'t1'),
|
||||||
(4,1,'127.0.0.1','u3','c3',3,'t1')").
|
(4,1,'127.0.0.1','u3','c3',3,'t1')").
|
||||||
|
|
||||||
-define(DROP_AUTH_TABLE, "DROP TABLE IF EXISTS mqtt_user_test").
|
-define(DROP_AUTH_TABLE, "DROP TABLE IF EXISTS mqtt_user").
|
||||||
|
|
||||||
-define(CREATE_AUTH_TABLE, "CREATE TABLE mqtt_user_test (
|
-define(CREATE_AUTH_TABLE, "CREATE TABLE mqtt_user (
|
||||||
id SERIAL primary key,
|
id SERIAL primary key,
|
||||||
is_superuser boolean,
|
is_superuser boolean,
|
||||||
username character varying(100),
|
username character varying(100),
|
||||||
password character varying(100),
|
password character varying(100),
|
||||||
salt character varying(40))").
|
salt character varying(40))").
|
||||||
|
|
||||||
-define(INIT_AUTH, "INSERT INTO mqtt_user_test (id, is_superuser, username, password, salt)
|
-define(INIT_AUTH, "INSERT INTO mqtt_user (id, is_superuser, username, password, salt)
|
||||||
VALUES
|
VALUES
|
||||||
(1, true, 'plain', 'plain', 'salt'),
|
(1, true, 'plain', 'plain', 'salt'),
|
||||||
(2, false, 'md5', '1bc29b36f623ba82aaf6724fd3b16718', 'salt'),
|
(2, false, 'md5', '1bc29b36f623ba82aaf6724fd3b16718', 'salt'),
|
||||||
|
@ -68,61 +67,25 @@
|
||||||
(7, false, 'bcrypt', '$2y$16$rEVsDarhgHYB0TGnDFJzyu5f.T.Ha9iXMTk9J36NCMWWM7O16qyaK', 'salt')").
|
(7, false, 'bcrypt', '$2y$16$rEVsDarhgHYB0TGnDFJzyu5f.T.Ha9iXMTk9J36NCMWWM7O16qyaK', 'salt')").
|
||||||
|
|
||||||
all() ->
|
all() ->
|
||||||
[{group, ssl}, {group, nossl}].
|
emqx_ct:all(?MODULE).
|
||||||
|
|
||||||
groups() ->
|
init_per_suite(Config) ->
|
||||||
Cases = emqx_ct:all(?MODULE),
|
emqx_ct_helpers:start_apps([emqx_auth_pgsql]),
|
||||||
[{ssl, [sequence], Cases}, {nossl, [sequence], Cases}].
|
drop_acl(),
|
||||||
|
init_auth(),
|
||||||
init_per_group(Name, Config) ->
|
init_auth(),
|
||||||
case Name of
|
init_acl(),
|
||||||
ssl ->
|
set_special_configs(),
|
||||||
emqx_ct_helpers:start_apps([emqx_auth_pgsql], fun set_special_configs_ssl/1);
|
|
||||||
nossl ->
|
|
||||||
emqx_ct_helpers:start_apps([emqx_auth_pgsql], fun set_special_configs/1)
|
|
||||||
end,
|
|
||||||
init_auth_(),
|
|
||||||
init_acl_(),
|
|
||||||
Config.
|
Config.
|
||||||
|
|
||||||
end_per_group(_, Config) ->
|
end_per_suite(Config) ->
|
||||||
drop_auth_(),
|
|
||||||
drop_acl_(),
|
|
||||||
emqx_ct_helpers:stop_apps([emqx_auth_pgsql]),
|
emqx_ct_helpers:stop_apps([emqx_auth_pgsql]),
|
||||||
Config.
|
Config.
|
||||||
|
|
||||||
set_special_configs_ssl(Name) ->
|
set_special_configs() ->
|
||||||
Server = application:get_env(?APP, server, []),
|
|
||||||
Path = emqx_ct_helpers:deps_path(emqx_auth_pgsql, "test/emqx_auth_pgsql_SUITE_data/"),
|
|
||||||
Sslopts = [{keyfile, Path ++ "/client-key.pem"},
|
|
||||||
{certfile, Path ++ "/client-cert.pem"},
|
|
||||||
{cacertfile, Path ++ "/ca.pem"}],
|
|
||||||
Temp = lists:keyreplace(ssl, 1, Server, {ssl, true}),
|
|
||||||
application:set_env(?APP, server, Temp),
|
|
||||||
application:set_env(?APP, server, lists:keyreplace(ssl_opts, 1, Temp, {ssl_opts, Sslopts})),
|
|
||||||
set_special_configs(Name).
|
|
||||||
|
|
||||||
set_special_configs(emqx) ->
|
|
||||||
application:set_env(emqx, acl_nomatch, deny),
|
application:set_env(emqx, acl_nomatch, deny),
|
||||||
application:set_env(emqx, acl_file,
|
|
||||||
emqx_ct_helpers:deps_path(emqx, "test/emqx_SUITE_data/acl.conf")),
|
|
||||||
application:set_env(emqx, allow_anonymous, false),
|
application:set_env(emqx, allow_anonymous, false),
|
||||||
application:set_env(emqx, enable_acl_cache, false),
|
application:set_env(emqx, enable_acl_cache, false).
|
||||||
application:set_env(emqx, plugins_loaded_file,
|
|
||||||
emqx_ct_helpers:deps_path(emqx, "test/emqx_SUITE_data/loaded_plugins"));
|
|
||||||
|
|
||||||
set_special_configs(emqx_auth_pgsql) ->
|
|
||||||
Server = application:get_env(?APP, server, []),
|
|
||||||
application:set_env(?APP, server,
|
|
||||||
lists:keyreplace(password,
|
|
||||||
1,
|
|
||||||
lists:keyreplace(pool_size, 1, Server, {pool_size, 1}),
|
|
||||||
{password, "public"})),
|
|
||||||
application:set_env(?APP, acl_query, "select allow, ipaddr, username, clientid, access, topic from mqtt_acl_test where ipaddr = '%a' or username = '%u' or username = '$all' or clientid = '%c'"),
|
|
||||||
application:set_env(?APP, super_query, "select is_superuser from mqtt_user_test where username = '%u' limit 1"),
|
|
||||||
application:set_env(?APP, auth_query, "select password from mqtt_user_test where username = '%u' limit 1");
|
|
||||||
set_special_configs(_App) ->
|
|
||||||
ok.
|
|
||||||
|
|
||||||
t_comment_config(_) ->
|
t_comment_config(_) ->
|
||||||
AuthCount = length(emqx_hooks:lookup('client.authenticate')),
|
AuthCount = length(emqx_hooks:lookup('client.authenticate')),
|
||||||
|
@ -134,31 +97,6 @@ t_comment_config(_) ->
|
||||||
?assertEqual(AuthCount - 1, length(emqx_hooks:lookup('client.authenticate'))),
|
?assertEqual(AuthCount - 1, length(emqx_hooks:lookup('client.authenticate'))),
|
||||||
?assertEqual(AclCount - 1, length(emqx_hooks:lookup('client.check_acl'))).
|
?assertEqual(AclCount - 1, length(emqx_hooks:lookup('client.check_acl'))).
|
||||||
|
|
||||||
t_placeholders(_) ->
|
|
||||||
ClientA = #{username => <<"plain">>, clientid => <<"plain">>, zone => external},
|
|
||||||
reload([{password_hash, plain},
|
|
||||||
{auth_query, "select password from mqtt_user_test where username = '%u' and 'a_cn_val' = '%C' limit 1"}]),
|
|
||||||
{error, not_authorized} =
|
|
||||||
emqx_access_control:authenticate(ClientA#{password => <<"plain">>}),
|
|
||||||
{error, not_authorized} =
|
|
||||||
emqx_access_control:authenticate(ClientA#{password => <<"plain">>, cn => undefined}),
|
|
||||||
{ok, _} =
|
|
||||||
emqx_access_control:authenticate(ClientA#{password => <<"plain">>, cn => <<"a_cn_val">>}),
|
|
||||||
|
|
||||||
reload([{auth_query, "select password from mqtt_user_test where username = '%c' and 'a_dn_val' = '%d' limit 1"}]),
|
|
||||||
{error, not_authorized} =
|
|
||||||
emqx_access_control:authenticate(ClientA#{password => <<"plain">>}),
|
|
||||||
{error, not_authorized} =
|
|
||||||
emqx_access_control:authenticate(ClientA#{password => <<"plain">>, dn => undefined}),
|
|
||||||
{ok, _} =
|
|
||||||
emqx_access_control:authenticate(ClientA#{password => <<"plain">>, dn => <<"a_dn_val">>}),
|
|
||||||
|
|
||||||
reload([{auth_query, "select password from mqtt_user_test where username = '%u' and '192.168.1.5' = '%a' limit 1"}]),
|
|
||||||
{error, not_authorized} =
|
|
||||||
emqx_access_control:authenticate(ClientA#{password => <<"plain">>}),
|
|
||||||
{ok, _} =
|
|
||||||
emqx_access_control:authenticate(ClientA#{password => <<"plain">>, peerhost => {192,168,1,5}}).
|
|
||||||
|
|
||||||
t_check_auth(_) ->
|
t_check_auth(_) ->
|
||||||
Plain = #{clientid => <<"client1">>, username => <<"plain">>, zone => external},
|
Plain = #{clientid => <<"client1">>, username => <<"plain">>, zone => external},
|
||||||
Md5 = #{clientid => <<"md5">>, username => <<"md5">>, zone => external},
|
Md5 = #{clientid => <<"md5">>, username => <<"md5">>, zone => external},
|
||||||
|
@ -168,8 +106,8 @@ t_check_auth(_) ->
|
||||||
BcryptFoo = #{clientid => <<"bcrypt_foo">>, username => <<"bcrypt_foo">>, zone => external},
|
BcryptFoo = #{clientid => <<"bcrypt_foo">>, username => <<"bcrypt_foo">>, zone => external},
|
||||||
User1 = #{clientid => <<"bcrypt_foo">>, username => <<"user">>, zone => external},
|
User1 = #{clientid => <<"bcrypt_foo">>, username => <<"user">>, zone => external},
|
||||||
Bcrypt = #{clientid => <<"bcrypt">>, username => <<"bcrypt">>, zone => external},
|
Bcrypt = #{clientid => <<"bcrypt">>, username => <<"bcrypt">>, zone => external},
|
||||||
reload([{password_hash, plain},
|
%
|
||||||
{auth_query, "select password from mqtt_user_test where username = '%u' limit 1"}]),
|
reload([{password_hash, plain}]),
|
||||||
{ok, #{is_superuser := true}} = emqx_access_control:authenticate(Plain#{password => <<"plain">>}),
|
{ok, #{is_superuser := true}} = emqx_access_control:authenticate(Plain#{password => <<"plain">>}),
|
||||||
reload([{password_hash, md5}]),
|
reload([{password_hash, md5}]),
|
||||||
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(Md5#{password => <<"md5">>}),
|
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(Md5#{password => <<"md5">>}),
|
||||||
|
@ -179,18 +117,18 @@ t_check_auth(_) ->
|
||||||
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(Sha256#{password => <<"sha256">>}),
|
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(Sha256#{password => <<"sha256">>}),
|
||||||
reload([{password_hash, bcrypt}]),
|
reload([{password_hash, bcrypt}]),
|
||||||
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}),
|
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}),
|
||||||
%%pbkdf2 sha
|
|
||||||
reload([{password_hash, {pbkdf2, sha, 1, 16}}, {auth_query, "select password, salt from mqtt_user_test where username = '%u' limit 1"}]),
|
reload([{password_hash, {pbkdf2, sha, 1, 16}}, {auth_query, "select password, salt from mqtt_user where username = '%u' limit 1"}]),
|
||||||
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(Pbkdf2#{password => <<"password">>}),
|
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(Pbkdf2#{password => <<"password">>}),
|
||||||
reload([{password_hash, {salt, bcrypt}}]),
|
reload([{password_hash, {salt, bcrypt}}]),
|
||||||
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(BcryptFoo#{password => <<"foo">>}),
|
{ok, #{is_superuser := false}} = emqx_access_control:authenticate(BcryptFoo#{password => <<"foo">>}),
|
||||||
{error, _} = emqx_access_control:authenticate(User1#{password => <<"foo">>}),
|
{error, _} = emqx_access_control:authenticate(User1#{password => <<"foo">>}),
|
||||||
{error, not_authorized} = emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}).
|
{error, not_authorized} = emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}).
|
||||||
|
|
||||||
t_check_acl(_) ->
|
t_check_acl(_) ->
|
||||||
emqx_modules:load_module(emqx_mod_acl_internal, false),
|
emqx_modules:load_module(emqx_mod_acl_internal, false),
|
||||||
User1 = #{zone => external, peerhost => {127,0,0,1}, clientid => <<"c1">>, username => <<"u1">>},
|
User1 = #{zone => external, peerhost => {127,0,0,1}, clientid => <<"c1">>, username => <<"u1">>},
|
||||||
User2 = #{zone => external, peerhost => {127,0,0,1}, clientid => <<"c2">>, username => <<"u2">>},
|
User2 = #{zone => external, peerhost => {127,0,0,1}, clientid => <<"c2">>, username => <<"u2">>},
|
||||||
reload([{acl_query, "select allow, ipaddr, username, clientid, access, topic from mqtt_acl_test where ipaddr = '%a' or username = '%u' or username = '$all' or clientid = '%c'"}]),
|
|
||||||
allow = emqx_access_control:check_acl(User1, subscribe, <<"t1">>),
|
allow = emqx_access_control:check_acl(User1, subscribe, <<"t1">>),
|
||||||
deny = emqx_access_control:check_acl(User2, subscribe, <<"t1">>),
|
deny = emqx_access_control:check_acl(User2, subscribe, <<"t1">>),
|
||||||
User3 = #{zone => external, peerhost => {10,10,0,110}, clientid => <<"c1">>, username => <<"u1">>},
|
User3 = #{zone => external, peerhost => {10,10,0,110}, clientid => <<"c1">>, username => <<"u1">>},
|
||||||
|
@ -204,7 +142,7 @@ t_check_acl(_) ->
|
||||||
allow = emqx_access_control:check_acl(User5, publish, <<"t1">>).
|
allow = emqx_access_control:check_acl(User5, publish, <<"t1">>).
|
||||||
|
|
||||||
t_acl_super(_) ->
|
t_acl_super(_) ->
|
||||||
reload([{password_hash, plain}, {auth_query, "select password from mqtt_user_test where username = '%u' limit 1"}]),
|
reload([{password_hash, plain}, {auth_query, "select password from mqtt_user where username = '%u' limit 1"}]),
|
||||||
{ok, C} = emqtt:start_link([{host, "localhost"}, {clientid, <<"simpleClient">>},
|
{ok, C} = emqtt:start_link([{host, "localhost"}, {clientid, <<"simpleClient">>},
|
||||||
{username, <<"plain">>}, {password, <<"plain">>}]),
|
{username, <<"plain">>}, {password, <<"plain">>}]),
|
||||||
{ok, _} = emqtt:connect(C),
|
{ok, _} = emqtt:connect(C),
|
||||||
|
@ -227,22 +165,22 @@ reload(Config) when is_list(Config) ->
|
||||||
[application:set_env(?APP, K, V) || {K, V} <- Config],
|
[application:set_env(?APP, K, V) || {K, V} <- Config],
|
||||||
application:start(?APP).
|
application:start(?APP).
|
||||||
|
|
||||||
init_acl_() ->
|
init_acl() ->
|
||||||
{ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?POOL})),
|
{ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?POOL})),
|
||||||
{ok, [], []} = epgsql:squery(Pid, ?DROP_ACL_TABLE),
|
{ok, [], []} = epgsql:squery(Pid, ?DROP_ACL_TABLE),
|
||||||
{ok, [], []} = epgsql:squery(Pid, ?CREATE_ACL_TABLE),
|
{ok, [], []} = epgsql:squery(Pid, ?CREATE_ACL_TABLE),
|
||||||
{ok, _} = epgsql:equery(Pid, ?INIT_ACL).
|
{ok, _} = epgsql:equery(Pid, ?INIT_ACL).
|
||||||
|
|
||||||
drop_acl_() ->
|
drop_acl() ->
|
||||||
{ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?POOL})),
|
{ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?POOL})),
|
||||||
{ok, [], []}= epgsql:squery(Pid, ?DROP_ACL_TABLE).
|
{ok, [], []}= epgsql:squery(Pid, ?DROP_ACL_TABLE).
|
||||||
|
|
||||||
init_auth_() ->
|
init_auth() ->
|
||||||
{ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?POOL})),
|
{ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?POOL})),
|
||||||
{ok, [], []} = epgsql:squery(Pid, ?DROP_AUTH_TABLE),
|
{ok, [], []} = epgsql:squery(Pid, ?DROP_AUTH_TABLE),
|
||||||
{ok, [], []} = epgsql:squery(Pid, ?CREATE_AUTH_TABLE),
|
{ok, [], []} = epgsql:squery(Pid, ?CREATE_AUTH_TABLE),
|
||||||
{ok, _} = epgsql:equery(Pid, ?INIT_AUTH).
|
{ok, _} = epgsql:equery(Pid, ?INIT_AUTH).
|
||||||
|
|
||||||
drop_auth_() ->
|
drop_auth() ->
|
||||||
{ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?POOL})),
|
{ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?POOL})),
|
||||||
{ok, [], []} = epgsql:squery(Pid, ?DROP_AUTH_TABLE).
|
{ok, [], []} = epgsql:squery(Pid, ?DROP_AUTH_TABLE).
|
|
@ -1,19 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDAzCCAeugAwIBAgIBATANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNR
|
|
||||||
TF9TZXJ2ZXJfOC4wLjE5X0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4X
|
|
||||||
DTIwMDYxMTAzMzg0NloXDTMwMDYwOTAzMzg0NlowPDE6MDgGA1UEAwwxTXlTUUxf
|
|
||||||
U2VydmVyXzguMC4xOV9BdXRvX0dlbmVyYXRlZF9DQV9DZXJ0aWZpY2F0ZTCCASIw
|
|
||||||
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANJBlAYvTQ6euY4HcSn4syH7kq9s
|
|
||||||
KcG+OMjPUrj+KFEElCzgNuIhaS0f3ORQGB1PNcvVcfdXUI3WX332gWbr9s1b7Xl1
|
|
||||||
JKJfDXs+26Cm6NhONTE3sPHnbTSmQEFb52hwAtjQmcY3IQs1AgxKFFHJfnCBEWfE
|
|
||||||
ePBQaiuYk1XDESMdWpMLrPnYQaj9MpAOUxjlmZCayzPWlF0j0IWvfsF5TqZL7tFK
|
|
||||||
9p5F/DzyZ4n1mqPVEoUmq5ZdSKj2TQkpWTMHBWHEDQQqXbyE1FGJR7zEUFeuG1KT
|
|
||||||
sVBg7iZEC93SygZTbgUZSQXIwQCsO6xZ8MB2XDJkPbWp/3Wc6c8I6P09F48CAwEA
|
|
||||||
AaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEADKz6bIpP5anp
|
|
||||||
GgLB0jkclRWuMlS4qqIt4itSsMXPJ/ezpHwECixmgW2TIQl6S1woRkUeMxhT2/Ay
|
|
||||||
Sn/7aKxuzRagyE5NEGOvrOuAP5RO2ZdNJ/X3/Rh533fK1sOTEEbSsWUvW6iSkZef
|
|
||||||
rsfZBVP32xBhRWkKRdLeLB4W99ADMa0IrTmZPCXHSSE2V4e1o6zWLXcOZeH1Qh8N
|
|
||||||
SkelBweR+8r1Fbvy1r3s7eH7DCbYoGEDVLQGOLvzHKBisQHmoDnnF5E9g1eeNRdg
|
|
||||||
o+vhOKfYCOzeNREJIqS42PHcGhdNRk90ycigPmfUJclz1mDHoMjKR2S5oosTpr65
|
|
||||||
tNPx3CL7GA==
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1,19 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDBDCCAeygAwIBAgIBAzANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNR
|
|
||||||
TF9TZXJ2ZXJfOC4wLjE5X0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4X
|
|
||||||
DTIwMDYxMTAzMzg0N1oXDTMwMDYwOTAzMzg0N1owQDE+MDwGA1UEAww1TXlTUUxf
|
|
||||||
U2VydmVyXzguMC4xOV9BdXRvX0dlbmVyYXRlZF9DbGllbnRfQ2VydGlmaWNhdGUw
|
|
||||||
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVYSWpOvCTupz82fc85Opv
|
|
||||||
EQ7rkB8X2oOMyBCpkyHKBIr1ZQgRDWBp9UVOASq3GnSElm6+T3Kb1QbOffa8GIlw
|
|
||||||
sjAueKdq5L2eSkmPIEQ7eoO5kEW+4V866hE1LeL/PmHg2lGP0iqZiJYtElhHNQO8
|
|
||||||
3y9I7cm3xWMAA3SSWikVtpJRn3qIp2QSrH+tK+/HHbE5QwtPxdir4ULSCSOaM5Yh
|
|
||||||
Wi5Oto88TZqe1v7SXC864JVvO4LuS7TuSreCdWZyPXTJFBFeCEWSAxonKZrqHbBe
|
|
||||||
CwKML6/0NuzjaQ51c2tzmVI6xpHj3nnu4cSRx6Jf9WBm+35vm0wk4pohX3ptdzeV
|
|
||||||
AgMBAAGjDTALMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAByQ5zSNeFUH
|
|
||||||
Aw7JlpZHtHaSEeiiyBHke20ziQ07BK1yi/ms2HAWwQkpZv149sjNuIRH8pkTmkZn
|
|
||||||
g8PDzSefjLbC9AsWpWV0XNV22T/cdobqLqMBDDZ2+5bsV+jTrOigWd9/AHVZ93PP
|
|
||||||
IJN8HJn6rtvo2l1bh/CdsX14uVSdofXnuWGabNTydqtMvmCerZsdf6qKqLL+PYwm
|
|
||||||
RDpgWiRUY7KPBSSlKm/9lJzA+bOe4dHeJzxWFVCJcbpoiTFs1je1V8kKQaHtuW39
|
|
||||||
ifX6LTKUMlwEECCbDKM8Yq2tm8NjkjCcnFDtKg8zKGPUu+jrFMN5otiC3wnKcP7r
|
|
||||||
O9EkaPcgYH8=
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1,27 +0,0 @@
|
||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEowIBAAKCAQEA1WElqTrwk7qc/Nn3POTqbxEO65AfF9qDjMgQqZMhygSK9WUI
|
|
||||||
EQ1gafVFTgEqtxp0hJZuvk9ym9UGzn32vBiJcLIwLninauS9nkpJjyBEO3qDuZBF
|
|
||||||
vuFfOuoRNS3i/z5h4NpRj9IqmYiWLRJYRzUDvN8vSO3Jt8VjAAN0klopFbaSUZ96
|
|
||||||
iKdkEqx/rSvvxx2xOUMLT8XYq+FC0gkjmjOWIVouTraPPE2antb+0lwvOuCVbzuC
|
|
||||||
7ku07kq3gnVmcj10yRQRXghFkgMaJyma6h2wXgsCjC+v9Dbs42kOdXNrc5lSOsaR
|
|
||||||
49557uHEkceiX/VgZvt+b5tMJOKaIV96bXc3lQIDAQABAoIBAF7yjXmSOn7h6P0y
|
|
||||||
WCuGiTLG2mbDiLJqj2LTm2Z5i+2Cu/qZ7E76Ls63TxF4v3MemH5vGfQhEhR5ZD/6
|
|
||||||
GRJ1sKKvB3WGRqjwA9gtojHH39S/nWGy6vYW/vMOOH37XyjIr3EIdIaUtFQBTSHd
|
|
||||||
Kd71niYrAbVn6fyWHolhADwnVmTMOl5OOAhCdEF4GN3b5aIhIu8BJ7EUzTtHBJIj
|
|
||||||
CAEfjZFjDs1y1cIgGFJkuIQxMfCpq5recU2qwip7YO6fk//WEjOPu7kSf5IEswL8
|
|
||||||
jg1dea9rGBV6KaD2xsgsC6Ll6Sb4BbsrHMfflG3K2Lk3RdVqqTFp1Fn1PTLQE/1S
|
|
||||||
S/SZPYECgYEA9qYcHKHd0+Q5Ty5wgpxKGa4UCWkpwvfvyv4bh8qlmxueB+l2AIdo
|
|
||||||
ZvkM8gTPagPQ3WypAyC2b9iQu70uOJo1NizTtKnpjDdN1YpDjISJuS/P0x73gZwy
|
|
||||||
gmoM5AzMtN4D6IbxXtXnPaYICvwLKU80ouEN5ZPM4/ODLUu6gsp0v2UCgYEA3Xgi
|
|
||||||
zMC4JF0vEKEaK0H6QstaoXUmw/lToZGH3TEojBIkb/2LrHUclygtONh9kJSFb89/
|
|
||||||
jbmRRLAOrx3HZKCNGUmF4H9k5OQyAIv6OGBinvLGqcbqnyNlI+Le8zxySYwKMlEj
|
|
||||||
EMrBCLmSyi0CGFrbZ3mlj/oCET/ql9rNvcK+DHECgYAEx5dH3sMjtgp+RFId1dWB
|
|
||||||
xePRgt4yTwewkVgLO5wV82UOljGZNQaK6Eyd7AXw8f38LHzh+KJQbIvxd2sL4cEi
|
|
||||||
OaAoohpKg0/Y0YMZl//rPMf0OWdmdZZs/I0fZjgZUSwWN3c59T8z7KG/RL8an9RP
|
|
||||||
S7kvN7wCttdV61/D5RR6GQKBgDxCe/WKWpBKaovzydMLWLTj7/0Oi0W3iXHkzzr4
|
|
||||||
LTgvl4qBSofaNbVLUUKuZTv5rXUG2IYPf99YqCYtzBstNDc1MiAriaBeFtzfOW4t
|
|
||||||
i6gEFtoLLbuvPc3N5Sv5vn8Ug5G9UfU3td5R4AbyyCcoUZqOFuZd+EIJSiOXfXOs
|
|
||||||
kVmBAoGBAIU9aPAqhU5LX902oq8KsrpdySONqv5mtoStvl3wo95WIqXNEsFY60wO
|
|
||||||
q02jKQmJJ2MqhkJm2EoF2Mq8+40EZ5sz8LdgeQ/M0yQ9lAhPi4rftwhpe55Ma9dk
|
|
||||||
SE9X1c/DMCBEaIjJqVXdy0/EeArwpb8sHkguVVAZUWxzD+phm1gs
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
|
@ -1,21 +0,0 @@
|
||||||
# - Connection Settings -
|
|
||||||
|
|
||||||
listen_addresses = '*'
|
|
||||||
port = 5432 # (change requires restart)
|
|
||||||
max_connections = 100 # (change requires restart)
|
|
||||||
# - SSL -
|
|
||||||
|
|
||||||
ssl = on
|
|
||||||
ssl_cert_file = '/etc/postgresql/server-cert.pem'
|
|
||||||
ssl_key_file = '/etc/postgresql/server-key.pem'
|
|
||||||
shared_buffers = 128MB # min 128kB
|
|
||||||
checkpoint_timeout = 5min # range 30s-1d
|
|
||||||
max_wal_size = 1GB
|
|
||||||
min_wal_size = 80MB
|
|
||||||
datestyle = 'iso, mdy'
|
|
||||||
timezone = 'Etc/UTC'
|
|
||||||
lc_messages = 'en_US.utf8' # locale for system error message
|
|
||||||
lc_monetary = 'en_US.utf8' # locale for monetary formatting
|
|
||||||
lc_numeric = 'en_US.utf8' # locale for number formatting
|
|
||||||
lc_time = 'en_US.utf8' # locale for time formatting
|
|
||||||
default_text_search_config = 'pg_catalog.english'
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDYzCCAksCCQC7J1oPkDz7vTANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMC
|
||||||
|
Q0ExGTAXBgNVBAgMEEJyaXRpc2ggQ29sdW1iaWExDjAMBgNVBAcMBUNvbW94MRQw
|
||||||
|
EgYDVQQKDAtUaGVCcmFpbi5jYTEUMBIGA1UEAwwLdGhlYnJhaW4uY2ExHzAdBgkq
|
||||||
|
hkiG9w0BCQEWEGluZm9AdGhlYnJhaW4uY2EwHhcNMjEwMTEzMDkwNzM2WhcNMjEw
|
||||||
|
MjEyMDkwNzM2WjBhMQswCQYDVQQGEwJDQTEZMBcGA1UECAwQQnJpdGlzaCBDb2x1
|
||||||
|
bWJpYTEOMAwGA1UEBwwFQ29tb3gxFDASBgNVBAoMC1RoZUJyYWluLmNhMREwDwYD
|
||||||
|
VQQDDAh3d3ctZGF0YTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJv9
|
||||||
|
yO5JGKBl+7w0HGkRDIPZ5Ku3lIAzB4ThszRHBqll7VjlTz+q16OQOONqeHBuxPjj
|
||||||
|
11WMXD2KnfYZW2ZWd0U8FKzuIGOCStGbSUi2hC0owp+KkJcDujfIafXQnAa0fUiS
|
||||||
|
FBB5iG98vm3QI4gv9135LgnO5oHopH6oZ/t0Id1LzFhp2sdhebdtczmImpo+nt7v
|
||||||
|
fduapptuIJ20ThdAvo3MlYoAhivsvJKntlWPAwPMQdyezww/q7T5Y8DCyJJTydr5
|
||||||
|
PrMz9S/WQTkj/G0y4dZgQonG5r0d1Nf+rwkn78DdXGktVDMBBP41+VWnEDBCTlgS
|
||||||
|
FjQEY6Izaof8s8q8K2UCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAdlAQkumOAKbQ
|
||||||
|
SW5gtkHgKyIQyfwk9maKqKccK04WlNk1t1jsvk7kaOEHr3t7YG28yKqicGHAcfFf
|
||||||
|
i/RU51v2GJVzWCbzkAAH/zNgDcYnYk6sn54YcuBzrPliVH1xxmZy/52+huTxy8Vd
|
||||||
|
3nmCjdYR/I764rd8gkRK+aHaUTLyitzX1kW90LtXonKY72CNZVXHEBom3XM/a6ff
|
||||||
|
ilybDloNVTfHstnfsnHHyNYn0SfapqXxPCO+FL9hQjlztUBZryRdS0nq66hB2GSB
|
||||||
|
CEst/vtNGo/2aa1Vw4bKl2oGepjKNzxp0ZTTVuIcwGzV6oKIsx1ZnWE3gQLEH/TX
|
||||||
|
dzMzesBayA==
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,17 @@
|
||||||
|
-----BEGIN CERTIFICATE REQUEST-----
|
||||||
|
MIICpjCCAY4CAQAwYTELMAkGA1UEBhMCQ0ExGTAXBgNVBAgMEEJyaXRpc2ggQ29s
|
||||||
|
dW1iaWExDjAMBgNVBAcMBUNvbW94MRQwEgYDVQQKDAtUaGVCcmFpbi5jYTERMA8G
|
||||||
|
A1UEAwwId3d3LWRhdGEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCb
|
||||||
|
/cjuSRigZfu8NBxpEQyD2eSrt5SAMweE4bM0RwapZe1Y5U8/qtejkDjjanhwbsT4
|
||||||
|
49dVjFw9ip32GVtmVndFPBSs7iBjgkrRm0lItoQtKMKfipCXA7o3yGn10JwGtH1I
|
||||||
|
khQQeYhvfL5t0COIL/dd+S4JzuaB6KR+qGf7dCHdS8xYadrHYXm3bXM5iJqaPp7e
|
||||||
|
733bmqabbiCdtE4XQL6NzJWKAIYr7LySp7ZVjwMDzEHcns8MP6u0+WPAwsiSU8na
|
||||||
|
+T6zM/Uv1kE5I/xtMuHWYEKJxua9HdTX/q8JJ+/A3VxpLVQzAQT+NflVpxAwQk5Y
|
||||||
|
EhY0BGOiM2qH/LPKvCtlAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAN6Q8MEDx
|
||||||
|
g5xlpYB/fFmagpe15+G2QbqVf2mH1a4aBcBns4jMMqNidi4gyjGfzvNxX77R6KcI
|
||||||
|
AfcxENRVDYJbhAgEQ96jv4jv5pEMuyvQ8VLhn9AOXCaK/VHxbYlOiM7tfFtEDrrB
|
||||||
|
wTn8FvoEwjehfsSX2dWiwcUK4SPPeuklE/EGjRgoVCwg8EqWzf1fn+tzME8OpnRQ
|
||||||
|
I8coyALF6ANehvP7ADV3m5iOOaNhfnqmqGBEwjB3TTvE1gZ4UvAyl75bi+Zh3Osn
|
||||||
|
qemyxocp/ML4o6d/F+nKIZOe6309V2nyrY6RSd2fBCrhYj2rKTbrGTZrpKXeAhtI
|
||||||
|
jMivnjCK+WNHpQ==
|
||||||
|
-----END CERTIFICATE REQUEST-----
|
|
@ -0,0 +1,27 @@
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEowIBAAKCAQEAm/3I7kkYoGX7vDQcaREMg9nkq7eUgDMHhOGzNEcGqWXtWOVP
|
||||||
|
P6rXo5A442p4cG7E+OPXVYxcPYqd9hlbZlZ3RTwUrO4gY4JK0ZtJSLaELSjCn4qQ
|
||||||
|
lwO6N8hp9dCcBrR9SJIUEHmIb3y+bdAjiC/3XfkuCc7mgeikfqhn+3Qh3UvMWGna
|
||||||
|
x2F5t21zOYiamj6e3u9925qmm24gnbROF0C+jcyVigCGK+y8kqe2VY8DA8xB3J7P
|
||||||
|
DD+rtPljwMLIklPJ2vk+szP1L9ZBOSP8bTLh1mBCicbmvR3U1/6vCSfvwN1caS1U
|
||||||
|
MwEE/jX5VacQMEJOWBIWNARjojNqh/yzyrwrZQIDAQABAoIBAAOicycSLu+10Jq/
|
||||||
|
ABZ2njsIPaq+mUgvaDJxa9KBASe7Rz92AFW0blfSSXELDwlXm2FNNbw5jACnFS0h
|
||||||
|
xB5rT1Yeo0CwP7Lx2zptCtUV45iFxZsgCGRsYs9f7RAcLzZ8yBqDxNHpcwNd/bXj
|
||||||
|
TqCitXnMD4WM+5P1TrfgxqN2Pj/Atg8w/4dP7KcFcTzcZzIz5rr3NTyjsrLdiFis
|
||||||
|
sR+7m7Qu4PyEfrDpR9Np111nQqVJ1bpt9qt/hv318FaBnpNY6MMBaSni99mvMXSd
|
||||||
|
SwHn3gnfHREWcNSLGA9gjEQmyIPHpV9T6SJ/zyr++6y8QCq4DiSP36A9zeA1XThP
|
||||||
|
YEIsWxUCgYEAyLppQerpOT2CnbTbKO/9rGwlbf8FT2GWFcPBtUm0lp21/C32BX+H
|
||||||
|
jNCmQsE1pZ6+sqv2mb1onr6Xl9cSEt6KsI1EJtFFR9Lnvqqu+JKo31U94z2yTqgv
|
||||||
|
sc+qMl7shy1kja8T5NaRc++UkCVzVNsnFB9torIaqQwY9IRdRwmYjisCgYEAxvHR
|
||||||
|
MwvWpOg25zz75OfupIOQhj9W6yphpY5/yoYBms/4OeabJhMrOV142s9souCHmuGU
|
||||||
|
EtzOQC5jbEc+3MUjx1ZlboHY7UuoEu87kykFEs9mnaD+T34PEAJcQjSzqzS5KMJE
|
||||||
|
Ro275xf+V/e3hS/Z3hQXmDQNQDNRYMcAZfTW9K8CgYBkHITOuYikYcc5PLBplHhi
|
||||||
|
fHWWjLBrTPJ73GxKLH6C+BmBsrKXP2mtk4q4lIBbH/dgSV/ugYciVVBqDHwZKSDm
|
||||||
|
uS4aZhk1nzyx3ZLyqsLK0ErTgTvi+wL+neH2yV0SdlNGTuGPKmzU89KWqfcBhWPS
|
||||||
|
J3KYyFd/pGb13OZgvap2jQKBgBXCXR84LEHdJCQmh2aB95gGy8fjJZ6TBBsXeuKr
|
||||||
|
xYEpPf0XO+DuN8wObSmBhmBKLorCIW/utqBOcpFlOXrsFP24dV+g1BkgLUHk6J8v
|
||||||
|
3V4xUQfsk+Qd5YfaujyDhyMyoQ3UMaOF3QdpmGgGsAvhL/MaP3pmNwzOkBgFrAV6
|
||||||
|
wggBAoGBAMflqy2pfqGhaj9S6qZ3K95h7NdCUikdQzqmgbNtOHaZ2kHByyYtOPLB
|
||||||
|
1VnuDRQiacmum+fTZa6wNmvp2FWg+uxI/aspfF6SdPfGpyPrG5D+ITtqKF2xieK+
|
||||||
|
XpzehKTrTuYQRAVhmWbhpuyahYnQyd/MrsCMGzUfAJtM7l5vKa2O
|
||||||
|
-----END RSA PRIVATE KEY-----
|
|
@ -0,0 +1,21 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDiDCCAnACCQCCsPcIlZO4TDANBgkqhkiG9w0BAQsFADCBhTELMAkGA1UEBhMC
|
||||||
|
Q0ExGTAXBgNVBAgMEEJyaXRpc2ggQ29sdW1iaWExDjAMBgNVBAcMBUNvbW94MRQw
|
||||||
|
EgYDVQQKDAtUaGVCcmFpbi5jYTEUMBIGA1UEAwwLdGhlYnJhaW4uY2ExHzAdBgkq
|
||||||
|
hkiG9w0BCQEWEGluZm9AdGhlYnJhaW4uY2EwHhcNMjEwMTEzMDkwNDIyWhcNMzEw
|
||||||
|
MTExMDkwNDIyWjCBhTELMAkGA1UEBhMCQ0ExGTAXBgNVBAgMEEJyaXRpc2ggQ29s
|
||||||
|
dW1iaWExDjAMBgNVBAcMBUNvbW94MRQwEgYDVQQKDAtUaGVCcmFpbi5jYTEUMBIG
|
||||||
|
A1UEAwwLdGhlYnJhaW4uY2ExHzAdBgkqhkiG9w0BCQEWEGluZm9AdGhlYnJhaW4u
|
||||||
|
Y2EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2YWuwplM2Hc5tzBMu
|
||||||
|
covW9nwZ8iNEFo5pbDc8710pmnkF+wsDztLy4afJe6OeVHyCgQxmE+rTZcoWbvoh
|
||||||
|
pxW3Zy/8es4My07RKHqI3NYadThUvDsmI10cF3tJbhOZaIrMaExLGookZYKwbNAy
|
||||||
|
7yJ1+MLyNCuFFsaOiNNxHOjH/InKSzEuGSLV68tdC7Pe+uanBcC7RKhOrjUC6Occ
|
||||||
|
naHPC+a/YMyRYx29T8CfkCBB7N6WanWylFN/1RBmAgq++kDflSaF9k+Zdl6I4jiF
|
||||||
|
mCPGS0k+AMre4PuAKOZOZOwhF0sWlXIxH6zPm9w0bSYdTLBupL846RTO72NtNP+X
|
||||||
|
KX5DAgMBAAEwDQYJKoZIhvcNAQELBQADggEBACXXFws+h+Zo9HsxW3BWpl2JU5u6
|
||||||
|
KyfbLQt4kSN/gqltd4s84Q8c4z2jNdI0t8Oh5dXTjbLCpFjzuF2tdMtOWeYBCdsQ
|
||||||
|
4NJ69RrwkFdsSPxDPhSE0WGXPaOBaA92wJjTkVf+UYIek1ozeyWwFm1LPiZVei00
|
||||||
|
mwDVgbAbIEb8cf6OqJrl2r5PMBCLWBwwg5aca3fe6TopJhyPA//DZDRPA5xzKb9e
|
||||||
|
PHUgF3apbcWxuxm8Mts4bAq8BcKoEvLHYWJ4fEWQvXPP7q1jYC3TkpSt5n3FQZTe
|
||||||
|
nLyQ+RNzsEHzmyOtTSa0Q+5KVluO1TE3ifpv8737pTLdY8t2waBamoboCu8=
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1 @@
|
||||||
|
BB275A0F903CFBBD
|
|
@ -1,19 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDBDCCAeygAwIBAgIBAjANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNR
|
|
||||||
TF9TZXJ2ZXJfOC4wLjE5X0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4X
|
|
||||||
DTIwMDYxMTAzMzg0NloXDTMwMDYwOTAzMzg0NlowQDE+MDwGA1UEAww1TXlTUUxf
|
|
||||||
U2VydmVyXzguMC4xOV9BdXRvX0dlbmVyYXRlZF9TZXJ2ZXJfQ2VydGlmaWNhdGUw
|
|
||||||
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCcEnEm5hqP1EbEJycOz8Ua
|
|
||||||
NWp29QdpFUzTWhkKGhVXk+0msmNTw4NBAFB42moY44OU8wvDideOlJNhPRWveD8z
|
|
||||||
G2lxzJA91p0UK4et8ia9MmeuCGhdC9jxJ8X69WNlUiPyy0hI/ZsqRq9Z0C2eW0iL
|
|
||||||
JPXsy4X8Xpw3SFwoXf5pR9RFY5Pb2tuyxqmSestu2VXT/NQjJg4CVDR3mFcHPXZB
|
|
||||||
4elRzH0WshExEGkgy0bg20MJeRc2Qdb5Xx+EakbmwroDWaCn3NSGqQ7jv6Vw0doy
|
|
||||||
TGvS6h6RHBxnyqRfRgKGlCoOMG9/5+rFJC00QpCUG2vHXHWGoWlMlJ3foN7rj5v9
|
|
||||||
AgMBAAGjDTALMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAJ5zt2rj4Ag6
|
|
||||||
zpN59AWC1Fur8g8l41ksHkSpKPp+PtyO/ngvbMqBpfmK1e7JCKZv/68QXfMyWWAI
|
|
||||||
hwalqZkXXWHKjuz3wE7dE25PXFXtGJtcZAaj10xt98fzdqt8lQSwh2kbfNwZIz1F
|
|
||||||
sgAStgE7+ZTcqTgvNB76Os1UK0to+/P0VBWktaVFdyub4Nc2SdPVnZNvrRBXBwOD
|
|
||||||
3V8ViwywDOFoE7DvCvwx/SVsvoC0Z4j3AMMovO6oHicP7uU83qsQgm1Qru3YeoLR
|
|
||||||
+DoVi7IPHbWvN7MqFYn3YjNlByO2geblY7MR0BlqbFlmFrqLsUfjsh2ys7/U/knC
|
|
||||||
dN/klu446fI=
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1,27 +0,0 @@
|
||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEowIBAAKCAQEAnBJxJuYaj9RGxCcnDs/FGjVqdvUHaRVM01oZChoVV5PtJrJj
|
|
||||||
U8ODQQBQeNpqGOODlPMLw4nXjpSTYT0Vr3g/MxtpccyQPdadFCuHrfImvTJnrgho
|
|
||||||
XQvY8SfF+vVjZVIj8stISP2bKkavWdAtnltIiyT17MuF/F6cN0hcKF3+aUfURWOT
|
|
||||||
29rbssapknrLbtlV0/zUIyYOAlQ0d5hXBz12QeHpUcx9FrIRMRBpIMtG4NtDCXkX
|
|
||||||
NkHW+V8fhGpG5sK6A1mgp9zUhqkO47+lcNHaMkxr0uoekRwcZ8qkX0YChpQqDjBv
|
|
||||||
f+fqxSQtNEKQlBtrx1x1hqFpTJSd36De64+b/QIDAQABAoIBAFiah66Dt9SruLkn
|
|
||||||
WR8piUaFyLlcBib8Nq9OWSTJBhDAJERxxb4KIvvGB+l0ZgNXNp5bFPSfzsZdRwZP
|
|
||||||
PX5uj8Kd71Dxx3mz211WESMJdEC42u+MSmN4lGLkJ5t/sDwXU91E1vbJM0ve8THV
|
|
||||||
4/Ag9qA4DX2vVZOeyqT/6YHpSsPNZplqzrbAiwrfHwkctHfgqwOf3QLfhmVQgfCS
|
|
||||||
VwidBldEUv2whSIiIxh4Rv5St4kA68IBCbJxdpOpyuQBkk6CkxZ7VN9FqOuSd4Pk
|
|
||||||
Wm7iWyBMZsCmELZh5XAXld4BEt87C5R4CvbPBDZxAv3THk1DNNvpy3PFQfwARRFb
|
|
||||||
SAToYMECgYEAyL7U8yxpzHDYWd3oCx6vTi9p9N/z0FfAkWrRF6dm4UcSklNiT1Aq
|
|
||||||
EOnTA+SaW8tV3E64gCWcY23gNP8so/ZseWj6L+peHwtchaP9+KB7yGw2A+05+lOx
|
|
||||||
VetLTjAOmfpiUXFe5w1q4C1RGhLjZjjzW+GvwdAuchQgUEFaomrV+PUCgYEAxwfH
|
|
||||||
cmVGFbAktcjU4HSRjKSfawCrut+3YUOLybyku3Q/hP9amG8qkVTFe95CTLjLe2D0
|
|
||||||
ccaTTpofFEJ32COeck0g0Ujn/qQ+KXRoauOYs4FB1DtqMpqB78wufWEUpDpbd9/h
|
|
||||||
J+gJdC/IADd4tJW9zA92g8IA7ZtFmqDtiSpQ0ekCgYAQGkaorvJZpN+l7cf0RGTZ
|
|
||||||
h7IfI2vCVZer0n6tQA9fmLzjoe6r4AlPzAHSOR8sp9XeUy43kUzHKQQoHCPvjw/K
|
|
||||||
eWJAP7OHF/k2+x2fOPhU7mEy1W+mJdp+wt4Kio5RSaVjVQ3AyPG+w8PSrJszEvRq
|
|
||||||
dWMMz+851WV2KpfjmWBKlQKBgQC++4j4DZQV5aMkSKV1CIZOBf3vaIJhXKEUFQPD
|
|
||||||
PmB4fBEjpwCg+zNGp6iktt65zi17o8qMjrb1mtCt2SY04eD932LZUHNFlwcLMmes
|
|
||||||
Ad+aiDLJ24WJL1f16eDGcOyktlblDZB5gZ/ovJzXEGOkLXglosTfo77OQculmDy2
|
|
||||||
/UL2WQKBgGeKasmGNfiYAcWio+KXgFkHXWtAXB9B91B1OFnCa40wx+qnl71MIWQH
|
|
||||||
PQ/CZFNWOfGiNEJIZjrHsfNJoeXkhq48oKcT0AVCDYyLV0VxDO4ejT95mGW6njNd
|
|
||||||
JpvmhwwAjOvuWVr0tn4iXlSK8irjlJHmwcRjLTJq97vE9fsA2MjI
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDiDCCAnACCQCCsPcIlZO4TDANBgkqhkiG9w0BAQsFADCBhTELMAkGA1UEBhMC
|
||||||
|
Q0ExGTAXBgNVBAgMEEJyaXRpc2ggQ29sdW1iaWExDjAMBgNVBAcMBUNvbW94MRQw
|
||||||
|
EgYDVQQKDAtUaGVCcmFpbi5jYTEUMBIGA1UEAwwLdGhlYnJhaW4uY2ExHzAdBgkq
|
||||||
|
hkiG9w0BCQEWEGluZm9AdGhlYnJhaW4uY2EwHhcNMjEwMTEzMDkwNDIyWhcNMzEw
|
||||||
|
MTExMDkwNDIyWjCBhTELMAkGA1UEBhMCQ0ExGTAXBgNVBAgMEEJyaXRpc2ggQ29s
|
||||||
|
dW1iaWExDjAMBgNVBAcMBUNvbW94MRQwEgYDVQQKDAtUaGVCcmFpbi5jYTEUMBIG
|
||||||
|
A1UEAwwLdGhlYnJhaW4uY2ExHzAdBgkqhkiG9w0BCQEWEGluZm9AdGhlYnJhaW4u
|
||||||
|
Y2EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2YWuwplM2Hc5tzBMu
|
||||||
|
covW9nwZ8iNEFo5pbDc8710pmnkF+wsDztLy4afJe6OeVHyCgQxmE+rTZcoWbvoh
|
||||||
|
pxW3Zy/8es4My07RKHqI3NYadThUvDsmI10cF3tJbhOZaIrMaExLGookZYKwbNAy
|
||||||
|
7yJ1+MLyNCuFFsaOiNNxHOjH/InKSzEuGSLV68tdC7Pe+uanBcC7RKhOrjUC6Occ
|
||||||
|
naHPC+a/YMyRYx29T8CfkCBB7N6WanWylFN/1RBmAgq++kDflSaF9k+Zdl6I4jiF
|
||||||
|
mCPGS0k+AMre4PuAKOZOZOwhF0sWlXIxH6zPm9w0bSYdTLBupL846RTO72NtNP+X
|
||||||
|
KX5DAgMBAAEwDQYJKoZIhvcNAQELBQADggEBACXXFws+h+Zo9HsxW3BWpl2JU5u6
|
||||||
|
KyfbLQt4kSN/gqltd4s84Q8c4z2jNdI0t8Oh5dXTjbLCpFjzuF2tdMtOWeYBCdsQ
|
||||||
|
4NJ69RrwkFdsSPxDPhSE0WGXPaOBaA92wJjTkVf+UYIek1ozeyWwFm1LPiZVei00
|
||||||
|
mwDVgbAbIEb8cf6OqJrl2r5PMBCLWBwwg5aca3fe6TopJhyPA//DZDRPA5xzKb9e
|
||||||
|
PHUgF3apbcWxuxm8Mts4bAq8BcKoEvLHYWJ4fEWQvXPP7q1jYC3TkpSt5n3FQZTe
|
||||||
|
nLyQ+RNzsEHzmyOtTSa0Q+5KVluO1TE3ifpv8737pTLdY8t2waBamoboCu8=
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,27 @@
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEowIBAAKCAQEAtmFrsKZTNh3ObcwTLnKL1vZ8GfIjRBaOaWw3PO9dKZp5BfsL
|
||||||
|
A87S8uGnyXujnlR8goEMZhPq02XKFm76IacVt2cv/HrODMtO0Sh6iNzWGnU4VLw7
|
||||||
|
JiNdHBd7SW4TmWiKzGhMSxqKJGWCsGzQMu8idfjC8jQrhRbGjojTcRzox/yJyksx
|
||||||
|
Lhki1evLXQuz3vrmpwXAu0SoTq41AujnHJ2hzwvmv2DMkWMdvU/An5AgQezelmp1
|
||||||
|
spRTf9UQZgIKvvpA35UmhfZPmXZeiOI4hZgjxktJPgDK3uD7gCjmTmTsIRdLFpVy
|
||||||
|
MR+sz5vcNG0mHUywbqS/OOkUzu9jbTT/lyl+QwIDAQABAoIBAA6UVR6G/UnrMhBW
|
||||||
|
6wWghItHov4T/Du6LeJBk1zcqa7kuV4ABo5kXzqpTVdu+dJzYIyyMkKKvw/tKC2I
|
||||||
|
65f7GmJR7mUZkBU3v3I68Si1tqvgyQMFFRlkZFIVknZ5RTnTQJ08jTTHx1lHgB4I
|
||||||
|
ZNBdi3ywySzBfOUjv/Wu/HAjZnxuEh2guBpRMZdwQwZLXr2koDa5inL3IwJrA4Ir
|
||||||
|
QzpZ0y6ql3A0tw7jAw36G1AKyyz74aFwJ0I8U8w+2Uk4iX5hcKGA8mFq4lyO4/3+
|
||||||
|
7W2Z4V8cQzwMq2SMixI0Omxlc2BJUi9j17Ey//5dAXyPaG8QI1kzeL/3Gbs8YBMq
|
||||||
|
ekN8AZECgYEA5YxcFIVv3yO+ARNWUHovrsMuf9ElhyRuZd0I2+vjrq1b9zQsSy2d
|
||||||
|
PsyYWD17lO/GDmpTzZOdVsYtZHi+EiXmQnkzLJ4m2nlc7W4annWlbzlQMEn6vAji
|
||||||
|
l9bSHJXXiiIB7X/oHpDUdsnJp/uyAJppmnVLbSBboNCrG4Mf5cJqOnsCgYEAy2We
|
||||||
|
scp19h4UEKAU0Yh+5jh8W4VVtlISkH64vMgz/JZWXMPt1bM5C/5j+3UVUL5VmFqF
|
||||||
|
J1g0gXYkTGTL0+entb3SUiL42zrp3rZ3GgMU6V+aktq3dmri5bOifzihuLHLgjO5
|
||||||
|
u/MJPBzvFxIiJxnNBybNLijIZfPm+9roUfpcBNkCgYBGE3Zc0WuYnEm5/FRCVzrN
|
||||||
|
SEqevJOPUSDeuf6lXLryLXxA2E2ZWcCCVmU/su1SR2yYI/+XZ7QFtJRQ8sdbtPQ5
|
||||||
|
YNStj05fLeOfnBhGPbYWYVHInB0OYEwEfJFCJsBZLA6YmY6cHiyuYuXMAXuS0ZDh
|
||||||
|
lWNEWjd+vZUu3fXT52kUlwKBgDgq/eH3GRA4Si41JsqeOPz2iFD1xy+sBnhkpjtr
|
||||||
|
xf9wvLStXpZvAcfwHkgokxRTG2wRQ0gUMZu2tltqUmdYR5YGr3gDNFnGMSNRnB5Q
|
||||||
|
z4uK3TLEt3k6FyJ7stoTF4Xbg2mXQylF+jzheJ0UYt4NX/MjofGnTX/qFNVkJFfP
|
||||||
|
HW4xAoGBAMBb9cXTpzOMiMcSdQRlaLttV1p05pqxTgQNEQD8HB+lkx4AGnnHvtxW
|
||||||
|
XQJvPumtqdCEpfe4kaqLip8T+67sGfcDVQMogJc/tpvZ0AN4FuViFsf/YDuTPXEp
|
||||||
|
whMldPHtusbRP2fk/JFq4Ak0Xz2wAI1iMD3qfBeW6eJpvRllUo69
|
||||||
|
-----END RSA PRIVATE KEY-----
|
Loading…
Reference in New Issue