enhance: rm acme-challenge if auto-renewal off #30

This commit is contained in:
0xJacky 2023-04-10 11:03:15 +08:00
parent b7560ddb35
commit 88daebbb75
No known key found for this signature in database
GPG key ID: B6E4A6E4A561BAF0
27 changed files with 651 additions and 127 deletions

View file

@ -1 +1 @@
{"version":"1.7.9","build_id":87,"total_build":157}
{"version":"1.7.9","build_id":88,"total_build":158}

View file

@ -4,7 +4,7 @@ import CodeEditor from '@/components/CodeEditor/CodeEditor.vue'
import NgxConfigEditor from '@/views/domain/ngx_conf/NgxConfigEditor'
import {useGettext} from 'vue3-gettext'
import {computed, reactive, ref, watch} from 'vue'
import {computed, provide, reactive, ref, watch} from 'vue'
import {useRoute, useRouter} from 'vue-router'
import domain from '@/api/domain'
import ngx from '@/api/ngx'
@ -124,7 +124,7 @@ const save = async () => {
}
}
domain.save(name.value, {
await domain.save(name.value, {
name: filename.value || name.value,
content: configText.value, overwrite: true
}).then(r => {
@ -134,7 +134,6 @@ const save = async () => {
}).catch(handle_parse_error).finally(() => {
saving.value = false
})
}
function enable() {
@ -165,6 +164,8 @@ function on_change_enabled(checked: boolean) {
const editor_md = computed(() => history_chatgpt_record?.value?.length > 1 ? 16 : 24)
const chat_md = computed(() => history_chatgpt_record?.value?.length > 1 ? 8 : 24)
provide('save_site_config', save)
</script>
<template>
<a-row :gutter="16">

View file

@ -7,7 +7,8 @@ import ChangeCert from '@/views/domain/cert/ChangeCert.vue'
const {$gettext} = useGettext()
const props = defineProps(['config_name', 'directivesMap', 'current_server_directives', 'enabled', 'cert_info'])
const props = defineProps(['config_name', 'directivesMap', 'current_server_directives',
'enabled', 'ngx_config', 'current_server_index', 'cert_info'])
const emit = defineEmits(['callback', 'update:enabled'])
@ -33,14 +34,15 @@ const enabled = computed({
<template>
<div>
<h2 v-translate>Certificate Status</h2>
<cert-info ref="info" :cert="props.cert_info"/>
<cert-info ref="info" :cert="cert_info"/>
<change-cert :directives-map="props.directivesMap"/>
<change-cert :directives-map="directivesMap"/>
<issue-cert
:config_name="config_name"
:current_server_directives="props.current_server_directives"
:directives-map="props.directivesMap"
:ngx_config="ngx_config"
v-model:enabled="enabled"
@callback="callback"
/>

View file

@ -1,17 +1,22 @@
<script setup lang="ts">
import {useGettext} from 'vue3-gettext'
import {computed, nextTick, ref, watch} from 'vue'
import {computed, inject, nextTick, ref, watch} from 'vue'
import {message, Modal} from 'ant-design-vue'
import domain from '@/api/domain'
import websocket from '@/lib/websocket'
import Template from '@/views/template/Template.vue'
import template from '@/api/template'
import _ from 'lodash'
const {$gettext, interpolate} = useGettext()
const props = defineProps(['config_name', 'directivesMap', 'current_server_directives', 'enabled'])
const props = defineProps(['config_name', 'directivesMap', 'current_server_directives',
'enabled', 'ngx_config'])
const emit = defineEmits(['changeEnabled', 'callback', 'update:enabled'])
const save_site_config: Function = inject('save_site_config')!
const issuing_cert = ref(false)
const modalVisible = ref(false)
@ -28,21 +33,40 @@ function confirm() {
Modal.confirm({
title: enabled.value ? $gettext('Do you want to disable auto-cert renewal?') :
$gettext('Do you want to enable auto-cert renewal?'),
content: enabled.value ? $gettext('We need to add the HTTPChallenge configuration to ' +
'this file and reload the Nginx. Are you sure you want to continue?') :
$gettext('We will need to remove the HTTPChallenge configuration from this file and ' +
'reload the Nginx configuration file. Are you sure you want to continue?'),
mask: false,
centered: true,
onOk() {
enabled.value = !enabled.value
if (enabled.value) {
onchange(false)
} else {
onchange(true)
}
}
})
}
watch(enabled, onchange)
function onchange(r: boolean) {
async function onchange(r: boolean) {
emit('changeEnabled', r)
change_auto_cert(r)
if (r) {
await template.get_block('letsencrypt.conf').then(r => {
props.ngx_config.servers.forEach(async (v: any) => {
v.locations = v.locations.filter((l: any) => l.path !== '/.well-known/acme-challenge')
v.locations.push(...r.locations)
})
})
await save_site_config()
job()
} else {
await props.ngx_config.servers.forEach((v: any) => {
v.locations = v.locations.filter((l: any) => l.path !== '/.well-known/acme-challenge')
})
save_site_config()
}
}
@ -77,9 +101,10 @@ function job() {
})
}
function callback(ssl_certificate: string, ssl_certificate_key: string) {
async function callback(ssl_certificate: string, ssl_certificate_key: string) {
props.directivesMap['ssl_certificate'][0]['params'] = ssl_certificate
props.directivesMap['ssl_certificate_key'][0]['params'] = ssl_certificate_key
save_site_config()
}
function change_auto_cert(r: boolean) {

View file

@ -177,9 +177,11 @@ function add_server() {
<cert
v-if="current_support_ssl"
:config_name="ngx_config.name"
:cert_info="props.cert_info?.[k]"
:cert_info="cert_info?.[k]"
:current_server_directives="current_server_directives"
:directives-map="directivesMap"
:current_server_index="current_server_index"
:ngx_config="ngx_config"
v-model:enabled="autoCertRef"
@callback="$emit('callback')"
/>

View file

@ -1 +1 @@
{"version":"1.7.9","build_id":87,"total_build":157}
{"version":"1.7.9","build_id":88,"total_build":158}

View file

@ -1,84 +1,78 @@
server {
listen 80;
listen [::]:80;
server_name homework.jackyu.cn;
# rewrite ^(.*)$ https://$host$1 permanent;
return 307 https://$server_name$request_uri;
listen 80;
listen [::]:80;
server_name homework.jackyu.cn;
# rewrite ^(.*)$ https://$host$1 permanent;
return 307 https://$server_name$request_uri;
location /.well-known/acme-challenge {
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_pass http://127.0.0.1:5002;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name homework.jackyu.cn;
ssl_certificate /etc/nginx/ssl/jackyu.cn/alpha/jackyu.cn_server_cert.pem;
ssl_certificate_key /etc/nginx/ssl/jackyu.cn/alpha/jackyu.cn_key.pem;
root /var/www/homework/frontend;
# Add index.php to the list if you are using PHP
index index.html;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
index index.html;
try_files $uri $uri/ /index.html;
}
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name homework.jackyu.cn;
ssl_certificate /etc/nginx/ssl/homework.jackyu.cn/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/homework.jackyu.cn/private.key;
root /var/www/homework/frontend;
# Add index.php to the list if you are using PHP
index index.html;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
index index.html;
try_files $uri $uri/ /index.html;
}
location /student {
index manage.html;
try_files $uri $uri/ /student.html;
}
index manage.html;
try_files $uri $uri/ /student.html;
}
location /teacher {
index manage.html;
try_files $uri $uri/ /teacher.html;
}
index manage.html;
try_files $uri $uri/ /teacher.html;
}
location /admin {
index admin.html;
try_files $uri $uri/ /admin.html;
}
index admin.html;
try_files $uri $uri/ /admin.html;
}
location ^~/upload/ {
alias /var/www/homework/api/upload/;
}
include error_json;
location /api/ {
proxy_http_version 1.1;
alias /var/www/homework/api/upload/;
}
location /api/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_pass http://127.0.0.1:9008/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:9008/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 1000m;
}
location /zigbee-pi {
alias /var/www/zigbee-pi/frontend/;
index index.html;
}
location /zigbee-pi/api/ {
proxy_http_version 1.1;
}
location /zigbee-pi {
alias /var/www/zigbee-pi/frontend/;
index index.html;
}
location /zigbee-pi/api/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_pass http://127.0.0.1:9200/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:9200/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 1000m;
}
}
}
location /.well-known/acme-challenge {
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_pass http://127.0.0.1:5002;
}
}

View file

@ -8,4 +8,17 @@ server {
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_pass http://127.0.0.1:5002;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ojbk.me;
ssl_certificate /etc/nginx/ssl/ojbk.me/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/ojbk.me/private.key;
location /.well-known/acme-challenge {
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_pass http://127.0.0.1:5002;
}
}

View file

@ -1,26 +1,33 @@
server {
listen 80;
listen [::]:80;
server_name qi.jackyu.cn;
rewrite ^(.*)$ https://$host$1 permanent;
listen 80;
listen [::]:80;
server_name qi.jackyu.cn amstourship.jackyu.cn;
rewrite ^(.*)$ https://$host$1 permanent;
location /.well-known/acme-challenge {
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_pass http://127.0.0.1:5002;
}
}
server {
server_name qi.jackyu.cn;
ssl_certificate /etc/nginx/ssl/jackyu.cn/alpha/jackyu.cn_server_cert.pem;
ssl_certificate_key /etc/nginx/ssl/jackyu.cn/alpha/jackyu.cn_key.pem;
listen 443 ssl;
listen [::]:443 ssl;
location / {
proxy_pass http://127.0.0.1:5001/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server_name qi.jackyu.cn amstourship.jackyu.cn;
ssl_certificate /etc/nginx/ssl/qi.jackyu.cn_amstourship.jackyu.cn/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/qi.jackyu.cn_amstourship.jackyu.cn/private.key;
listen 443 ssl;
listen [::]:443 ssl;
location / {
proxy_pass http://127.0.0.1:5001/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /.well-known/acme-challenge {
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_pass http://127.0.0.1:5002;
}
}

View file

@ -0,0 +1,24 @@
server {
listen 80;
listen [::]:80;
server_name test.jackyu.cn;
location /.well-known/acme-challenge {
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_pass http://127.0.0.1:5002;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name test.jackyu.cn;
ssl_certificate /etc/nginx/ssl/test.jackyu.cn/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/test.jackyu.cn/private.key;
location /.well-known/acme-challenge {
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_pass http://127.0.0.1:5002;
}
}

View file

@ -1 +0,0 @@
/etc/nginx/sites-available/amstourship.jackyu.cn

View file

@ -0,0 +1 @@
/etc/nginx/sites-available/homework.jackyu.cn

View file

@ -0,0 +1 @@
/etc/nginx/sites-available/qi.jackyu.cn

View file

@ -0,0 +1 @@
/etc/nginx/sites-available/test

View file

@ -0,0 +1,64 @@
-----BEGIN CERTIFICATE-----
MIIFgDCCBGigAwIBAgITAP+fPvVk323vgnW668+CqRlK/TANBgkqhkiG9w0BAQsF
ADBDMQswCQYDVQQGEwJVUzESMBAGA1UEChMJZ29vZCBndXlzMSAwHgYDVQQDExdD
QSBpbnRlcm1lZGlhdGUgKFJTQSkgQTAeFw0yMzA0MTAwMTQ0NDdaFw0yMzA3MDkw
MTQ0NDZaMB0xGzAZBgNVBAMTEmhvbWV3b3JrLmphY2t5dS5jbjCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBALY1L0I/3MccefOKLhhh8OASsv4lKoBl0FbE
lxuSN+hCcuW96wniv+ofCBZqHqYiRiYPB7JC3DrwP8iZepBMBf0FAnffrJJSr2Uk
gotVoUqeNjIEmUir5dbsDrCaLQkMaXo2FUUDn74GcQjf7YG4BAUAkYQn7VJsn8+M
W7NrMy22/NZHSfS0OHbF6F7qwVlOIW98h7PxXpqqYo1keOfRICfIalU4+0+Tb0VT
MVr5oUSFuvlnJCrNTUtzgnvPLAmTfQ94RzMhwfxXMW1hD6KGaganoqrWYpJfZiWW
zrNyNVubTulJZxzAaGZFqihoyfLhvbHKDCXb00H5tXQdecVA6GECAwEAAaOCApEw
ggKNMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH
AwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUNJ6N89H1XafFYuLtMOX+in4MIPYw
KwYDVR0jBCQwIoAgYjWGqKXC1CgUyRtbS1bZxpMqaNdKnoY33nyaZdVEQ/IwcQYI
KwYBBQUHAQEEZTBjMCIGCCsGAQUFBzABhhZodHRwOi8vMTI3LjAuMC4xOjQwMDIv
MD0GCCsGAQUFBzAChjFodHRwOi8vMTI3LjAuMC4xOjQwMDEvYWlhL2lzc3Vlci82
NjA1NDQwNDk4MzY5NzQxMB0GA1UdEQQWMBSCEmhvbWV3b3JrLmphY2t5dS5jbjAn
BgNVHR8EIDAeMBygGqAYhhZodHRwOi8vZXhhbXBsZS5jb20vY3JsMEAGA1UdIAQ5
MDcwCAYGZ4EMAQIBMCsGAyoDBDAkMCIGCCsGAQUFBwIBFhZodHRwOi8vZXhhbXBs
ZS5jb20vY3BzMIIBAwYKKwYBBAHWeQIEAgSB9ASB8QDvAHUAUtToynGEyMkkXDMQ
ei8Ll54oMwWHI0IieDEKs12/Td4AAAGHaQ06EQAABAMARjBEAiBCQaL1zYJtbVW4
Csnc2C3Vc5kbMWwpRVK6rxTJhP0j2AIgVHSwpnVphjLT136M35Kobj1DwlfJ4O9/
sWKyrAwlMC4AdgA6qT9O/RxRKcQnhtlrR6mubchBDheA1y/bT9teLGXGdAAAAYdp
DToRAAAEAwBHMEUCIDEnWPSbMr9PgnJ43lbYLyPeRUk8S4jXoWpTHFzVPK6ZAiEA
2nsrYbRsJFgPVxW6kqKth89EhMtLP9uJD50OQWzQsb4wDQYJKoZIhvcNAQELBQAD
ggEBAEcjUOtRmA8c1pqjEkiIo4vsmJT4Zwy4BhpmGoqRqCfq6IUP+HSjVokJGCGp
mNh16k4vaAgpA1Nu0wXsfaMklR0nuGvqyZ1+/o9iqbEpkBhgxI+kliAbwMtCB8y+
UOcv4GOkOpbqlmvQgoSb5q25hQ3i4nxxhmN2KV9WS6+mYrCs09FjUIx6fTK05DQQ
u9/q94glVMqteOj0fiyaHuPZbyy/NeF/5KjLVZGfWypFDOHUpZn58FpAw33XQIxL
Yurjh7dbyk/Rv6qcoT89EYmUwEegjQne2XTIljpvlR1WEvZE/BcHqIyvZ6WTIZAB
NKhxlKkKY7tAq43RAigiJjNdjFU=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFZzCCA0+gAwIBAgIQHPTBy0utaJ82mHJs9V3u8zANBgkqhkiG9w0BAQsFADA5
MQswCQYDVQQGEwJVUzESMBAGA1UEChMJZ29vZCBndXlzMRYwFAYDVQQDEw1DQSBy
b290IChSU0EpMB4XDTIwMDEwMTEyMDAwMFoXDTQwMDEwMTEyMDAwMFowQzELMAkG
A1UEBhMCVVMxEjAQBgNVBAoTCWdvb2QgZ3V5czEgMB4GA1UEAxMXQ0EgaW50ZXJt
ZWRpYXRlIChSU0EpIEEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCk
f1rlGJeno27J8UAltWo8PopRsTP93Il6+L+SScaOUQsM+TCbTO5EJ4xC+d3Unp8v
iZRLAB1/lGhHh/Uifzov2ux2sa9J4kxlfCxVaaCx6maOs9KnfGUug2hcUCh1oUVv
zD9X9VkWdBdR+kKJvYqWJlU/EJxEa5ERjFp591LQBpR7ksZrsbLvXeywqVS3ek8s
d7w+ZqpYOfo6DNLl5aEJlk6F6CiSjmT352n8dnsOEIEL+bOusLhP5F8pED85geU5
rijc38fZ+gfZAVVenz7kqBh7ld6qT5inIM4uQa7oCuFX2dZ0jqm5TFBBtQp9dkFv
WFz9kEb/CVJr1IsTdp1PAgMBAAGjggFfMIIBWzAOBgNVHQ8BAf8EBAMCAYYwHQYD
VR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYBAf8CAQAw
KQYDVR0OBCIEIGI1hqilwtQoFMkbW0tW2caTKmjXSp6GN958mmXVREPyMCsGA1Ud
IwQkMCKAINmvCHaWHo5MD5lKL52otAsr/TsCX5Hwfy5euQ6zIAWEMFgGCCsGAQUF
BwEBBEwwSjAjBggrBgEFBQcwAYYXaHR0cDovL2V4YW1wbGUuY29tL29jc3AwIwYI
KwYBBQUHMAKGF2h0dHA6Ly9leGFtcGxlLmNvbS9yb290MCcGA1UdHwQgMB4wHKAa
oBiGFmh0dHA6Ly9leGFtcGxlLmNvbS9jcmwwOwYDVR0gBDQwMjAEBgIqAzAqBgIt
BjAkMCIGCCsGAQUFBwIBFhZodHRwOi8vZXhhbXBsZS5jb20vY3BzMA0GCSqGSIb3
DQEBCwUAA4ICAQCTLNQlCzHynESAvtPRV1FPaOQhx01RofwS/0Zg3IH5oXxSC98C
n2L0xHN1gCaJai9XutrFtMCjeBmese48QoPa8MxrB1UpmZ1AuFOQAfHWJZbYPp0V
PxgY34W9Onb+JPnKTbL9ofKUV0aX67eJ5KKFD1G2z+y9Lz1oA3yJpGzqOY/JCWYz
q46ik0bmgcGfol6F/T5hoE8pZk8Wr+nNUpSuOSNp7c/g2/pKDRWK8trTrG3owtaJ
LbQc+W4e97AtTg6DGvR5gftar/+4g2o0xhKSnep+s/bf5NFXVDCTvCmemrbR8Hr7
NLDKXWuGMoMKIxhyPX6ttpU2Um3rQ1rCQbJ5yWIREZvbdaeK8HSRE3GYE71Z3n/0
0Kmtg2BKGkrJzcqUSG4o+9mdSjhJ65J76ri5tVQby7Ai7W2KlNjpdI6GYtejUAlf
vZz5N0e2X36XLPZ8tz04Ix9KLHXMEuA7w/aOglH1Lei+PPp7kBjvXAL66soqCTqu
49yNbPPGIjGO453+jNzxhbeimh6a5/Fwd4SjsdSBe8AwIGGZTzLiIzCNM5OmcoUf
Tl5RrVXau4DvX5KvfwOLusl/uJH+7oETJlbi8+fNn2ioYfHg5/Tu3zKZw/Y+6wSA
LsOIJrFmJEgIBUnWp/B1ZC6TeIokmw5FeJsY1UnFDWsPVcax2T/tg6BZ5Q==
-----END CERTIFICATE-----

View file

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAtjUvQj/cxxx584ouGGHw4BKy/iUqgGXQVsSXG5I36EJy5b3r
CeK/6h8IFmoepiJGJg8HskLcOvA/yJl6kEwF/QUCd9+sklKvZSSCi1WhSp42MgSZ
SKvl1uwOsJotCQxpejYVRQOfvgZxCN/tgbgEBQCRhCftUmyfz4xbs2szLbb81kdJ
9LQ4dsXoXurBWU4hb3yHs/FemqpijWR459EgJ8hqVTj7T5NvRVMxWvmhRIW6+Wck
Ks1NS3OCe88sCZN9D3hHMyHB/FcxbWEPooZqBqeiqtZikl9mJZbOs3I1W5tO6Uln
HMBoZkWqKGjJ8uG9scoMJdvTQfm1dB15xUDoYQIDAQABAoIBAFAflReJ47j/EbWB
lwGL2BOAxYsyprztiK8PJe+u3bzZs5LJcBjZyFDYsoLAyZd+zOAhjd3avuOAEFxS
+W2IsL1xvYMfLdDuYUiVxH4m+pVIe0aFdS5awOhAx7jrI1CuT5e5PqMpk85JIN2p
MtTvKX1Voae+swKi16e57f0477ly1s3+xftR+v94PQAvUrxdB0xRQiz5145XpfQ8
vutA0BrNYPUm5LnvGAgLzJckrCjJ2MMxwIojzT5EPmu+fO091mwzuUE1KC20DdLO
qBgdW66a0tH2jX5FLH1RU+kFsjBanrTZunNAvYVycCKJmc96iPMrdfk0YWJfRBuk
w8UEnBECgYEA6BISJACsjxK3P4bLEJfbjG98SUHR2z/k6R8svotwXhPaOuxebH5N
KttS2l2cq5Zj7iYWmtOXVcN9yYDih0Zs3MRm/1XRCkvp9MKiok6TOEbV4Xfi8s1/
yMkpIa3muaO+Xlh40iwmkVnitxIQffdqsHSAI4UL5Y3YUqdV7Wqv5U0CgYEAyP7k
hGfY4X33iq6+Z3t6YmPr04ubvM7xGuqHimR7TmpU0mQDiU/ArPmWjhd1iU2b5ryj
+iWvVRPhiMNhLteugQHBK2Uf0CLx1Ero0543issIvKKSXiEAmXmMcdS35YO/fe9V
0M/GxbvTom36dBIYjyN4keo+vTRZ5T98tsWstWUCgYEArdWTdxp2J7nKQDC0/Vnz
IBAGlk1SaBxFWQZ8GsMSSbYvOwIBfN1i6l5dgqqqh7Fga2xmdFVYv+pu17jOdqwf
MYOA73SV4FObDTeaYV/gUUBmR7zo6B1cwcdFIzBDav0nxT4aSry9qxUciStj5Sem
6ERsE68+iRYmW0tzRyMqXOUCgYAYN12g9kITKPIiK1uVbDMal59aJX/mB6jU7VzX
N7QDhpwhnRsv+APm00toYzsuB8O40RGQmem9/l818xRKaIIF2QhFCjIDCbLJOR1E
IdPfTQcIcy3fWWqREyvwqwhdBrqTmbplJiN0v2SINWfvhB6hYEyuh+J3OU97Z2LH
QpnEYQKBgQCz08jYIxPAMc1HReNCv2gFvUkaKa0QMdkuqIyyBcMUvE24E1xgp9tI
7BGkSu+GGV8m/e/9ll37O5iEXU2y9Y+8O/ZEimRG++e9miqVdpt449xWcr62HluV
CjzA5WBT5NZIVdTIiHe2HKFuKMXdyWkRWN5SClSSZ6aWzO8awf6UbA==
-----END RSA PRIVATE KEY-----

View file

@ -0,0 +1,64 @@
-----BEGIN CERTIFICATE-----
MIIFbTCCBFWgAwIBAgITAP/1MpNXKZIVpnbIa9/M+0pUCzANBgkqhkiG9w0BAQsF
ADBDMQswCQYDVQQGEwJVUzESMBAGA1UEChMJZ29vZCBndXlzMSAwHgYDVQQDExdD
QSBpbnRlcm1lZGlhdGUgKFJTQSkgQTAeFw0yMzA0MTAwMTU3MDhaFw0yMzA3MDkw
MTU3MDdaMBIxEDAOBgNVBAMTB29qYmsubWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQDH2mgsoGSFeXM3h3W0n0KofOPUxo+6Qx5hPcvtDN+HkTss+Udb
UYUOxK5wsqFErOwbGS6gKCVwNeLuVDCkC/r2eAf3MSSAUpAMu10wZlPT/UYMCMs8
mwLz2EN4MBvd3bxZmfmvjzRjYqK7kcvQhxIEjPwzGeQKoHjtbgTRcbJen17cR5i8
jmHelcE+xt+R88MGyNP3LquudKujh7X+URiBwq4YedUl7GiCUIVxl1pGEW/8QK/5
OvrcgCKpkNJU8vhWMsuhqvXLhTYQ3JXe2H7QNBPknGI8uNxGdCSasejyQsyXtamg
w9bQ3D8gH3ooFE4CNFHRtr9Wgmg+ZyQb21/HAgMBAAGjggKJMIIChTAOBgNVHQ8B
Af8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB
/wQCMAAwHQYDVR0OBBYEFNfN19b9UyI7RL60PL/AicpNxp0/MCsGA1UdIwQkMCKA
IGI1hqilwtQoFMkbW0tW2caTKmjXSp6GN958mmXVREPyMHEGCCsGAQUFBwEBBGUw
YzAiBggrBgEFBQcwAYYWaHR0cDovLzEyNy4wLjAuMTo0MDAyLzA9BggrBgEFBQcw
AoYxaHR0cDovLzEyNy4wLjAuMTo0MDAxL2FpYS9pc3N1ZXIvNjYwNTQ0MDQ5ODM2
OTc0MTASBgNVHREECzAJggdvamJrLm1lMCcGA1UdHwQgMB4wHKAaoBiGFmh0dHA6
Ly9leGFtcGxlLmNvbS9jcmwwQAYDVR0gBDkwNzAIBgZngQwBAgEwKwYDKgMEMCQw
IgYIKwYBBQUHAgEWFmh0dHA6Ly9leGFtcGxlLmNvbS9jcHMwggEGBgorBgEEAdZ5
AgQCBIH3BIH0APIAdwA6qT9O/RxRKcQnhtlrR6mubchBDheA1y/bT9teLGXGdAAA
AYdpGIqzAAAEAwBIMEYCIQD8GVPhm9jPxwla9uVtuYk5ateCOqv9f6T0A5IVGWpb
iAIhAOgnep1Go8Zvl/3ig5IV+J1E3rc5udUigq2Lbxt1q5u8AHcAUtToynGEyMkk
XDMQei8Ll54oMwWHI0IieDEKs12/Td4AAAGHaRiKswAABAMASDBGAiEAlOUvnuUF
BUWIzMgsH3TTbaQN1gga8OTYxDySjQdj/mQCIQDgGQPuqp1cgjQHPik/aVCWYtbq
Pf79O3zv0Pz7p9ROvzANBgkqhkiG9w0BAQsFAAOCAQEAWodvuzVbZNalTo03JO0s
bCugOhOWyi9dqfr1Zk2X/WvKFd/qMjNj0pVRU5as6ihS8zzhSL4fllO+RoNGOnJc
Mw8QgfdHkrWc2XwmSmrKvGNpS68ZVjxv5TsZVvK+O2ZzHMQgKDXdgyF0P02MDkQP
/FF8FvJc4HaQRaI3CMg2bXXwMQ8efvkaWZGs538acldJpgxloeUTM+5Y6RDcXkqR
ihDD9R13GlXZgJ5N+z83ipeBorJLIIOMlqxGB//4gS9qxEqmnU4yISEw9efXICak
Ny/wlpRqqK1jTrp3SuuAe4XCorQ4J9SZS+aa5BRU6rH5w5wKhXLd55vphPkFdtPO
DA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFZzCCA0+gAwIBAgIQHPTBy0utaJ82mHJs9V3u8zANBgkqhkiG9w0BAQsFADA5
MQswCQYDVQQGEwJVUzESMBAGA1UEChMJZ29vZCBndXlzMRYwFAYDVQQDEw1DQSBy
b290IChSU0EpMB4XDTIwMDEwMTEyMDAwMFoXDTQwMDEwMTEyMDAwMFowQzELMAkG
A1UEBhMCVVMxEjAQBgNVBAoTCWdvb2QgZ3V5czEgMB4GA1UEAxMXQ0EgaW50ZXJt
ZWRpYXRlIChSU0EpIEEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCk
f1rlGJeno27J8UAltWo8PopRsTP93Il6+L+SScaOUQsM+TCbTO5EJ4xC+d3Unp8v
iZRLAB1/lGhHh/Uifzov2ux2sa9J4kxlfCxVaaCx6maOs9KnfGUug2hcUCh1oUVv
zD9X9VkWdBdR+kKJvYqWJlU/EJxEa5ERjFp591LQBpR7ksZrsbLvXeywqVS3ek8s
d7w+ZqpYOfo6DNLl5aEJlk6F6CiSjmT352n8dnsOEIEL+bOusLhP5F8pED85geU5
rijc38fZ+gfZAVVenz7kqBh7ld6qT5inIM4uQa7oCuFX2dZ0jqm5TFBBtQp9dkFv
WFz9kEb/CVJr1IsTdp1PAgMBAAGjggFfMIIBWzAOBgNVHQ8BAf8EBAMCAYYwHQYD
VR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYBAf8CAQAw
KQYDVR0OBCIEIGI1hqilwtQoFMkbW0tW2caTKmjXSp6GN958mmXVREPyMCsGA1Ud
IwQkMCKAINmvCHaWHo5MD5lKL52otAsr/TsCX5Hwfy5euQ6zIAWEMFgGCCsGAQUF
BwEBBEwwSjAjBggrBgEFBQcwAYYXaHR0cDovL2V4YW1wbGUuY29tL29jc3AwIwYI
KwYBBQUHMAKGF2h0dHA6Ly9leGFtcGxlLmNvbS9yb290MCcGA1UdHwQgMB4wHKAa
oBiGFmh0dHA6Ly9leGFtcGxlLmNvbS9jcmwwOwYDVR0gBDQwMjAEBgIqAzAqBgIt
BjAkMCIGCCsGAQUFBwIBFhZodHRwOi8vZXhhbXBsZS5jb20vY3BzMA0GCSqGSIb3
DQEBCwUAA4ICAQCTLNQlCzHynESAvtPRV1FPaOQhx01RofwS/0Zg3IH5oXxSC98C
n2L0xHN1gCaJai9XutrFtMCjeBmese48QoPa8MxrB1UpmZ1AuFOQAfHWJZbYPp0V
PxgY34W9Onb+JPnKTbL9ofKUV0aX67eJ5KKFD1G2z+y9Lz1oA3yJpGzqOY/JCWYz
q46ik0bmgcGfol6F/T5hoE8pZk8Wr+nNUpSuOSNp7c/g2/pKDRWK8trTrG3owtaJ
LbQc+W4e97AtTg6DGvR5gftar/+4g2o0xhKSnep+s/bf5NFXVDCTvCmemrbR8Hr7
NLDKXWuGMoMKIxhyPX6ttpU2Um3rQ1rCQbJ5yWIREZvbdaeK8HSRE3GYE71Z3n/0
0Kmtg2BKGkrJzcqUSG4o+9mdSjhJ65J76ri5tVQby7Ai7W2KlNjpdI6GYtejUAlf
vZz5N0e2X36XLPZ8tz04Ix9KLHXMEuA7w/aOglH1Lei+PPp7kBjvXAL66soqCTqu
49yNbPPGIjGO453+jNzxhbeimh6a5/Fwd4SjsdSBe8AwIGGZTzLiIzCNM5OmcoUf
Tl5RrVXau4DvX5KvfwOLusl/uJH+7oETJlbi8+fNn2ioYfHg5/Tu3zKZw/Y+6wSA
LsOIJrFmJEgIBUnWp/B1ZC6TeIokmw5FeJsY1UnFDWsPVcax2T/tg6BZ5Q==
-----END CERTIFICATE-----

View file

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAx9poLKBkhXlzN4d1tJ9CqHzj1MaPukMeYT3L7Qzfh5E7LPlH
W1GFDsSucLKhRKzsGxkuoCglcDXi7lQwpAv69ngH9zEkgFKQDLtdMGZT0/1GDAjL
PJsC89hDeDAb3d28WZn5r480Y2Kiu5HL0IcSBIz8MxnkCqB47W4E0XGyXp9e3EeY
vI5h3pXBPsbfkfPDBsjT9y6rrnSro4e1/lEYgcKuGHnVJexoglCFcZdaRhFv/ECv
+Tr63IAiqZDSVPL4VjLLoar1y4U2ENyV3th+0DQT5JxiPLjcRnQkmrHo8kLMl7Wp
oMPW0Nw/IB96KBROAjRR0ba/VoJoPmckG9tfxwIDAQABAoIBAQCVNSGrl8AUyrzT
i2W8iV657iwm8mviEzQ+Q2XZwE+upiY5CI9WxUEC6qKV7zdpz3SjMqTV28M/yGt5
pg9+mpcupiTET8NBruJvLv9/IBab4a8HUxVxVQXaSe7tb3WOqnpxpvx8Lv1c6go2
4b36HK2+CghMmprfuDkwgoBEYo9aBm5C9kH2EThZjvgqYb+3C2OPWKu4so6kn+pr
BVgoslTlYEhmbdv3CVmEKpjfYJ2PFW0XQvHuNX1S6OSKgm7oPK8efgixdJ9DArH2
B5ST8UasjCyGzdjXBiBMZl9hMwTQHM5dhEA0I8Ay1UOIpkJsBARrWYXXpacfMKYx
TbN9yFqhAoGBAOuro28hNN7zazeI2rUIPQ03ALQUYS/fCHPF+Zj9pnX0G4JfSiAm
lJjFZLosgByUTT1BfsRCvi8U1XXigR+cR1b7e/wQU0nY7dX5kTvdYtgy1EVIatjP
ZE0gAkfPGfpBcvkuRpEn1d76NY+Tc0Skyczw1PenIsgAMX3lBEuIero3AoGBANkX
zqBc2Ky5WZYOdceTDBQoYWMjFnFtyhN8uKDPCFVBmUPe8zjjVYcDxJhbUxSdHufZ
iZ9m++VbghkMRsom/aQhtGSDA/G+0KFLZHkKI+2Kp5nlql+U5pBMaRAz3y7DDYUY
tdmw0vKr3wyGG4a1OpX/3GyCUo0AWraNSe/rLX7xAoGAEKvHl+jlcJAPmZIYxo2a
pACsEBEQ/u3sDySGD4iB6f4mpAZRnAyenl/4TCMxvNPQ0vB7Iy8FfRcgMoKfV7ka
YtDPaHlPKv4pdOV+nJmAkIKn+W6yADxLgBkvkBzaXZWbqHzZiRMkUe2pNErd8JEn
pVOz/QDZuQQqfBljQGSbKekCgYA+ktgh7OEfWAV0dRKJxd6zaLg5ZQGxDB4047wr
zcDvIgtVPswIV65tTi66Y4hc5rTjyxYZ9gshHvEu2xUEa5ysVHK0jfbzFTb5Zsu8
/6k/bLnGaCZlinuyl/OokesAhYQ+GtM/vfHvtI6EA5unhlEuryMPu7ijn7iF6c+n
8beZYQKBgQDgXUhEV6jKvq8tDxsqSz+GuKt6tr18pHdFUrr3rbLOsRrvsEawnqkk
R2MsC50rfIcpji+KMEG04olYiE9bHtWnwrm7ADP7rfqwB6M0FHbxbzidVqSlLTdH
VvlDbBXGVwS7pFSXi7GVnAod+7EAt/zAvda3zVojBz7W3SOgaWobgQ==
-----END RSA PRIVATE KEY-----

View file

@ -0,0 +1,64 @@
-----BEGIN CERTIFICATE-----
MIIFdjCCBF6gAwIBAgITAP/njBCTrCjMpiq9Xh8Xh4hU0DANBgkqhkiG9w0BAQsF
ADBDMQswCQYDVQQGEwJVUzESMBAGA1UEChMJZ29vZCBndXlzMSAwHgYDVQQDExdD
QSBpbnRlcm1lZGlhdGUgKFJTQSkgQTAeFw0yMzA0MTAwMTQ5MzVaFw0yMzA3MDkw
MTQ5MzRaMBcxFTATBgNVBAMTDHFpLmphY2t5dS5jbjCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBANBt8w+53ef/mHfz8JRHIz/C2/5pEZP0VM4rW8NfbO26
KnugGnfGtsRzCxKNHQ1SWamMzqgyEjLzcM0L9U7/yjWW3sSBCglVfg5BFrYiX5gY
S2a7pUPh3/zpfEUHRV6PfpPgDWVFzPzAGF3rwJIeQoxwQho9ljfffYsf7llBBCKU
DOHHiBgGh2cmf7eg6Wu+mzWI+dnOzS2mW0QX9+X7Nz5q5ph1bRikYHP2yJ6kix8t
DSeNpwlKFYynv/FfHbCg+mTfQ8gWPCXU/Wr3TnK5VQtqr3FzCq2IdzfEYYjaq1Mn
7zdQ7gE07v/Ovq53/hXdjdiaDflF+2uDQ12cPdt7t40CAwEAAaOCAo0wggKJMA4G
A1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYD
VR0TAQH/BAIwADAdBgNVHQ4EFgQU2C4AQmUi47BO+ZnPqn+5WYH0BaswKwYDVR0j
BCQwIoAgYjWGqKXC1CgUyRtbS1bZxpMqaNdKnoY33nyaZdVEQ/IwcQYIKwYBBQUH
AQEEZTBjMCIGCCsGAQUFBzABhhZodHRwOi8vMTI3LjAuMC4xOjQwMDIvMD0GCCsG
AQUFBzAChjFodHRwOi8vMTI3LjAuMC4xOjQwMDEvYWlhL2lzc3Vlci82NjA1NDQw
NDk4MzY5NzQxMBcGA1UdEQQQMA6CDHFpLmphY2t5dS5jbjAnBgNVHR8EIDAeMByg
GqAYhhZodHRwOi8vZXhhbXBsZS5jb20vY3JsMEAGA1UdIAQ5MDcwCAYGZ4EMAQIB
MCsGAyoDBDAkMCIGCCsGAQUFBwIBFhZodHRwOi8vZXhhbXBsZS5jb20vY3BzMIIB
BQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcAHRrTQca8iy14Qbrw6/itgVzVWTcaENF3
tWnJP743pq8AAAGHaRGgTAAABAMASDBGAiEA6F91bdTgx9slRzhi3ep1LSgVSUzA
iotTuU5cQJDIdyACIQCsrhyGncGIE8ljh5yQ3NI7cFnlD27zz166EV8MwWfu8wB2
AHvdIE8nOCpGaR79qYHkjkttuDHev9tVJliMURfZl73iAAABh2kRokMAAAQDAEcw
RQIgLfLzsUf8xwA8WH7F/lO/loAz7vUeglFn2nqhf3nzyN4CIQDo4llhw/V1eqYq
pJ0IjezwIzreOdPBXza3J0PXSRTlNzANBgkqhkiG9w0BAQsFAAOCAQEAcMUXX5/w
n7n12daDqe9UQczlngpkC10o7j4rVqkOZ9m+fmcz/PKt3mMfQZ92z4zRh60AUgpw
SL0Gfvkz1nRJ2exMipuTkT8ftpGJD77+Wqb8pKNek/7T9LbDhv8QPWXcB9T8qTIR
jw4gP4jF1HmAa2I05M5ofx+EF6WEYUahJduYs5CoQ8gpk4frchAvo8V6wNnALQHV
xMW3lppLItGIrfu3o+m32LELI+Hz8nyvuguT9JRXKhtCYqadtWlVqPLisj8l1CjK
NcZz0DtALqtQqBWfE0MeWkb94TDLu8BahQM4AtPHqzZ3DFkJGB2VGMAWtl0tt0DB
Pf6fDkASgWZKNQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFZzCCA0+gAwIBAgIQHPTBy0utaJ82mHJs9V3u8zANBgkqhkiG9w0BAQsFADA5
MQswCQYDVQQGEwJVUzESMBAGA1UEChMJZ29vZCBndXlzMRYwFAYDVQQDEw1DQSBy
b290IChSU0EpMB4XDTIwMDEwMTEyMDAwMFoXDTQwMDEwMTEyMDAwMFowQzELMAkG
A1UEBhMCVVMxEjAQBgNVBAoTCWdvb2QgZ3V5czEgMB4GA1UEAxMXQ0EgaW50ZXJt
ZWRpYXRlIChSU0EpIEEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCk
f1rlGJeno27J8UAltWo8PopRsTP93Il6+L+SScaOUQsM+TCbTO5EJ4xC+d3Unp8v
iZRLAB1/lGhHh/Uifzov2ux2sa9J4kxlfCxVaaCx6maOs9KnfGUug2hcUCh1oUVv
zD9X9VkWdBdR+kKJvYqWJlU/EJxEa5ERjFp591LQBpR7ksZrsbLvXeywqVS3ek8s
d7w+ZqpYOfo6DNLl5aEJlk6F6CiSjmT352n8dnsOEIEL+bOusLhP5F8pED85geU5
rijc38fZ+gfZAVVenz7kqBh7ld6qT5inIM4uQa7oCuFX2dZ0jqm5TFBBtQp9dkFv
WFz9kEb/CVJr1IsTdp1PAgMBAAGjggFfMIIBWzAOBgNVHQ8BAf8EBAMCAYYwHQYD
VR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYBAf8CAQAw
KQYDVR0OBCIEIGI1hqilwtQoFMkbW0tW2caTKmjXSp6GN958mmXVREPyMCsGA1Ud
IwQkMCKAINmvCHaWHo5MD5lKL52otAsr/TsCX5Hwfy5euQ6zIAWEMFgGCCsGAQUF
BwEBBEwwSjAjBggrBgEFBQcwAYYXaHR0cDovL2V4YW1wbGUuY29tL29jc3AwIwYI
KwYBBQUHMAKGF2h0dHA6Ly9leGFtcGxlLmNvbS9yb290MCcGA1UdHwQgMB4wHKAa
oBiGFmh0dHA6Ly9leGFtcGxlLmNvbS9jcmwwOwYDVR0gBDQwMjAEBgIqAzAqBgIt
BjAkMCIGCCsGAQUFBwIBFhZodHRwOi8vZXhhbXBsZS5jb20vY3BzMA0GCSqGSIb3
DQEBCwUAA4ICAQCTLNQlCzHynESAvtPRV1FPaOQhx01RofwS/0Zg3IH5oXxSC98C
n2L0xHN1gCaJai9XutrFtMCjeBmese48QoPa8MxrB1UpmZ1AuFOQAfHWJZbYPp0V
PxgY34W9Onb+JPnKTbL9ofKUV0aX67eJ5KKFD1G2z+y9Lz1oA3yJpGzqOY/JCWYz
q46ik0bmgcGfol6F/T5hoE8pZk8Wr+nNUpSuOSNp7c/g2/pKDRWK8trTrG3owtaJ
LbQc+W4e97AtTg6DGvR5gftar/+4g2o0xhKSnep+s/bf5NFXVDCTvCmemrbR8Hr7
NLDKXWuGMoMKIxhyPX6ttpU2Um3rQ1rCQbJ5yWIREZvbdaeK8HSRE3GYE71Z3n/0
0Kmtg2BKGkrJzcqUSG4o+9mdSjhJ65J76ri5tVQby7Ai7W2KlNjpdI6GYtejUAlf
vZz5N0e2X36XLPZ8tz04Ix9KLHXMEuA7w/aOglH1Lei+PPp7kBjvXAL66soqCTqu
49yNbPPGIjGO453+jNzxhbeimh6a5/Fwd4SjsdSBe8AwIGGZTzLiIzCNM5OmcoUf
Tl5RrVXau4DvX5KvfwOLusl/uJH+7oETJlbi8+fNn2ioYfHg5/Tu3zKZw/Y+6wSA
LsOIJrFmJEgIBUnWp/B1ZC6TeIokmw5FeJsY1UnFDWsPVcax2T/tg6BZ5Q==
-----END CERTIFICATE-----

View file

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA0G3zD7nd5/+Yd/PwlEcjP8Lb/mkRk/RUzitbw19s7boqe6Aa
d8a2xHMLEo0dDVJZqYzOqDISMvNwzQv1Tv/KNZbexIEKCVV+DkEWtiJfmBhLZrul
Q+Hf/Ol8RQdFXo9+k+ANZUXM/MAYXevAkh5CjHBCGj2WN999ix/uWUEEIpQM4ceI
GAaHZyZ/t6Dpa76bNYj52c7NLaZbRBf35fs3PmrmmHVtGKRgc/bInqSLHy0NJ42n
CUoVjKe/8V8dsKD6ZN9DyBY8JdT9avdOcrlVC2qvcXMKrYh3N8RhiNqrUyfvN1Du
ATTu/86+rnf+Fd2N2JoN+UX7a4NDXZw923u3jQIDAQABAoIBAEd+b3FlgAikU9hR
hKRYAm9Ml8mcoLrvhGdz1/YcNXEV+pyNPob3UpnwHEwwu1ZmePr/oaNwCW4QsxCi
mXKPqvzW03L0EE1DVgntqayv/bpeGv8SPo4aXIqUTFwhMlpNPk3a/L1QRBAulC0j
QNreJlWl7Aa0OWLQ9m9SdJ+I/bIeF54AXnkJDu6HoGHyMm6bgBirvM8KEpMaGULH
9XU5Jn//7NYVZ5PrCP89Xm+tWvzbGp5QOUUTZYe4fqtetDFu4BZsEU9zA/3gqHG5
WQWk+SDZdTlyzVbigAmiqsWI20duPTsJ6Be7xIU/mORI4If/h4VYVjzriyXJlUFl
KYxLEMECgYEA1fkYQfk6z85JhLUUG/KkfM+kJ7G4/cshci53LDf4GCNzUVEf1o4P
hzrJspDftbu+k1bdyybJsRYt0+Gi3cbSoIQZkL7R3OSUDigUkORpD3d4xBL9ZkI3
C02o15BSsBU54IXi8JRwj5zLcqcaS6UtKDgYORyLj5jSZ347kB8iljcCgYEA+V4d
6dEXD1WN6lH2brdwrnnNQP9f8yElHICRwsihU0tcYRlkjjximD2opgfN0on9bDmD
rbnoT78y+Jb2YOQfamYCSTmvSb6PB3e0hRVZ8VUN6PeajYh5EE8E5Smvgszaghs1
1a9pIT4pCO6/fK3o4u3yTZrucLo4qLrRVv0pPlsCgYA5E8tevebsS/Dcj5kfo2gx
SwpU9FmOicMQPEjZ6MwrVDmMtYEysI5/2jS3h2HFjqFVmFRtvpkKvgnXfVb+pezF
mLdhHyXIMMk1xYdG50cHMy1p0E78GimowDyL1Bnakq7vr4dL+azVAlRa7yxahWM4
WU5M3cp0saVeqhOlbEjDnQKBgHYpAKegafrcIUjc2ZaQ2ZXzJS0dVQvRstIUofzY
MIlVdkqUS6+SMW3OGbHClOakeC7l+d1B8DCJes+MSOaUccZq275y1PpujzuMnz9I
ZLwT/2lamiNifWsa5kjoPcAO7aMk3ZeJbJlR6QPQjW+4wFd3RI89UKqdsudQzo0X
nIltAoGBAKydemZxoMxhjazemBVTB8b90sb3vHZf/oZMQy87kbUGlD4KvrWr6SR1
XVPzjGGdTNAKPSL7u4mz8CtK9XJh9qU7zSSNhIJ0EnAk9Rj58iUS+bePNn8xj3Ld
YgRKVYtR0HgpY97uAXK/TWQG87DEB8E7vGXtihVOnpwQMIyIZoco
-----END RSA PRIVATE KEY-----

View file

@ -0,0 +1,64 @@
-----BEGIN CERTIFICATE-----
MIIFizCCBHOgAwIBAgITAP9Cy1z0kRtn5/A05Sgxi91RqjANBgkqhkiG9w0BAQsF
ADBDMQswCQYDVQQGEwJVUzESMBAGA1UEChMJZ29vZCBndXlzMSAwHgYDVQQDExdD
QSBpbnRlcm1lZGlhdGUgKFJTQSkgQTAeFw0yMzA0MTAwMTU1MzRaFw0yMzA3MDkw
MTU1MzNaMBcxFTATBgNVBAMTDHFpLmphY2t5dS5jbjCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAMRaGc7UU9LVxq26aV3dChWKsKPI/Jl6oSgc8OFd8JKh
o8L6cF+PibeVEThOOEJVwZ/KkBNvi23LtZt/YpxvqvGQedxIwrRMO2b1sdEB+rvX
wkHRCAFPjhUPssji/6K/b0cCVAR8eEV4NF63OCmGQbqyITxHBRxCbdzn+/t0bJAd
qQiRF5N8NVegCKwyBahrDiJZ/+t5NMp5xOpIA7aYaSCxPFqV2TJtuM1xibR+ihhD
7isvLnXS37OmGvJ47ej+Vt1aSA/qS/EOK7z1Qyw8MS3f1vHp/el6MxleX//zLoxq
JJiK0L2PN2tbgVk2L+zgFJwON+IszbfmLxYVv44jzDUCAwEAAaOCAqIwggKeMA4G
A1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYD
VR0TAQH/BAIwADAdBgNVHQ4EFgQUY3dWka0CyhAEHj+wY8UWVJQ47qwwKwYDVR0j
BCQwIoAgYjWGqKXC1CgUyRtbS1bZxpMqaNdKnoY33nyaZdVEQ/IwcQYIKwYBBQUH
AQEEZTBjMCIGCCsGAQUFBzABhhZodHRwOi8vMTI3LjAuMC4xOjQwMDIvMD0GCCsG
AQUFBzAChjFodHRwOi8vMTI3LjAuMC4xOjQwMDEvYWlhL2lzc3Vlci82NjA1NDQw
NDk4MzY5NzQxMC4GA1UdEQQnMCWCFWFtc3RvdXJzaGlwLmphY2t5dS5jboIMcWku
amFja3l1LmNuMCcGA1UdHwQgMB4wHKAaoBiGFmh0dHA6Ly9leGFtcGxlLmNvbS9j
cmwwQAYDVR0gBDkwNzAIBgZngQwBAgEwKwYDKgMEMCQwIgYIKwYBBQUHAgEWFmh0
dHA6Ly9leGFtcGxlLmNvbS9jcHMwggEDBgorBgEEAdZ5AgQCBIH0BIHxAO8AdQAd
GtNBxryLLXhBuvDr+K2BXNVZNxoQ0Xe1ack/vjemrwAAAYdpFxjPAAAEAwBGMEQC
IClnqIozudKr21hQr5KnaXwSh+YZz/NVJVp+Rzz0urXGAiAamh8HeKIR73f4UzyR
foE8M13U7ukO+WAYZzgVyO+5DgB2AHvdIE8nOCpGaR79qYHkjkttuDHev9tVJliM
URfZl73iAAABh2kXGM8AAAQDAEcwRQIhAO0Vpl5twRA3b+do3hRHIR9cGjFG9py3
mbleaKRyRfmsAiA2cGX38jZuxhKTb2i4BOWyJ9UlQiwhabMBLK57wKW3dzANBgkq
hkiG9w0BAQsFAAOCAQEAGHXtZKcr0RNxaP3icV48Pc6LMTdtPIILbbbfzEGvqCQa
JmI0hdX6E4QeLsSJyrX8JvVebAILYsqEZgnkx/EQg43PDlz6giD69PV/QBmS6FW9
z7P62xGjrI696obeH2/jKUdgjSUhxPmluDZnTyizg8dCAOpKcReu2LIFNcE0+qiE
9kfRi8FRjvauF/y8xhvJ+OxkvMDIEXKlobjffP8Q61Cf7fEGe2PiAoiTndRUqR72
pTwHDmilZKLEKFIFbxmTZxLa9pMOeRDpwl5wqrXW43FoihoJpt15H72R14f2apaM
bJDegluaH9Jq3ACB7JIivyn3J9XddLHlTGG+nqDA9Q==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFZzCCA0+gAwIBAgIQHPTBy0utaJ82mHJs9V3u8zANBgkqhkiG9w0BAQsFADA5
MQswCQYDVQQGEwJVUzESMBAGA1UEChMJZ29vZCBndXlzMRYwFAYDVQQDEw1DQSBy
b290IChSU0EpMB4XDTIwMDEwMTEyMDAwMFoXDTQwMDEwMTEyMDAwMFowQzELMAkG
A1UEBhMCVVMxEjAQBgNVBAoTCWdvb2QgZ3V5czEgMB4GA1UEAxMXQ0EgaW50ZXJt
ZWRpYXRlIChSU0EpIEEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCk
f1rlGJeno27J8UAltWo8PopRsTP93Il6+L+SScaOUQsM+TCbTO5EJ4xC+d3Unp8v
iZRLAB1/lGhHh/Uifzov2ux2sa9J4kxlfCxVaaCx6maOs9KnfGUug2hcUCh1oUVv
zD9X9VkWdBdR+kKJvYqWJlU/EJxEa5ERjFp591LQBpR7ksZrsbLvXeywqVS3ek8s
d7w+ZqpYOfo6DNLl5aEJlk6F6CiSjmT352n8dnsOEIEL+bOusLhP5F8pED85geU5
rijc38fZ+gfZAVVenz7kqBh7ld6qT5inIM4uQa7oCuFX2dZ0jqm5TFBBtQp9dkFv
WFz9kEb/CVJr1IsTdp1PAgMBAAGjggFfMIIBWzAOBgNVHQ8BAf8EBAMCAYYwHQYD
VR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYBAf8CAQAw
KQYDVR0OBCIEIGI1hqilwtQoFMkbW0tW2caTKmjXSp6GN958mmXVREPyMCsGA1Ud
IwQkMCKAINmvCHaWHo5MD5lKL52otAsr/TsCX5Hwfy5euQ6zIAWEMFgGCCsGAQUF
BwEBBEwwSjAjBggrBgEFBQcwAYYXaHR0cDovL2V4YW1wbGUuY29tL29jc3AwIwYI
KwYBBQUHMAKGF2h0dHA6Ly9leGFtcGxlLmNvbS9yb290MCcGA1UdHwQgMB4wHKAa
oBiGFmh0dHA6Ly9leGFtcGxlLmNvbS9jcmwwOwYDVR0gBDQwMjAEBgIqAzAqBgIt
BjAkMCIGCCsGAQUFBwIBFhZodHRwOi8vZXhhbXBsZS5jb20vY3BzMA0GCSqGSIb3
DQEBCwUAA4ICAQCTLNQlCzHynESAvtPRV1FPaOQhx01RofwS/0Zg3IH5oXxSC98C
n2L0xHN1gCaJai9XutrFtMCjeBmese48QoPa8MxrB1UpmZ1AuFOQAfHWJZbYPp0V
PxgY34W9Onb+JPnKTbL9ofKUV0aX67eJ5KKFD1G2z+y9Lz1oA3yJpGzqOY/JCWYz
q46ik0bmgcGfol6F/T5hoE8pZk8Wr+nNUpSuOSNp7c/g2/pKDRWK8trTrG3owtaJ
LbQc+W4e97AtTg6DGvR5gftar/+4g2o0xhKSnep+s/bf5NFXVDCTvCmemrbR8Hr7
NLDKXWuGMoMKIxhyPX6ttpU2Um3rQ1rCQbJ5yWIREZvbdaeK8HSRE3GYE71Z3n/0
0Kmtg2BKGkrJzcqUSG4o+9mdSjhJ65J76ri5tVQby7Ai7W2KlNjpdI6GYtejUAlf
vZz5N0e2X36XLPZ8tz04Ix9KLHXMEuA7w/aOglH1Lei+PPp7kBjvXAL66soqCTqu
49yNbPPGIjGO453+jNzxhbeimh6a5/Fwd4SjsdSBe8AwIGGZTzLiIzCNM5OmcoUf
Tl5RrVXau4DvX5KvfwOLusl/uJH+7oETJlbi8+fNn2ioYfHg5/Tu3zKZw/Y+6wSA
LsOIJrFmJEgIBUnWp/B1ZC6TeIokmw5FeJsY1UnFDWsPVcax2T/tg6BZ5Q==
-----END CERTIFICATE-----

View file

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAxFoZztRT0tXGrbppXd0KFYqwo8j8mXqhKBzw4V3wkqGjwvpw
X4+Jt5UROE44QlXBn8qQE2+Lbcu1m39inG+q8ZB53EjCtEw7ZvWx0QH6u9fCQdEI
AU+OFQ+yyOL/or9vRwJUBHx4RXg0Xrc4KYZBurIhPEcFHEJt3Of7+3RskB2pCJEX
k3w1V6AIrDIFqGsOIln/63k0ynnE6kgDtphpILE8WpXZMm24zXGJtH6KGEPuKy8u
ddLfs6Ya8njt6P5W3VpID+pL8Q4rvPVDLDwxLd/W8en96XozGV5f//MujGokmIrQ
vY83a1uBWTYv7OAUnA434izNt+YvFhW/jiPMNQIDAQABAoIBABKyAYMP9Gs+r4wb
E608PpmOewMdP+/dHTsUhlru9tj/SvhloA15PUOdjeYujGzEfYsZXl57YGsz2jbU
Ci+a8kvN1cyDoQZJu94xxpx/87+u63AY1wpI6N5YgE1gT7bPQ2kfb6B9uXXj3Bio
mVBa2CdOjpuOp43pRUyjSfrHOw79mPOlCyOmYF3xrJr0EeZxxh06KKqRZUUTQjA4
V75gRkjwMwWFJWBe8OL+YPcSxunN37MrtFsxgGn6tDgTLJC3S5Q4AjbvUyVA4M1F
5FiloWWTwO7MBKZmd0S77e/LTG8ysejXHyLy/n5arM7H6YjkANx9vBb3Tgs+3PdB
8d+qHIECgYEAxehYduV7TN6RTSP3IJMi0aCCDAId/1xK/qh9iFX/VznZX7gIluM7
1QWU1Zblbk1OeXaJTCwKf2hTIfkLhs8FnhHKcoReWBKEJzl76xwrlwwUKI+JXf1O
vdQk3OwRVS1iKayWaBQnC2/fT+CzUBuQKH3tMGVvhMuTXJ2iqmL7fQcCgYEA/fzb
d6AoIL81rzLeeFgV1X3k1tXoV/RlnWq2doG+81QynLqA/yERrJAY7k/89yyRSqcN
SbfRvwCxkc3NDFt0R2uUKkPvUDw9oCidYU/711/xfGR4xT0bzMUX7O9mmUTPe8Lj
A9FcTBdVqdy/lEwpc1Fi+YKCAJ0GV3h+hgFP2eMCgYEAl4SGTijtWHHB7rxNVKwx
aSqoxgbM7pe7dvKKgVnNzvskOEtOkC7SvQmz5D7N0r/vB8E/5oiFVPwLQaRJNeHD
nDxksX40ONucP+ebvunnWZJO0Krr8YCgy2bi/hziPEMtt1hCItbi+beh0abnwboI
iWe3s2jFk3bEkJDDXA3CGvsCgYAbLsK2TNe+mXg/ZexVaOf9T1n8fCw/rZJqhI8+
o6gyFqLMD1Ha/EkN9OYWK01hjs2F9dcAOsIh9QsMFcCKQAdz1VmoJFkqdygJSg99
6LeFV2la7M3YHjApfDaRTxXl9W1XS4ZMVE3SfvTWFyAR2QzeoKk9FvCe7C9PkT/J
S76mDQKBgQCTdNUdbwGsalySqB6EHlaNQnmlhW1yGTKIobQ/fbEYS/aCm1yhKkVD
V9H10LXOeEQGZaLKdS4I8i46ldDpcvHsdBYpvaZ3w+sWzHanyiEcq6goXwloQ8a2
j8Fqvj+G4S06gvNQ4Xkv8eHSZM1FGsqezTBFgNr+C7Kb0xNdQ9ISag==
-----END RSA PRIVATE KEY-----

View file

@ -0,0 +1,64 @@
-----BEGIN CERTIFICATE-----
MIIFeTCCBGGgAwIBAgITAP8yxO86Bnt3WApmIOscI9aZGzANBgkqhkiG9w0BAQsF
ADBDMQswCQYDVQQGEwJVUzESMBAGA1UEChMJZ29vZCBndXlzMSAwHgYDVQQDExdD
QSBpbnRlcm1lZGlhdGUgKFJTQSkgQTAeFw0yMzA0MTAwMTU5MjBaFw0yMzA3MDkw
MTU5MTlaMBkxFzAVBgNVBAMTDnRlc3QuamFja3l1LmNuMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEA0DgmFoPB+e+V573Fn04jdk+MGj4K5OA7pNM/72ZM
+u12IzdRl9tkCtq+LEr5rPqd6i+jeQPMR7jYz5rgeeaE6uxgxqjJvL7UcrCaFZs8
ONFPYp/R/VLsV0fNU6HVFxGlTh6cYpL91JC/SA66xWv14MEvesUPs1Ia8XtroFyc
OaLwc73DVi6jGzaoJOsx5AjCv1a8FP6/71uenBwkjDt5l5glwkYiRWl6p+XrWvSe
MBd2/ufneFRoDUnOcnqtAGPagRdJuUZnVzxhXJsSUC+RrK6ZjyWrbUCr0mrYx6qb
ta5BkyqZnyXTx/iSqTo/87/OX7I/TAhlrfl6B6P5NbkarQIDAQABo4ICjjCCAoow
DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM
BgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTHv0Rn8yDyoE5Z7djfQJcft3aJ0DArBgNV
HSMEJDAigCBiNYaopcLUKBTJG1tLVtnGkypo10qehjfefJpl1URD8jBxBggrBgEF
BQcBAQRlMGMwIgYIKwYBBQUHMAGGFmh0dHA6Ly8xMjcuMC4wLjE6NDAwMi8wPQYI
KwYBBQUHMAKGMWh0dHA6Ly8xMjcuMC4wLjE6NDAwMS9haWEvaXNzdWVyLzY2MDU0
NDA0OTgzNjk3NDEwGQYDVR0RBBIwEIIOdGVzdC5qYWNreXUuY24wJwYDVR0fBCAw
HjAcoBqgGIYWaHR0cDovL2V4YW1wbGUuY29tL2NybDBABgNVHSAEOTA3MAgGBmeB
DAECATArBgMqAwQwJDAiBggrBgEFBQcCARYWaHR0cDovL2V4YW1wbGUuY29tL2Nw
czCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB2AHvdIE8nOCpGaR79qYHkjkttuDHe
v9tVJliMURfZl73iAAABh2kajMwAAAQDAEcwRQIhAP2N2X1BWt78YEzZaAxJTODa
pRE/x6RLEt49sNRYuGVvAiBIGFoEpvFGcxBnjA0aMXo0nTP5fxwMlCNT5hSKEQ/Z
qAB2AB0a00HGvIsteEG68Ov4rYFc1Vk3GhDRd7VpyT++N6avAAABh2kajMsAAAQD
AEcwRQIgOKLaqF47SLuWMnUnKvD3L8FvVTfwqtAkY/VOCBH4dCsCIQDjjhfO2EQA
gR1J3mbMpoYko+9fFkH3etYq15+ZGUPUmTANBgkqhkiG9w0BAQsFAAOCAQEATVu8
bLs32RpgBfLM2197IFSKEdx7UU62WhL2u7SH7NYdFxzGP15pME3UbjPwFFyylu4G
2zopfUrz7bmnNsQ46eQh8cPVi7KkEnGIywRPLNIWMsLxG5qDA+87NtiOrqHdpIFH
YynlPO4KQ03MaT2EUDSMDpW33J+1e+9Brsg17LwM/qUHdUH51vxkPL+QnWo576AG
hKlK9lR8gg6xosEoL9vdzaXWGiWlYvfDAnHWaS/HRS2U1ImYhrAPAWLyqtbHhr6f
anpGFeu0Qr8X5YxXH349/W1oWU83GkSPeHM0JBjXw+Mo7zM5chaAqksC7efQN6Lm
JSTu/JAJ4yqhEJcaTw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFZzCCA0+gAwIBAgIQHPTBy0utaJ82mHJs9V3u8zANBgkqhkiG9w0BAQsFADA5
MQswCQYDVQQGEwJVUzESMBAGA1UEChMJZ29vZCBndXlzMRYwFAYDVQQDEw1DQSBy
b290IChSU0EpMB4XDTIwMDEwMTEyMDAwMFoXDTQwMDEwMTEyMDAwMFowQzELMAkG
A1UEBhMCVVMxEjAQBgNVBAoTCWdvb2QgZ3V5czEgMB4GA1UEAxMXQ0EgaW50ZXJt
ZWRpYXRlIChSU0EpIEEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCk
f1rlGJeno27J8UAltWo8PopRsTP93Il6+L+SScaOUQsM+TCbTO5EJ4xC+d3Unp8v
iZRLAB1/lGhHh/Uifzov2ux2sa9J4kxlfCxVaaCx6maOs9KnfGUug2hcUCh1oUVv
zD9X9VkWdBdR+kKJvYqWJlU/EJxEa5ERjFp591LQBpR7ksZrsbLvXeywqVS3ek8s
d7w+ZqpYOfo6DNLl5aEJlk6F6CiSjmT352n8dnsOEIEL+bOusLhP5F8pED85geU5
rijc38fZ+gfZAVVenz7kqBh7ld6qT5inIM4uQa7oCuFX2dZ0jqm5TFBBtQp9dkFv
WFz9kEb/CVJr1IsTdp1PAgMBAAGjggFfMIIBWzAOBgNVHQ8BAf8EBAMCAYYwHQYD
VR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYBAf8CAQAw
KQYDVR0OBCIEIGI1hqilwtQoFMkbW0tW2caTKmjXSp6GN958mmXVREPyMCsGA1Ud
IwQkMCKAINmvCHaWHo5MD5lKL52otAsr/TsCX5Hwfy5euQ6zIAWEMFgGCCsGAQUF
BwEBBEwwSjAjBggrBgEFBQcwAYYXaHR0cDovL2V4YW1wbGUuY29tL29jc3AwIwYI
KwYBBQUHMAKGF2h0dHA6Ly9leGFtcGxlLmNvbS9yb290MCcGA1UdHwQgMB4wHKAa
oBiGFmh0dHA6Ly9leGFtcGxlLmNvbS9jcmwwOwYDVR0gBDQwMjAEBgIqAzAqBgIt
BjAkMCIGCCsGAQUFBwIBFhZodHRwOi8vZXhhbXBsZS5jb20vY3BzMA0GCSqGSIb3
DQEBCwUAA4ICAQCTLNQlCzHynESAvtPRV1FPaOQhx01RofwS/0Zg3IH5oXxSC98C
n2L0xHN1gCaJai9XutrFtMCjeBmese48QoPa8MxrB1UpmZ1AuFOQAfHWJZbYPp0V
PxgY34W9Onb+JPnKTbL9ofKUV0aX67eJ5KKFD1G2z+y9Lz1oA3yJpGzqOY/JCWYz
q46ik0bmgcGfol6F/T5hoE8pZk8Wr+nNUpSuOSNp7c/g2/pKDRWK8trTrG3owtaJ
LbQc+W4e97AtTg6DGvR5gftar/+4g2o0xhKSnep+s/bf5NFXVDCTvCmemrbR8Hr7
NLDKXWuGMoMKIxhyPX6ttpU2Um3rQ1rCQbJ5yWIREZvbdaeK8HSRE3GYE71Z3n/0
0Kmtg2BKGkrJzcqUSG4o+9mdSjhJ65J76ri5tVQby7Ai7W2KlNjpdI6GYtejUAlf
vZz5N0e2X36XLPZ8tz04Ix9KLHXMEuA7w/aOglH1Lei+PPp7kBjvXAL66soqCTqu
49yNbPPGIjGO453+jNzxhbeimh6a5/Fwd4SjsdSBe8AwIGGZTzLiIzCNM5OmcoUf
Tl5RrVXau4DvX5KvfwOLusl/uJH+7oETJlbi8+fNn2ioYfHg5/Tu3zKZw/Y+6wSA
LsOIJrFmJEgIBUnWp/B1ZC6TeIokmw5FeJsY1UnFDWsPVcax2T/tg6BZ5Q==
-----END CERTIFICATE-----

View file

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpgIBAAKCAQEA0DgmFoPB+e+V573Fn04jdk+MGj4K5OA7pNM/72ZM+u12IzdR
l9tkCtq+LEr5rPqd6i+jeQPMR7jYz5rgeeaE6uxgxqjJvL7UcrCaFZs8ONFPYp/R
/VLsV0fNU6HVFxGlTh6cYpL91JC/SA66xWv14MEvesUPs1Ia8XtroFycOaLwc73D
Vi6jGzaoJOsx5AjCv1a8FP6/71uenBwkjDt5l5glwkYiRWl6p+XrWvSeMBd2/ufn
eFRoDUnOcnqtAGPagRdJuUZnVzxhXJsSUC+RrK6ZjyWrbUCr0mrYx6qbta5BkyqZ
nyXTx/iSqTo/87/OX7I/TAhlrfl6B6P5NbkarQIDAQABAoIBAQCKOVv/gkQZGVVY
XAB++q5L8g69tQYiXkD58Er3L+BWi6DrS+PcfYXyNrgcS0Fn9Y8zUaChy0WnLyyu
1M/D3KXMFlNATfhuVfhOkrIXOdBGn5ylihcqpgvC/SVvKXV+NPaZ33RNc+sRW22/
9hdCy6KUK2rLg1oi3pSITjhqYlBLaY7RC+CReIOvtrNs9HSQ3JylEP9Cp6geIdDp
v9dLbpRaJdhK7scq8Bt6TVwHgb6TyhmB2q86t8PRK8K9zkWPW/GTmg7gWqWYjRPt
70MJoBboWS4QVrFgulhZNOWgCiqyn15IbXb/AQdkQ9JgsOpWf45+yISt+zM8+xdn
gmgmIcW5AoGBAOZYyfwdZJ7fSHgpVssYJAuC4nYph+ds3on0nH23Sdj+5zbT7xc8
XBd0z9RH6/ueIxUte0hkBCA/vmaTOqbMkY0qejdnx+0RpFKonspawCBsXWEmgv+9
yUngvEkBxOrr/KxkG275h/Ts2XKhUvv41iM+cCN/X1kcJml0gKD/cZMXAoGBAOdo
gKY6EMYPUFR3kr65DpFC2LofuQPyzrZqLiwaPMtAwX0vGIE3WpMYS9i+Skd5FXSo
4XbhtwoweRUtbBbVXtkCbIYSH5+2TwHwqCR1sYf2O+3Ak7Dm+t2ZJua8lu52Pi/2
17eDVb02x3s70X/inIgs7Ta/EYXItfWA8fFFFarbAoGBANgMfV6/vumYaaNyupqB
CQXW/EtyBqtUnKHuUX1Elbo202zEeWNk1MeXY3sq/jahiyxI3XH3hTsuLoqNGxzp
kLdEGR+wcn9z5Zk12MHZPozqtubxNTtjqdFmPZOIWkcxkmuq9WQwHYnnQMjYcTou
mcKyxIE27Zpp4clVYXQgQ0l/AoGBAM/lRN8R/4vQqjyYiE+sdffu9EKSyWdQtoGP
dxfMIp3/+VT8AKnmDwtjopCAtL7te2cpahWhxw3yanWqLxd8bg/Ma68vjRWxdd2q
VYUb73jUsRZyEr21Zd+7/gUBnR9zP39b5oVKCrdJBYIjRZ38+uAkbKDom1dz8HU1
eSdnB4ZNAoGBAJG3qb0yEuTkIjDTV1goYlayLhX/RUPGSgnPMObY36CgarwY/Qxm
Ny3q0qFuKURg9j56WVWkobxTE4E9/iQopXRmRep8UG41Fwzc6vZaXLUHU7m6GtQ3
FVl6x+aZmLPf1YLVvMWW1TrVIiX+pElV1RhEXDksYO8vT0dZjIhz81/h
-----END RSA PRIVATE KEY-----

View file

@ -3,21 +3,11 @@ package api
import (
"github.com/0xJacky/Nginx-UI/server/pkg/nginx"
"github.com/0xJacky/Nginx-UI/server/service"
"github.com/0xJacky/Nginx-UI/server/settings"
"github.com/gin-gonic/gin"
"net/http"
"strings"
)
func GetTemplate(c *gin.Context) {
content := `proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_pass http://127.0.0.1:{{ HTTP01PORT }};
`
content = strings.ReplaceAll(content, "{{ HTTP01PORT }}",
settings.ServerSettings.HTTPChallengePort)
var ngxConfig *nginx.NgxConfig
ngxConfig = &nginx.NgxConfig{
@ -42,12 +32,6 @@ proxy_pass http://127.0.0.1:{{ HTTP01PORT }};
Directive: "index",
},
},
Locations: []*nginx.NgxLocation{
{
Path: "/.well-known/acme-challenge",
Content: content,
},
},
},
},
}

View file

@ -3,6 +3,7 @@ package service
import (
"bufio"
"github.com/0xJacky/Nginx-UI/server/pkg/nginx"
"github.com/0xJacky/Nginx-UI/server/settings"
"github.com/0xJacky/Nginx-UI/template"
"github.com/pkg/errors"
"github.com/tufanbarisyildirim/gonginx/parser"
@ -112,6 +113,7 @@ func ParseTemplate(path, name string) (c ConfigDetail, err error) {
content += orig + "\n"
}
}
content = strings.ReplaceAll(content, "{{ HTTP01PORT }}", settings.ServerSettings.HTTPChallengePort)
p := parser.NewStringParser(content)
config := p.Parse()
c.Custom = custom

View file

@ -0,0 +1,13 @@
# Nginx UI Template Start
# Name: Let's Encrypt
# Description[en]: Let's Encrypt HTTPChallange
# Description[zh_CN]: Let's Encrypt HTTP 鉴权
# Author: @0xJacky
# Nginx UI Template End
location /.well-known/acme-challenge {
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_pass http://127.0.0.1:{{ HTTP01PORT }};
}