Compare commits
7 Commits
main
...
d7515a1ff5
Author | SHA1 | Date | |
---|---|---|---|
d7515a1ff5 | |||
47dd3267f5 | |||
17161c39ca | |||
979027e192 | |||
f1f28a80f1 | |||
8ae8a88684 | |||
f7a618a10a |
@ -1,5 +1,9 @@
|
|||||||
base_domain: "dev.local"
|
base_domain: "dev.local"
|
||||||
self_signed: false
|
self_signed: true
|
||||||
|
generate_cert:
|
||||||
|
# only copy existing if both are false
|
||||||
|
root: false
|
||||||
|
wildcard: false
|
||||||
admin_email: "lukas@kucharczyk.xyz"
|
admin_email: "lukas@kucharczyk.xyz"
|
||||||
server_ip: "192.168.0.104"
|
server_ip: "192.168.0.104"
|
||||||
data_folder: "/home/vagrant/docker-data"
|
data_folder: "/home/vagrant/docker-data"
|
||||||
|
20
roles/nginx/files/dev.local.crt
Normal file
20
roles/nginx/files/dev.local.crt
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDNTCCAh0CFA+NVMwkGKvL8NbRd7waRkEHYcf/MA0GCSqGSIb3DQEBCwUAMFUx
|
||||||
|
CzAJBgNVBAYTAkNaMQ8wDQYDVQQHDAZQcmFndWUxEDAOBgNVBAMMB0hvbWVsYWIx
|
||||||
|
IzAhBgkqhkiG9w0BCQEWFGx1a2FzQGt1Y2hhcmN6eWsueHl6MB4XDTIxMDUxMzIy
|
||||||
|
MDA1NloXDTMxMDUxMTIyMDA1NlowWTELMAkGA1UEBhMCQ1oxDzANBgNVBAcMBlBy
|
||||||
|
YWd1ZTEUMBIGA1UEAwwLKi5kZXYubG9jYWwxIzAhBgkqhkiG9w0BCQEWFGx1a2Fz
|
||||||
|
QGt1Y2hhcmN6eWsueHl6MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
||||||
|
0/jsQ6h6PodfYxTSAwUIY9+AXQ519Km4YNnxH5Ma3AjFH0asJyYR/CC6Zx4VOI1c
|
||||||
|
ZvelLHH/fonuLygSVc9zG5e3k62m6WHxZDDD0GidbmsgPMfPK5r1m9B2McbqWlVD
|
||||||
|
R0Y7FuGCQb0PqClJu86knw2kaYaFHrMVyBgZXAqXfEYIVJJ5SL8Yzo/lyoSHwlmk
|
||||||
|
lZ3LjnvlJ9IAOVpoWiuxmCzzEpGWQyve47HgyN5Q6Um8C0hgwj9fbA9L8Ns8PKt3
|
||||||
|
y+ypFJMO8gXsup4h7VhRz8KpqdBpo9ghMsvxTAUiPGkerUEjqiIFK2Iz1bZ8yL5d
|
||||||
|
/Gh0EM6ii2FSwsTpVzJ0xQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBjaFbfxfut
|
||||||
|
blYjPZ3mn1hbo3w5kqo9Ly7OLU4mCoK/DFzUBJbIj471B+7cK8hjmvzDUCQxRQWx
|
||||||
|
pBOBzOR4VSF4Z/xKKc1tWQJSC1r5JP0qmkYrmgIgLVi/gdZVYc7qLQbAlJhIOqD1
|
||||||
|
vQnXrBRqUm7J2ThqFdBuILvR20Pkoa2GnH3ufnQvdSs4WPWocR+fKYbx/DKjpAbU
|
||||||
|
GWg1HnL+7PiflV1HDAkc2kiNQy70/bxcQq1HvQRxjm5C15ojdVzyqPy+CwQo+JOd
|
||||||
|
IdueOS9mM6CQATnwQxK0XKkyH1yI9M83ahQbArwWTzejRWJQd0xYWdQgiEr4aWWV
|
||||||
|
DONUin6JUgVV
|
||||||
|
-----END CERTIFICATE-----
|
17
roles/nginx/files/dev.local.csr
Normal file
17
roles/nginx/files/dev.local.csr
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
-----BEGIN CERTIFICATE REQUEST-----
|
||||||
|
MIICnjCCAYYCAQAwWTELMAkGA1UEBhMCQ1oxDzANBgNVBAcMBlByYWd1ZTEUMBIG
|
||||||
|
A1UEAwwLKi5kZXYubG9jYWwxIzAhBgkqhkiG9w0BCQEWFGx1a2FzQGt1Y2hhcmN6
|
||||||
|
eWsueHl6MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0/jsQ6h6Podf
|
||||||
|
YxTSAwUIY9+AXQ519Km4YNnxH5Ma3AjFH0asJyYR/CC6Zx4VOI1cZvelLHH/fonu
|
||||||
|
LygSVc9zG5e3k62m6WHxZDDD0GidbmsgPMfPK5r1m9B2McbqWlVDR0Y7FuGCQb0P
|
||||||
|
qClJu86knw2kaYaFHrMVyBgZXAqXfEYIVJJ5SL8Yzo/lyoSHwlmklZ3LjnvlJ9IA
|
||||||
|
OVpoWiuxmCzzEpGWQyve47HgyN5Q6Um8C0hgwj9fbA9L8Ns8PKt3y+ypFJMO8gXs
|
||||||
|
up4h7VhRz8KpqdBpo9ghMsvxTAUiPGkerUEjqiIFK2Iz1bZ8yL5d/Gh0EM6ii2FS
|
||||||
|
wsTpVzJ0xQIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAD9stDlWNlzkGFsTJc36
|
||||||
|
CfT7/qovjmxWGJLsuczU7oBwf6nwPuV0W3fUvl2tqz5Nnff4wOnKkRlrR54R0Obl
|
||||||
|
6KgebvwjACypYkFcL075qrdBpm52yiDWfE7ZOAU7tRCZ7DtMeEtSx/g/03bVp0n1
|
||||||
|
7rZm2eeiXB/m7VqabxK1eRwnDktXGuRWpRK7OpQQ0UuKSTlRsI8o4N4r0af8DInP
|
||||||
|
C3mWATJ56dsWaVhW1fBvSFAjrdho1vPadyC2Lb71MyM1H8IQSW8pQlyvAOlw+JVE
|
||||||
|
iEaTYt7miCODHzKSMv73Or2XGYMEFtoLDot3B+rBQun8TQwujDrMA7KU25NcgfQ+
|
||||||
|
d+Y=
|
||||||
|
-----END CERTIFICATE REQUEST-----
|
28
roles/nginx/files/dev.local.key
Normal file
28
roles/nginx/files/dev.local.key
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDT+OxDqHo+h19j
|
||||||
|
FNIDBQhj34BdDnX0qbhg2fEfkxrcCMUfRqwnJhH8ILpnHhU4jVxm96Uscf9+ie4v
|
||||||
|
KBJVz3Mbl7eTrabpYfFkMMPQaJ1uayA8x88rmvWb0HYxxupaVUNHRjsW4YJBvQ+o
|
||||||
|
KUm7zqSfDaRphoUesxXIGBlcCpd8RghUknlIvxjOj+XKhIfCWaSVncuOe+Un0gA5
|
||||||
|
WmhaK7GYLPMSkZZDK97jseDI3lDpSbwLSGDCP19sD0vw2zw8q3fL7KkUkw7yBey6
|
||||||
|
niHtWFHPwqmp0Gmj2CEyy/FMBSI8aR6tQSOqIgUrYjPVtnzIvl38aHQQzqKLYVLC
|
||||||
|
xOlXMnTFAgMBAAECggEBAMuHAOPdyrJrLM1n2lYH6QxsN0YicmOe6mgkGv8kMe//
|
||||||
|
g7YKF5XnWfFqQ1BrdBi+snAzbCcGtjj7mvUwVpqJ+44M2Lk1TURdRHfc0sczC6ZP
|
||||||
|
ub5iY6sMuLMJL9OPmMlvgI/ZATdxA663J2dhbWikezA02x5viTX24f0kFoVnrhgl
|
||||||
|
LYSVOVOl94vk1jByJVtJeusd5JwF6JZ6Ws8My7Fzh3hHMepcB5uVfYr20O7FZHEX
|
||||||
|
DAlVN7MSh7nM0a4WsZPg5S5KLMZlhTyqosRwx9n5Y08S8BRYMLNyetRICDe6MIn9
|
||||||
|
cJllAR/W51WsvmH/LHmLTRA6eC4rxO744z0DDpGuc6kCgYEA+44eS79TCRG6zQjo
|
||||||
|
Jt2VMcdUpqTwcXWwllpZh071SV3wMQTlzRwAM8QdPga5O0qYe/UBVxx4dh5MinpN
|
||||||
|
TnGP+4sBlME2Q8iUml5jNU8Fwuo1XZWkdrTmeJl/DyJ2iqokPyJSp/iFhFWuNhJS
|
||||||
|
eNgmu7gvLPMhQjdfTDsom4OSAt8CgYEA17fBltxcWmQV6XxkVbVLnrdesvGv8zGg
|
||||||
|
VIod02wW39G0WR5FEffu+TEOcsdkQGqH9gCUkyEomGzZKGDmzCu+PpLjb1KIBkf+
|
||||||
|
8tt4o4Za91XgOm79m2sP5qczwXqUOsgRZBNPTDrbwIA4Y4pMYoxwx4aQF9DLl0Vt
|
||||||
|
jqNhHtn2ANsCgYA0LcSG/cahiPXwdbqB5VB/JNOgRXJCdqEMbu1HLc+fSkb6RAPO
|
||||||
|
ydIY6sMODKL7c3uxqp5+jT9HcP17c+b5MIEnMiw/yNwSr1ZztsRpWFzfk2lCYjnd
|
||||||
|
DaUIuv4qC4H/PU+LcPkoMlqvmn4qZR6KRnuyUIAomL37WDUCQPspVt9AjQKBgQDB
|
||||||
|
1euNbLtLuc16vXzHCx5FIw5kCwqIo5om/OiqFuFDAwNkZO+5oqjIoA0UlBiATXmY
|
||||||
|
UpMu1cfNl1lWkCQzaEcNoR3e5TE3O7Bad12iytKolzDiMOOPqRdjsfCutT/Gxgni
|
||||||
|
e/twSx81jcGdqCLVFs8sarzFuaeHaSp11lcpyr7jqwKBgQDWL0Dx6/ybyma/NcWD
|
||||||
|
liF6OMkxwvA58c7eoG2pOSENxMhe5rA9uzaYj0jjLCEIwF5X5uI5vsnnl1vKtfA4
|
||||||
|
YAly4qve/lhCqM9YvRi1l2Oi5aeZLqVKF8tA81k5kK/O7dKjHvq8hLIipcQ2Esfy
|
||||||
|
3X+EPcWIxFSX64m5+Ib+cch6hg==
|
||||||
|
-----END PRIVATE KEY-----
|
@ -1,24 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIID8zCCAtugAwIBAgIUPXGk144K0wqfLNwO7MK4g3ddbewwDQYJKoZIhvcNAQEL
|
|
||||||
BQAwgYgxCzAJBgNVBAYTAkNaMRMwEQYDVQQIDApTb21lLVN0YXRlMQ8wDQYDVQQH
|
|
||||||
DAZQcmFndWUxGDAWBgNVBAoMD0t1Y2hhcmN6eWsgTHRkLjEUMBIGA1UEAwwLKi5k
|
|
||||||
ZXYubG9jYWwxIzAhBgkqhkiG9w0BCQEWFGx1a2FzQGt1Y2hhcmN6eWsueHl6MB4X
|
|
||||||
DTIxMDQyNjIxMDA1OFoXDTMxMDQyNDIxMDA1OFowgYgxCzAJBgNVBAYTAkNaMRMw
|
|
||||||
EQYDVQQIDApTb21lLVN0YXRlMQ8wDQYDVQQHDAZQcmFndWUxGDAWBgNVBAoMD0t1
|
|
||||||
Y2hhcmN6eWsgTHRkLjEUMBIGA1UEAwwLKi5kZXYubG9jYWwxIzAhBgkqhkiG9w0B
|
|
||||||
CQEWFGx1a2FzQGt1Y2hhcmN6eWsueHl6MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
|
||||||
MIIBCgKCAQEAx/LUqs2Z8GS9x0KZrlrdL9Ndsskw5Q8EYGNJDxqebncMAkFbYbi1
|
|
||||||
ZhHz4mnVzLKFg6mQ7yXdnUz5DFCltEQcQHpIULPcbLyj3XXBA0Hd40Hc8+7hghJ0
|
|
||||||
Un9tH47JwMetnlNQcvmY2XJfQ+MV92pmIh7qzvkyj1EgjkNaTdf87zYl6zYnPJjy
|
|
||||||
MU7K3KMikPd8jECh5zhsrw9imgr86bqtWBjNkcA3F9Oauui6UhyN3/eGIa74+vx6
|
|
||||||
nYomiMSjuN3zkN0cyxX/PFVOZZOzTbmHUIPhIN3p5pXLhqA9tc3ePpifRATzU+Sn
|
|
||||||
ePPM++PVvSgf2PMFvTtPC/z/jKXHDB4C2QIDAQABo1MwUTAdBgNVHQ4EFgQUUa10
|
|
||||||
hrJc8F/WBDC0rWVISN5o6C8wHwYDVR0jBBgwFoAUUa10hrJc8F/WBDC0rWVISN5o
|
|
||||||
6C8wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAZOwIDGg+CzK3
|
|
||||||
/wwIE3ttv/OeU1lHu8I87dR51ixG6kGfj6+iKyP9OhA4If+mRIlMRSmigZe/ENbw
|
|
||||||
2tVDcoIogu8zw3SLlpMzxSDiAE3Ro4O60x8IQ7+HNOvbfiVq5Hdhb39T9VvDkNv8
|
|
||||||
k9mectnlqTNRmbw9oYDbg7zjY+5yGz264QeakF2UwJdtGlDUHVt2w83WJLY/rYAv
|
|
||||||
uuowVf4Tqt1evIr5lfsxVbRO9oVzBnbivYZPe5hjNxOBXTti17DfedIC+y6bLavm
|
|
||||||
VNlba18xxCDEPadyJnOSLFQlD0aoMoV7m5hZCJZEciw6X/JpX3SIpRF0MQm02RPi
|
|
||||||
wncx4+iqGA==
|
|
||||||
-----END CERTIFICATE-----
|
|
@ -1,28 +0,0 @@
|
|||||||
-----BEGIN PRIVATE KEY-----
|
|
||||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDH8tSqzZnwZL3H
|
|
||||||
QpmuWt0v012yyTDlDwRgY0kPGp5udwwCQVthuLVmEfPiadXMsoWDqZDvJd2dTPkM
|
|
||||||
UKW0RBxAekhQs9xsvKPddcEDQd3jQdzz7uGCEnRSf20fjsnAx62eU1By+ZjZcl9D
|
|
||||||
4xX3amYiHurO+TKPUSCOQ1pN1/zvNiXrNic8mPIxTsrcoyKQ93yMQKHnOGyvD2Ka
|
|
||||||
Cvzpuq1YGM2RwDcX05q66LpSHI3f94Yhrvj6/HqdiiaIxKO43fOQ3RzLFf88VU5l
|
|
||||||
k7NNuYdQg+Eg3enmlcuGoD21zd4+mJ9EBPNT5Kd488z749W9KB/Y8wW9O08L/P+M
|
|
||||||
pccMHgLZAgMBAAECggEANoUiNAin5wKxNLoWSZKBKV9K90sgx/SWTuoDq9ioRpqz
|
|
||||||
bZIApt7Ep7ZRd/U/1PcArOv5lxwOF6w7ZH5BEKxZv8MYINlKS2QMkoBfRtIY/LSi
|
|
||||||
2OjUGLGLgks4qBg5LxXDY554G0GvyesDyvEKtlIO01L218TfYnDOnbwDzaINV/RC
|
|
||||||
W/nbyx8Z5teorU+vS5IlDaNMDSFkAMFOfQ8gNrwCaWxX2FJRUyyzM/54J4bNgGUi
|
|
||||||
+3APpt8w4N54CrMbI6FzyQhUbAY9MRFryaLgw22v0haiM1nAE9BWpU5m20Q8Ilx8
|
|
||||||
f1e9PVDqwTXshxx01b0Z6RrHZViyi9+XOo6QU+4xYQKBgQDrYQZ8trvV3j+1E6Eu
|
|
||||||
rESMni+93ZbhRMbVVUDOhxU7BzfsFnvGodQms9sCaNQrexML0xH9DhWbssCDOvOm
|
|
||||||
MWSOnxUA1yivMiYvE4FzEM5iRRyFSjE3uS3+FZ0yY3iUr1vf9G9fJrtt/ag05AF5
|
|
||||||
ZywhmvvtiA06F9+/qZzMW4jxfQKBgQDZdy/tYZQI9PlfznI6juy/Kx310vGNN9aW
|
|
||||||
Zzv3WRon40awiRMxUhGViiq9eD1IEzLDIXGXHdOI4E+DQUd+pn7Cr08QoWbOQk2n
|
|
||||||
BujCDY0mevc2kDi5NASa2SUFvUXo/vCqZdfP/EA7BudYwknZp3hCV+nZt6DcW+M2
|
|
||||||
+WLYjxTVjQKBgGs/QTpv9HQFGRgDgqyGd5FuvigPoCCyOrqXZrjzmbvUlSlwMSOX
|
|
||||||
NtgPmRmm9A1/vXTkzkx0L2pK7yacJMoztTK6z1IbtwDko7tNcu0f2jmybcVZwcU3
|
|
||||||
Dfq4lHCSHC37HKyVbm13c20xZ4P546YSWWxSdrmLBSPUHvHwcW43wtTtAoGBAMOb
|
|
||||||
yAqYiRX9dQrOokU2JpJWcF6cXhaOsYEcXv5AsZxLfVxyEEd+8L44R/Wh4E2ipziK
|
|
||||||
LqildY9bZWpFH9A2ZzMric0FwXmqfjrNpjRXCC4i0ZfM5pkAx1uaEwk0lVvdZhGA
|
|
||||||
Bj3ZQtVVgmd+a/tR/oR+m6Tw3csZBCqA7H6rRSxJAoGBAIFd0PRdKm5+mUc575GQ
|
|
||||||
sxVznovODCdRyOAeD9IKyCcpMo8zB9uiNDRPG/sUebnowC3v7EeCYUUHlUDtsSjc
|
|
||||||
BZyasg71mrZElWg2mDonw/J9fcrEPGrh59wmqk49MLvzB0An/eP+gGK3RFgbijkN
|
|
||||||
EZcByagGNGdICcaaxr+RhgcU
|
|
||||||
-----END PRIVATE KEY-----
|
|
28
roles/nginx/files/rootca.key
Normal file
28
roles/nginx/files/rootca.key
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDAH/nCewvHL6pP
|
||||||
|
tGUyUwVBiL6T3er0mS4rM6ifoQxEGb1EsURyngik0I1IaPn9ciI09JnUdXpKnMS3
|
||||||
|
/jhHlkibD93datDPHEdPTdw1TZmQLcJyWW5MQ52/DMKDokCzWdQNENEL7I9A8GUD
|
||||||
|
V1Rl8E3G/uKHAzj2ULI1S+MwY+5URF3MLABmxFEfWcIBNef42wQ67hx74WlwOVVK
|
||||||
|
GNTVyd6EkRXDXu/YoMnZUdWOUxk6Bo9eKALOiVoTDtJOgubs5LT8MmhIosI6SqDM
|
||||||
|
lPq7huLLPD09egDrQqU13LfOG/+N7LXwsTcQXNV6irzMgNTE7vsWDyO+q8m4J1BU
|
||||||
|
sMWHnOpxAgMBAAECggEAD6SK2WLbWqRu4X52ntpTmzpfCfsPnkq6j5ntKNIcBY9y
|
||||||
|
8ZzdTdfALGsula62bARW9KjVvY6zHlAVVEXGn02FK9rm3ZhM2BAdXj+gplZjInIX
|
||||||
|
WugdKuh2d4+6Zq1XR0MRGN89phLktwzbrKH3pTUjoAgwuX1xrdx0JhK/tLjuNr4W
|
||||||
|
CBtmz2X6lzKeD9S7PHu33Tqseg1GCfQYBKyDrCOgWBq8/V0eoAQB3g4t3ZIfzAYN
|
||||||
|
Ft4BEB3prNBgLhuea43DRNcUnIu2k9/LzLTpGJE8oqM55yUEULdWIvRQJHEDfah2
|
||||||
|
1YiDCzzd3CCYgk6CjRaEihL+WPJfohKzDghnrhVp4QKBgQDw6CTWcm6S7/+eO6qP
|
||||||
|
PnyFPK/1ajCwc1KsVEjiS2OQ9WMK6d8pfA9o6lCjlRcu8kCO6CXQS8vXwg7G3PBY
|
||||||
|
7ndMUoyTD5X32uG/VXY1LxYtCdrjKWsnZP/cuTtcodaG/Sp+5Pa1eO00cG6ckCQr
|
||||||
|
FU8BLqeLhOSjlFinvoEVqPFriwKBgQDMKW2xTeqQpbLuTgvGcFglhTiyjGzIwtf7
|
||||||
|
Du0ZqF7LpzY95CUBOL9YZBBcAzarCnemzDeMy7aDuIesVP0JPGdTC2f4W/X++WUO
|
||||||
|
7CXJH7Xt/ULQLXDwRyQiMCKNCCNQtpDfP/Uzf6Ts/F3rIYre3NzscTbUradD3RMd
|
||||||
|
OqyIyzwxcwKBgBGhK3D2Ftlx7sbpnuW0sPAfLNFM4BtJlTc/Q8YrtjGZg5H843Pp
|
||||||
|
vEb1Psl506R/3fGXU40WvugfL22mJYCckuZm9Bqe/V6SCgsyeeASfhD1s6sEEO9l
|
||||||
|
GMRSWeHBhi2CwWVf5B4Lp3A6+h1C/yKYAJwZifFP3FuMM6Cy9Eddga1ZAoGBAKCR
|
||||||
|
SKM0y3F90E8Z9KrZ+olv0FqklH4Et8bNQ251fDChTsi4YN4oGl1TPYaQRHOa5OW7
|
||||||
|
IUlLgjzwaUwA/40/A2hNxTSQZtVkobVtxn36waPuFpkR1Aw1d1aoEtRmfRfirefX
|
||||||
|
LmqVTknQZbEijUyf2eTfWadE+BMokPrhBYcEiE+/AoGBANdhUebsG0AGYvM2SuHy
|
||||||
|
UQFmwamIzSUdBPXvNDALoCOi/9t0ySakxmBOyaUFY6k1WOW/fvBJ4eTGdlIUO6Ee
|
||||||
|
v1vMxpjLb8Z5H19qK/qSu1Q4PI70q0uThaWFFQ4Hhadb1m1vfxZ7u/jqx3rxCVqD
|
||||||
|
dw4+Bq5YpiLXR11wW29gx6dx
|
||||||
|
-----END PRIVATE KEY-----
|
21
roles/nginx/files/rootca.pem
Normal file
21
roles/nginx/files/rootca.pem
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDizCCAnOgAwIBAgIUYUlmu4VunV3uvnrMuV9MOXRJmjowDQYJKoZIhvcNAQEL
|
||||||
|
BQAwVTELMAkGA1UEBhMCQ1oxDzANBgNVBAcMBlByYWd1ZTEQMA4GA1UEAwwHSG9t
|
||||||
|
ZWxhYjEjMCEGCSqGSIb3DQEJARYUbHVrYXNAa3VjaGFyY3p5ay54eXowHhcNMjEw
|
||||||
|
NTEzMjIwMDU1WhcNMzEwNTExMjIwMDU1WjBVMQswCQYDVQQGEwJDWjEPMA0GA1UE
|
||||||
|
BwwGUHJhZ3VlMRAwDgYDVQQDDAdIb21lbGFiMSMwIQYJKoZIhvcNAQkBFhRsdWth
|
||||||
|
c0BrdWNoYXJjenlrLnh5ejCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
||||||
|
AMAf+cJ7C8cvqk+0ZTJTBUGIvpPd6vSZLiszqJ+hDEQZvUSxRHKeCKTQjUho+f1y
|
||||||
|
IjT0mdR1ekqcxLf+OEeWSJsP3d1q0M8cR09N3DVNmZAtwnJZbkxDnb8MwoOiQLNZ
|
||||||
|
1A0Q0Qvsj0DwZQNXVGXwTcb+4ocDOPZQsjVL4zBj7lREXcwsAGbEUR9ZwgE15/jb
|
||||||
|
BDruHHvhaXA5VUoY1NXJ3oSRFcNe79igydlR1Y5TGToGj14oAs6JWhMO0k6C5uzk
|
||||||
|
tPwyaEiiwjpKoMyU+ruG4ss8PT16AOtCpTXct84b/43stfCxNxBc1XqKvMyA1MTu
|
||||||
|
+xYPI76rybgnUFSwxYec6nECAwEAAaNTMFEwHQYDVR0OBBYEFMIPcuQ9X1fX4grD
|
||||||
|
O+mb1PipZfPYMB8GA1UdIwQYMBaAFMIPcuQ9X1fX4grDO+mb1PipZfPYMA8GA1Ud
|
||||||
|
EwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHKHCIGmFygvzyXENSbzFcwI
|
||||||
|
vSLkB/pb3NLXIcFtFI2hu3NdXkf2Lf/YdSTeXz0TS9M4EyDouVg4rKrGfgQCXwpd
|
||||||
|
FK05b9x2MBrKm1sLMr8gofYvKYlRzF+Fedr/d1S9ze/FE2UbMuzjc70vjRpKd8yN
|
||||||
|
nRATyJdicWUqhZZC2TB2ko3G6vzoUxIHQH7PPHjpJW1kYspio/+ohYSmh9rpqeSG
|
||||||
|
MHYyBsjSbEJJOdkaWWxc+OWhLuhfD4lZlmmzyVBBQ0HQ/shztPaWYogHVpU9yAEW
|
||||||
|
kasPGcwXxrpIaQo06U5qmmDbwfUadljfaOicMuu4Rv2xQPGvdNy49uYdSERlKpQ=
|
||||||
|
-----END CERTIFICATE-----
|
1
roles/nginx/files/rootca.srl
Normal file
1
roles/nginx/files/rootca.srl
Normal file
@ -0,0 +1 @@
|
|||||||
|
0F8D54CC2418ABCBF0D6D177BC1A46410761C7FF
|
136
roles/nginx/files/snippets/block-exploits.conf
Normal file
136
roles/nginx/files/snippets/block-exploits.conf
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
## Block SQL injections
|
||||||
|
set $block_sql_injections 0;
|
||||||
|
|
||||||
|
if ($query_string ~ "union.*select.*\(") {
|
||||||
|
set $block_sql_injections 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($query_string ~ "union.*all.*select.*") {
|
||||||
|
set $block_sql_injections 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($query_string ~ "concat.*\(") {
|
||||||
|
set $block_sql_injections 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($block_sql_injections = 1) {
|
||||||
|
return 403;
|
||||||
|
}
|
||||||
|
|
||||||
|
## Block file injections
|
||||||
|
set $block_file_injections 0;
|
||||||
|
|
||||||
|
if ($query_string ~ "[a-zA-Z0-9_]=http://") {
|
||||||
|
set $block_file_injections 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($query_string ~ "[a-zA-Z0-9_]=(\.\.//?)+") {
|
||||||
|
set $block_file_injections 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($query_string ~ "[a-zA-Z0-9_]=/([a-z0-9_.]//?)+") {
|
||||||
|
set $block_file_injections 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($block_file_injections = 1) {
|
||||||
|
return 403;
|
||||||
|
}
|
||||||
|
|
||||||
|
## Block common exploits
|
||||||
|
set $block_common_exploits 0;
|
||||||
|
|
||||||
|
if ($query_string ~ "(<|%3C).*script.*(>|%3E)") {
|
||||||
|
set $block_common_exploits 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($query_string ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") {
|
||||||
|
set $block_common_exploits 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($query_string ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") {
|
||||||
|
set $block_common_exploits 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($query_string ~ "proc/self/environ") {
|
||||||
|
set $block_common_exploits 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3D)") {
|
||||||
|
set $block_common_exploits 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($query_string ~ "base64_(en|de)code\(.*\)") {
|
||||||
|
set $block_common_exploits 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($block_common_exploits = 1) {
|
||||||
|
return 403;
|
||||||
|
}
|
||||||
|
|
||||||
|
## Block spam
|
||||||
|
set $block_spam 0;
|
||||||
|
|
||||||
|
if ($query_string ~ "\b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)\b") {
|
||||||
|
set $block_spam 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($query_string ~ "\b(erections|hoodia|huronriveracres|impotence|levitra|libido)\b") {
|
||||||
|
set $block_spam 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($query_string ~ "\b(ambien|blue\spill|cialis|cocaine|ejaculation|erectile)\b") {
|
||||||
|
set $block_spam 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($query_string ~ "\b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)\b") {
|
||||||
|
set $block_spam 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($block_spam = 1) {
|
||||||
|
return 403;
|
||||||
|
}
|
||||||
|
|
||||||
|
## Block user agents
|
||||||
|
set $block_user_agents 0;
|
||||||
|
|
||||||
|
# Disable Akeeba Remote Control 2.5 and earlier
|
||||||
|
if ($http_user_agent ~ "Indy Library") {
|
||||||
|
set $block_user_agents 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Common bandwidth hoggers and hacking tools.
|
||||||
|
if ($http_user_agent ~ "libwww-perl") {
|
||||||
|
set $block_user_agents 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($http_user_agent ~ "GetRight") {
|
||||||
|
set $block_user_agents 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($http_user_agent ~ "GetWeb!") {
|
||||||
|
set $block_user_agents 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($http_user_agent ~ "Go!Zilla") {
|
||||||
|
set $block_user_agents 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($http_user_agent ~ "Download Demon") {
|
||||||
|
set $block_user_agents 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($http_user_agent ~ "Go-Ahead-Got-It") {
|
||||||
|
set $block_user_agents 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($http_user_agent ~ "TurnitinBot") {
|
||||||
|
set $block_user_agents 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($http_user_agent ~ "GrabNet") {
|
||||||
|
set $block_user_agents 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($block_user_agents = 1) {
|
||||||
|
return 403;
|
||||||
|
}
|
31
roles/nginx/files/snippets/cache-assets.conf
Normal file
31
roles/nginx/files/snippets/cache-assets.conf
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
location ~* ^.*\.(css|js|jpe?g|gif|png|woff|eot|ttf|svg|ico|css\.map|js\.map)$ {
|
||||||
|
if_modified_since off;
|
||||||
|
|
||||||
|
# use the public cache
|
||||||
|
proxy_cache public-cache;
|
||||||
|
proxy_cache_key $host$request_uri;
|
||||||
|
|
||||||
|
# ignore these headers for media
|
||||||
|
proxy_ignore_headers Set-Cookie Cache-Control Expires X-Accel-Expires;
|
||||||
|
|
||||||
|
# cache 200s and also 404s (not ideal but there are a few 404 images for some reason)
|
||||||
|
proxy_cache_valid any 30m;
|
||||||
|
proxy_cache_valid 404 1m;
|
||||||
|
|
||||||
|
# strip this header to avoid If-Modified-Since requests
|
||||||
|
proxy_hide_header Last-Modified;
|
||||||
|
proxy_hide_header Cache-Control;
|
||||||
|
proxy_hide_header Vary;
|
||||||
|
|
||||||
|
proxy_cache_bypass 0;
|
||||||
|
proxy_no_cache 0;
|
||||||
|
|
||||||
|
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504 http_404;
|
||||||
|
proxy_connect_timeout 5s;
|
||||||
|
proxy_read_timeout 45s;
|
||||||
|
|
||||||
|
expires @30m;
|
||||||
|
access_log off;
|
||||||
|
|
||||||
|
include conf.d/include/proxy.conf;
|
||||||
|
}
|
3
roles/nginx/files/snippets/force-ssl.conf
Normal file
3
roles/nginx/files/snippets/force-ssl.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
if ($scheme = "http") {
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
29
roles/nginx/files/snippets/letsencrypt-acme-challenge.conf
Normal file
29
roles/nginx/files/snippets/letsencrypt-acme-challenge.conf
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Rule for legitimate ACME Challenge requests (like /.well-known/acme-challenge/xxxxxxxxx)
|
||||||
|
# We use ^~ here, so that we don't check other regexes (for speed-up). We actually MUST cancel
|
||||||
|
# other regex checks, because in our other config files have regex rule that denies access to files with dotted names.
|
||||||
|
location ^~ /.well-known/acme-challenge/ {
|
||||||
|
# Since this is for letsencrypt authentication of a domain and they do not give IP ranges of their infrastructure
|
||||||
|
# we need to open up access by turning off auth and IP ACL for this location.
|
||||||
|
auth_basic off;
|
||||||
|
allow all;
|
||||||
|
|
||||||
|
# Set correct content type. According to this:
|
||||||
|
# https://community.letsencrypt.org/t/using-the-webroot-domain-verification-method/1445/29
|
||||||
|
# Current specification requires "text/plain" or no content header at all.
|
||||||
|
# It seems that "text/plain" is a safe option.
|
||||||
|
default_type "text/plain";
|
||||||
|
|
||||||
|
# This directory must be the same as in /etc/letsencrypt/cli.ini
|
||||||
|
# as "webroot-path" parameter. Also don't forget to set "authenticator" parameter
|
||||||
|
# there to "webroot".
|
||||||
|
# Do NOT use alias, use root! Target directory is located here:
|
||||||
|
# /var/www/common/letsencrypt/.well-known/acme-challenge/
|
||||||
|
root /data/letsencrypt-acme-challenge;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Hide /acme-challenge subdirectory and return 404 on all requests.
|
||||||
|
# It is somewhat more secure than letting Nginx return 403.
|
||||||
|
# Ending slash is important!
|
||||||
|
location = /.well-known/acme-challenge/ {
|
||||||
|
return 404;
|
||||||
|
}
|
7
roles/nginx/files/snippets/proxy.conf
Normal file
7
roles/nginx/files/snippets/proxy.conf
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
add_header X-Served-By $host;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Forwarded-Scheme $scheme;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_pass $forward_scheme://$server:$port;
|
9
roles/nginx/files/snippets/ssl-ciphers.conf
Normal file
9
roles/nginx/files/snippets/ssl-ciphers.conf
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
ssl_session_timeout 5m;
|
||||||
|
ssl_session_cache shared:SSL:50m;
|
||||||
|
|
||||||
|
# intermediate configuration. tweak to your needs.
|
||||||
|
ssl_protocols TLSv1.2 TLSv1.3;
|
||||||
|
ssl_ciphers 'EECDH+AESGCM:AES256+EECDH:AES256+EDH:EDH+AESGCM:ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-
|
||||||
|
ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AE
|
||||||
|
S128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES';
|
||||||
|
ssl_prefer_server_ciphers on;
|
@ -1,11 +1,17 @@
|
|||||||
|
# If self_signed = true, in nginx/files: generate root CA (if regenereate_root_ca = true),
|
||||||
|
# and sign a wildcard certificate. Copy certificates to /etc/ssl/.
|
||||||
- name: ensure directories exist
|
- name: ensure directories exist
|
||||||
file:
|
file:
|
||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: '0755'
|
||||||
loop:
|
loop:
|
||||||
- "{{ nginx_confd_folder }}"
|
- "{{ data_folder }}/nginx"
|
||||||
- name: generate and install self-signed certs
|
- "{{ data_folder }}/nginx/conf.d"
|
||||||
|
- "{{ data_folder }}/nginx/sites-enabled"
|
||||||
|
- "{{ data_folder }}/nginx/sites-available"
|
||||||
|
- "{{ data_folder }}/nginx/snippets"
|
||||||
|
- name: generate self-signed certs
|
||||||
import_tasks: self-signed.yml
|
import_tasks: self-signed.yml
|
||||||
when: self_signed
|
when: self_signed
|
||||||
- name: create nginx bridge network
|
- name: create nginx bridge network
|
||||||
@ -14,6 +20,18 @@
|
|||||||
attachable: true
|
attachable: true
|
||||||
internal: true
|
internal: true
|
||||||
state: present
|
state: present
|
||||||
|
- name: copy nginx.conf
|
||||||
|
template:
|
||||||
|
src: nginx.conf.j2
|
||||||
|
dest: "{{ data_folder }}/nginx/nginx.conf"
|
||||||
|
mode: '0755'
|
||||||
|
- name: copy snippets
|
||||||
|
template:
|
||||||
|
src: "{{ item }}"
|
||||||
|
dest: "{{ data_folder }}/nginx/snippets/{{ item | basename | regex_replace('.j2$', '') }}"
|
||||||
|
mode: '0755'
|
||||||
|
with_fileglob:
|
||||||
|
- "../templates/snippets/*.conf"
|
||||||
- name: run container
|
- name: run container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: 'nginx'
|
name: 'nginx'
|
||||||
@ -22,10 +40,13 @@
|
|||||||
- name: bridge
|
- name: bridge
|
||||||
- name: nginx-internal
|
- name: nginx-internal
|
||||||
volumes:
|
volumes:
|
||||||
|
- "{{ data_folder }}/nginx/conf.d:/etc/nginx/conf.d"
|
||||||
- "{{ data_folder }}/nginx/nginx.conf:/etc/nginx/nginx.conf"
|
- "{{ data_folder }}/nginx/nginx.conf:/etc/nginx/nginx.conf"
|
||||||
- "{{ data_folder }}/nginx/{{ base_domain }}.key:/etc/nginx/{{ base_domain }}.key"
|
- "{{ data_folder }}/nginx/sites-available:/etc/nginx/sites-available"
|
||||||
- "{{ data_folder }}/nginx/{{ base_domain }}.crt:/etc/nginx/{{ base_domain }}.crt"
|
- "{{ data_folder }}/nginx/sites-enabled:/etc/nginx/sites-enabled"
|
||||||
- "{{ nginx_confd_folder }}:/etc/nginx/conf.d"
|
- "{{ data_folder }}/nginx/snippets:/etc/nginx/snippets"
|
||||||
|
- "{{ data_folder }}/nginx/{{ base_domain }}.key:/etc/ssl/{{ base_domain }}.key"
|
||||||
|
- "{{ data_folder }}/nginx/{{ base_domain }}.crt:/etc/ssl/{{ base_domain }}.crt"
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
- "443:443"
|
- "443:443"
|
||||||
|
@ -4,34 +4,37 @@
|
|||||||
-new \
|
-new \
|
||||||
-nodes \
|
-nodes \
|
||||||
-newkey rsa:2048 \
|
-newkey rsa:2048 \
|
||||||
-keyout "{{ data_folder }}/nginx/rootca.key" \
|
-keyout "{{ playbook_dir }}/roles/nginx/files/rootca.key" \
|
||||||
-out "{{ data_folder }}/nginx/rootca.pem" \
|
-out "{{ playbook_dir }}/roles/nginx/files/rootca.pem" \
|
||||||
-sha256 \
|
-sha256 \
|
||||||
-days 3650 \
|
-days 3650 \
|
||||||
-subj "/C=CZ/L=Prague/CN=Homelab/emailAddress={{ admin_email }}"
|
-subj "/C=CZ/L=Prague/CN=Homelab/emailAddress={{ admin_email }}"
|
||||||
|
when: generate_cert.root
|
||||||
- name: generate wildcard csr
|
- name: generate wildcard csr
|
||||||
command: openssl req \
|
command: openssl req \
|
||||||
-new \
|
-new \
|
||||||
-nodes \
|
-nodes \
|
||||||
-newkey rsa:2048 \
|
-newkey rsa:2048 \
|
||||||
-keyout "{{ data_folder }}/nginx/{{ base_domain }}.key" \
|
-keyout "{{ playbook_dir }}/roles/nginx/files/{{ base_domain }}.key" \
|
||||||
-out "{{ data_folder }}/nginx/{{ base_domain }}.csr" \
|
-out "{{ playbook_dir }}/roles/nginx/files/{{ base_domain }}.csr" \
|
||||||
-subj "/C=CZ/L=Prague/CN=*.{{ base_domain }}/emailAddress={{ admin_email }}"
|
-subj "/C=CZ/L=Prague/CN=*.{{ base_domain }}/emailAddress={{ admin_email }}"
|
||||||
|
when: generate_cert.wildcard
|
||||||
- name: sign wildcard csr with root ca
|
- name: sign wildcard csr with root ca
|
||||||
command: openssl x509 \
|
command: openssl x509 \
|
||||||
-req \
|
-req \
|
||||||
-in "{{ data_folder }}/nginx/{{ base_domain }}.csr" \
|
-in "{{ playbook_dir }}/roles/nginx/files/{{ base_domain }}.csr" \
|
||||||
-CA "{{ data_folder }}/nginx/rootca.pem" \
|
-CA "{{ playbook_dir }}/roles/nginx/files/rootca.pem" \
|
||||||
-CAkey "{{ data_folder }}/nginx/rootca.key" \
|
-CAkey "{{ playbook_dir }}/roles/nginx/files/rootca.key" \
|
||||||
-CAcreateserial \
|
-CAcreateserial \
|
||||||
-out "{{ data_folder }}/nginx/{{ base_domain }}.crt" \
|
-out "{{ playbook_dir }}/roles/nginx/files/{{ base_domain }}.crt" \
|
||||||
-days 3650 \
|
-days 3650 \
|
||||||
-sha256
|
-sha256
|
||||||
- name: install root ca
|
when: generate_cert.wildcard
|
||||||
command: trust anchor "{{ data_folder }}/nginx/rootca.pem"
|
- name: copy wildcard certificate and key
|
||||||
become: yes
|
copy:
|
||||||
- name: copy .conf file
|
src: "{{ item }}"
|
||||||
template:
|
dest: "{{ data_folder }}/nginx/{{ item }}"
|
||||||
src: nginx.conf.j2
|
mode: '0700'
|
||||||
dest: "{{ data_folder }}/nginx/nginx.conf"
|
loop:
|
||||||
mode: '0755'
|
- "{{ base_domain }}.crt"
|
||||||
|
- "{{ base_domain }}.key"
|
@ -27,7 +27,8 @@ http {
|
|||||||
|
|
||||||
#gzip on;
|
#gzip on;
|
||||||
resolver 127.0.0.11 valid=30;
|
resolver 127.0.0.11 valid=30;
|
||||||
ssl_certificate /etc/nginx/{{ base_domain }}.crt;
|
{% if self_signed == true %}
|
||||||
ssl_certificate_key /etc/nginx/{{ base_domain }}.key;
|
include /etc/nginx/snippets/self-signed.conf;
|
||||||
|
{% endif %}
|
||||||
include /etc/nginx/conf.d/*.conf;
|
include /etc/nginx/conf.d/*.conf;
|
||||||
}
|
}
|
2
roles/nginx/templates/snippets/self-signed.conf.j2
Normal file
2
roles/nginx/templates/snippets/self-signed.conf.j2
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
ssl_certificate /etc/ssl/{{ base_domain }}.crt;
|
||||||
|
ssl_certificate_key /etc/ssl/{{ base_domain }}.key;
|
Reference in New Issue
Block a user