diff --git a/.env.example b/.env.example index bc1e3c9..bb6c397 100644 --- a/.env.example +++ b/.env.example @@ -17,3 +17,6 @@ GITEA__lfs__PATH=/data/git/lfs # 禁用公开注册(仅管理员可创建账号) GITEA__service__DISABLE_REGISTRATION=true + +# 域名配置(Caddy 反向代理 + 自动 HTTPS) +DOMAIN=git.example.com diff --git a/.gitignore b/.gitignore index bd459af..fa67851 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,9 @@ data/ # 环境变量(可能包含敏感信息) .env +# Caddy 数据 +caddy_data/ +caddy_config/ + # macOS .DS_Store diff --git a/Caddyfile b/Caddyfile new file mode 100644 index 0000000..e205978 --- /dev/null +++ b/Caddyfile @@ -0,0 +1,3 @@ +{$DOMAIN} { + reverse_proxy gitea:3000 +} diff --git a/README.md b/README.md index d4bd03f..3b0264d 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,39 @@ -# Gitea 局域网部署 +# Gitea Docker 部署(Caddy 反向代理 + 自动 HTTPS) -使用 Docker Compose 部署的 Gitea Git 服务。 +使用 Docker Compose 部署 Gitea,通过 Caddy 反向代理实现自动 HTTPS(Let's Encrypt)。 + +## 架构 + +``` +Client → Caddy (80/443, 自动 HTTPS) → Gitea (3000, Docker 内部网络) + Gitea SSH (22 → 宿主机 2222) +``` + +- **Caddy** 处理 HTTPS 证书的自动申请、续期和 HTTP→HTTPS 重定向 +- **Gitea** Web 流量通过 Docker 内部网络由 Caddy 代理,不直接暴露端口 +- **SSH** 直接映射到宿主机 2222 端口,不经过 Caddy ## 快速开始 -### 1. 配置环境变量 +### 前提条件 -复制并编辑 `.env` 文件: +- 域名已解析到服务器公网 IP +- 服务器 80、443、2222 端口可从外网访问 + +### 1. 配置环境变量 ```bash cp .env.example .env ``` -修改端口等配置: +编辑 `.env`,关键配置: ```env -HTTP_PORT=3000 # Web 界面端口 -SSH_PORT=2222 # SSH 端口(宿主机端口,容器内仍为 22) +DOMAIN=git.example.com # 你的域名(Caddy 将为此域名申请 HTTPS 证书) +SSH_PORT=2222 # SSH 端口(宿主机端口,容器内仍为 22) ``` -> `GITEA__server__SSH_PORT` 已通过 `.env` 传递给容器,告知 Gitea 对外 SSH 端口为 `2222`, -> 使 Web 界面中的 SSH clone 地址正确显示端口号。 +> `GITEA__server__SSH_PORT` 通过 `.env` 传递给容器,使 Web 界面中的 SSH clone 地址正确显示端口号。 ### 2. 启动服务 @@ -28,21 +41,22 @@ SSH_PORT=2222 # SSH 端口(宿主机端口,容器内仍为 22) docker compose up -d ``` +Caddy 会自动为 `DOMAIN` 申请 Let's Encrypt 证书,稍等片刻后即可通过 HTTPS 访问。 + ### 3. 初始配置 -首次访问 `http://<服务器IP>:3000` 会进入安装向导: +首次访问 `https://` 会进入安装向导: 1. 设置管理员账户 -2. 配置服务器域名(可选) -3. 数据库已默认使用 SQLite +2. 数据库已默认使用 SQLite ## 访问方式 | 方式 | 地址 | |-----|------| -| Web 界面 | `http://:3000` | -| HTTP 克隆 | `git clone http://:3000/<用户>/<仓库>.git` | -| SSH 克隆 | `git clone ssh://git@:2222/<用户>/<仓库>.git` | +| Web 界面 | `https://` | +| HTTPS 克隆 | `git clone https:///<用户>/<仓库>.git` | +| SSH 克隆 | `git clone ssh://git@:2222/<用户>/<仓库>.git` | ## Git LFS @@ -69,6 +83,7 @@ tar -xzvf gitea-backup-20260320.tar.gz ``` 重要文件: + - `data/gitea/gitea.db` - 用户和配置数据 - `data/git/repositories/` - 仓库数据 - `data/git/lfs/` - LFS 文件 @@ -85,6 +100,9 @@ docker compose down # 查看日志 docker compose logs -f +# 查看 Caddy 日志 +docker compose logs -f caddy + # 重启 docker compose restart diff --git a/docker-compose.yml b/docker-compose.yml index d59dfb4..b86a9d2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,13 +8,29 @@ services: - GITEA__lfs__PATH=${GITEA__lfs__PATH} - GITEA__service__DISABLE_REGISTRATION=${GITEA__service__DISABLE_REGISTRATION} - GITEA__server__SSH_PORT=${GITEA__server__SSH_PORT} + - GITEA__server__ROOT_URL=https://${DOMAIN}/ + - GITEA__server__DOMAIN=${DOMAIN} + - GITEA__server__SSH_DOMAIN=${DOMAIN} restart: always volumes: - ./data:/data ports: - - "${HTTP_PORT}:3000" - "${SSH_PORT}:22" + caddy: + image: caddy:2 + container_name: caddy + restart: always + ports: + - "80:80" + - "443:443" + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile:ro + - ./caddy_data:/data + - ./caddy_config:/config + depends_on: + - gitea + networks: default: driver: bridge diff --git a/git.bamboogames.cn_nginx/git.bamboogames.cn.csr b/git.bamboogames.cn_nginx/git.bamboogames.cn.csr deleted file mode 100644 index 5b81296..0000000 --- a/git.bamboogames.cn_nginx/git.bamboogames.cn.csr +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIDBDCCAewCAQAwgY4xCzAJBgNVBAYTAkNOMRAwDgYDVQQIEwdCZWlqaW5nMRAw -DgYDVQQHEwdCZWlqaW5nMQ8wDQYDVQQKEwZxY2xvdWQxDzANBgNVBAsTBnFjbG91 -ZDEbMBkGA1UEAxMSZ2l0LmJhbWJvb2dhbWVzLmNuMRwwGgYDVQQFExM3MDEwNTI2 -MTc0NjEwMDEzMDcwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAywxO -GXhpMKk5OL6yBuKONtYe3mgNZSV3QyC2gUjIlLWiHcM0sfWI5fxdHzWA3lzUESt4 -F1Tfwr7T0xSZ+OM1HvrFYbUSqHcC+ARUnof0MbItpndojebo/hGw8tJQwnQruOyt -rOqWRcjN5q5+TZenhwwX19ttpSEEuyI0/7vdYiQhYRIvsSAuIQ6vaPT34D5trwH3 -GZlypr7brZOVTmn1sHkElvIy4TKITpRcP8QAyGeBOuvPHSHaHUAXG01UkZNLtNQx -i1pRtLuBqnexiSxhLhgFLk2UN9SNgM+3OPCzChhe+2K4BXhjdWRDRTXT9VngIuDg -TBXh2uznfv6D7OhPbwIDAQABoDAwLgYJKoZIhvcNAQkOMSEwHzAdBgNVHREEFjAU -ghJnaXQuYmFtYm9vZ2FtZXMuY24wDQYJKoZIhvcNAQELBQADggEBAEUfO7MwkJw8 -7zBYFfxvPlOlfXmF7geHw/3AnpCmslAVHQxzKMdET2K2FZb6aEvzbPNkt8eee7uD -Toe8nbJPgPgFVbtSbhu5sMDdHHcOJPtYisxEdholMsB9uUg9dQyYBWyB4jdZMtfv -z1QzfkJPSFDCEN0olMWj2sbD0OZVP5+CHiMvv4oKbJN5MMpXFZipzUwLPNs7xF0a -CdwUuShf03wH78zL59IEYt26EllqmQNRYSCvchRthBfVYaATtQui3jFiyJ72hvzc -PjuPntcx6YVQYDG47RhKOaC8/9LHwIwcKtJPILlHqQKmwcQWLbYkKBJMhhA7UMet -mqYdqfxXWpA= ------END CERTIFICATE REQUEST----- \ No newline at end of file diff --git a/git.bamboogames.cn_nginx/git.bamboogames.cn.key b/git.bamboogames.cn_nginx/git.bamboogames.cn.key deleted file mode 100644 index 10243f9..0000000 --- a/git.bamboogames.cn_nginx/git.bamboogames.cn.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAywxOGXhpMKk5OL6yBuKONtYe3mgNZSV3QyC2gUjIlLWiHcM0 -sfWI5fxdHzWA3lzUESt4F1Tfwr7T0xSZ+OM1HvrFYbUSqHcC+ARUnof0MbItpndo -jebo/hGw8tJQwnQruOytrOqWRcjN5q5+TZenhwwX19ttpSEEuyI0/7vdYiQhYRIv -sSAuIQ6vaPT34D5trwH3GZlypr7brZOVTmn1sHkElvIy4TKITpRcP8QAyGeBOuvP -HSHaHUAXG01UkZNLtNQxi1pRtLuBqnexiSxhLhgFLk2UN9SNgM+3OPCzChhe+2K4 -BXhjdWRDRTXT9VngIuDgTBXh2uznfv6D7OhPbwIDAQABAoIBAEUKbhPjCYFuSPKu -hMIqjsi+jch6APP/hUnh+ayEHw/RosoT8fsAzgfFg7R08NirH8Cm0zK7vUnusP/4 -5VHnj8x04GCUvT9jGDNU5aDyAWpUd4k+2OJHPboGMfCe6q7z6Vn7wCInsekQmlJx -yqh/hIs65XCUP/gB/iXTP8olCuWvX+I727QitR+uIj02tgIrpGofqvoq3VvScpj7 -Gvw/3o36oyQUW9Ugt++2nbe1jFxMZhKxi0QOop2p7Ylm7642Hw/A5JxOAHLJ9V/7 -7SzKT8iJZBH8Pw/ivVgbPajHiJvyKJEGaLIVESlgxqMubtLNCZnfRpCU3MN1Op5t -f0C4EQECgYEA08iMZ6Id1eiISFQerZBWxFrC+GW4q/LdXnNyAtlHQ5spVprzMsni -aBZXuxPii90ziGeLoTOnqxmKmw66P+JKp5S/L6NnwdloQw8hlcJRLP2JXfYjxIbF -/nR+r8fIu5zyomjJAN7VmoqDNz3aQMlqLVqsRq9giTgIFleR8g1t6aECgYEA9XDe -Zq+Vpy9vW8jd+SZ7pNn3V7yuAR+A0uN92DhyHWgOvHlcDf9dk+Bki69bx+MnE/5v -9uOHEMZDt0oNn35HJ/DX+oo4id+1fRRcEai3rRpw0r5LWCsV2d8jhBw4/7QoZV1a -guXG6Xg0udIWNbyMtmzAGyc3DdKF/l/9cB5ZPw8CgYBLTCGHcx9Sf4N829OweAIx -e+eYM2puUEIeo8MkeiYZRmBzN1JCe37w7QiyLga9HZ+F3vLJFLmHXuRl7t2PeyB5 -5qv2/w0T4f1s4kNZoKYF7fraGnprFFPu/XJRgyG+erXVwpW8pn2hnZ+7k1U29aW3 -jGZ2F0KmZvKRJv9v5RBwIQKBgQCTyrYw8RPVSyvsAeUfzPtxBcr5quTASl8BHfk+ -RKb6bBlLhmxXBWkszVbeAebrUy3JzVFQQiunfytxaAcR/jEMrOrws2BeLTYUrjjO -bWDEvIIpdGrcGX2b5tB1EaWE28/jUbZZ0dDX7wkYx5eWHgZBJvT6pL9y9Ey5IsXy -SGQHIwKBgQCuNM34bDSzTsRwRmr0HG4DSInc/leLN//fEWKrfOicCo6GTuHCOyjD -JxTSUWan3uyzIFJI11OKWm+telXbzdCzUZoVoGDoi9hU1jBpGeaZs5nxaTDQigap -EDEI48i092McV68pCNVyj/1TW3pwg8VW2GpStY0U0uc1E6fgXe3/zw== ------END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/git.bamboogames.cn_nginx/git.bamboogames.cn_bundle.crt b/git.bamboogames.cn_nginx/git.bamboogames.cn_bundle.crt deleted file mode 100644 index 0dc18b4..0000000 --- a/git.bamboogames.cn_nginx/git.bamboogames.cn_bundle.crt +++ /dev/null @@ -1,72 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIG2TCCBMGgAwIBAgIQDiI8Ol3M8OHu6nJ6cbTqOjANBgkqhkiG9w0BAQsFADBb -MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg -SW5jLjElMCMGA1UEAxMcVHJ1c3RBc2lhIERWIFRMUyBSU0EgQ0EgMjAyNTAeFw0y -NjA0MjMwMDAwMDBaFw0yNjA3MjEyMzU5NTlaMB0xGzAZBgNVBAMTEmdpdC5iYW1i -b29nYW1lcy5jbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMsMThl4 -aTCpOTi+sgbijjbWHt5oDWUld0MgtoFIyJS1oh3DNLH1iOX8XR81gN5c1BEreBdU -38K+09MUmfjjNR76xWG1Eqh3AvgEVJ6H9DGyLaZ3aI3m6P4RsPLSUMJ0K7jsrazq -lkXIzeaufk2Xp4cMF9fbbaUhBLsiNP+73WIkIWESL7EgLiEOr2j09+A+ba8B9xmZ -cqa+262TlU5p9bB5BJbyMuEyiE6UXD/EAMhngTrrzx0h2h1AFxtNVJGTS7TUMYta -UbS7gap3sYksYS4YBS5NlDfUjYDPtzjwswoYXvtiuAV4Y3VkQ0U10/VZ4CLg4EwV -4drs537+g+zoT28CAwEAAaOCAtUwggLRMB8GA1UdIwQYMBaAFLQSKKW0wB2fKXFp -PNkRlkp1aVDAMB0GA1UdDgQWBBSCAXFrvb9mYpKL3ua40hg+QkyOKzAdBgNVHREE -FjAUghJnaXQuYmFtYm9vZ2FtZXMuY24wPgYDVR0gBDcwNTAzBgZngQwBAgEwKTAn -BggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMA4GA1UdDwEB -/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATB5BggrBgEFBQcBAQRtMGswJAYI -KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3 -aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL1RydXN0QXNpYURWVExTUlNBQ0Ey -MDI1LmNydDAMBgNVHRMBAf8EAjAAMIIBgAYKKwYBBAHWeQIEAgSCAXAEggFsAWoA -dgDCMX5XRRmjRe5/ON6ykEHrx8IhWiK/f9W1rXaa2Q5SzQAAAZ259IEWAAAEAwBH -MEUCIFL1pBL/7olfxuB3l7pL2qiNHghmHRbspTTP8ciYAZ4uAiEAybJLiXAxs2k/ -D51CWbVEZthLvqApXOpannaI1ehUXooAdwDYCVU7lE96/8gWGW+UT4WrsPj8XodV -Jg8V0S5yu0VLFAAAAZ259IPVAAAEAwBIMEYCIQDktRKhH2Alo3H5nv8dKYIQcsat -l1YLiweSJCTLBnwBQgIhAJIQ+BmV6ObgMYdU+J3hn1vDjfF1yWkOzFYy9ElFKcpn -AHcAlE5Dh/rswe+B8xkkJqgYZQHH0184AgE/cmd9VTcuGdgAAAGdufSBJQAABAMA -SDBGAiEA2YbbOGMgc7VgALCecgkcCc2tGWtNxLi4d1MGtNrJvYgCIQCTKOw+yz+Y -nAoP4zdXXzTywyEMrZyBkIXcSCY45vPqFTANBgkqhkiG9w0BAQsFAAOCAgEArTD4 -s92olE+wwrmCrqiBBkeVuwZ9rjxmKpsNUsFXonsO0mZ5mrnxZ2tv7mQ9C+dtfZ3d -kslvYEpcQTSijTX4sMKVPs20SSHGX5fsj6UHWrEjhIq4oFajkovZxOxKJPPcZVt9 -MrhoTJxZatmB/vLJwOz/H94N80rf0O5/r1VVyAyiEOrFfPp1ZZsHmPOxAPk/YXXE -x1yQIaW5/9GV148XnbGf9F1LBt1/uexkILGlJjBsa0X3QEKADih3+PIzAY293/5b -TQVFG5LbQV8xvCyUqQQVQgN4PPdHJBqzp2bDEpL/b7whJppXu+lcAE7n8Y3dvWHM -4plil8JoqLM7GkYKcj2bcGNwB93a8X5BYpgxh3qUULv96jWTl+QorMWIRrSJMHbO -y1IrDkGDrik9tsA0zDqKYC2qIx1F72PPkul3NmGPPsDHXG1AYfrw6+DOSocnrBPj -Ym8vBl9WcvS7BcYgqg1MTda+6M9VIYJrgFviMgFJ87fNZN2RYDLmRsftJFiDSX/4 -F2Q/d4NFLVaVtsdxzIx86HP4E2A1g3VswAFkvcBjO5g3ZAhPZ7dqv60GZ/QPLio/ -QyPIncRq5MbCsQC3IkOCXVR1XBrOHIXFxgSMHfnifo9RBeUfYArPyCHiYvJZZBv/ -Bj8F9U7Muky3HSK6kPFaF2GGC30XIEI28m3NBF0= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFnjCCBIagAwIBAgIQCSYyO0lk42hGFRLe8aXVLDANBgkqhkiG9w0BAQsFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH -MjAeFw0yNTAxMDgwMDAwMDBaFw0zNTAxMDcyMzU5NTlaMFsxCzAJBgNVBAYTAkNO -MSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSUwIwYDVQQD -ExxUcnVzdEFzaWEgRFYgVExTIFJTQSBDQSAyMDI1MIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEA0fuEmuBIsN6ZZVq+gRobMorOGIilTCIfQrxNpR8FUZ9R -/GfbiekbiIKphQXEZ7N1uBnn6tXUuZ32zl6jPkZpHzN/Bmgk1BWSIzVc0npMzrWq -/hrbk5+KddXJdsNpeG1+Q8lc8uVMBrztnxaPb7Rh7yQCsMrcO4hgVaqLJWkVvEfW -ULtoCHQnNaj4IroG6VxQf1oArQ8bPbwpI02lieSahRa78FQuXdoGVeQcrkhtVjZs -ON98vq5fPWZX2LFv7e5J6P9IHbzvOl8yyQjv+2/IOwhNSkaXX3bI+//bqF9XW/p7 -+gsUmHiK5YsvLjmXcvDmoDEGrXMzgX31Zl2nJ+umpRbLjwP8rxYIUsKoEwEdFoto -Aid59UEBJyw/GibwXQ5xTyKD/N6C8SFkr1+myOo4oe1UB+YgvRu6qSxIABo5kYdX -FodLP4IgoVJdeUFs1Usa6bxYEO6EgMf5lCWt9hGZszvXYZwvyZGq3ogNXM7eKyi2 -20WzJXYMmi9TYFq2Fa95aZe4wki6YhDhhOO1g0sjITGVaB73G+JOCI9yJhv6+REN -D40ZpboUHE8JNgMVWbG1isAMVCXqiADgXtuC+tmJWPEH9cR6OuJLEpwOzPfgAbnn -2MRu7Tsdr8jPjTPbD0FxblX1ydW3RG30vwLF5lkTTRkHG9epMgpPMdYP7nY/08MC -AwEAAaOCAVYwggFSMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLQSKKW0 -wB2fKXFpPNkRlkp1aVDAMB8GA1UdIwQYMBaAFE4iVCAYlebjbuYP+vq5Eu0GF485 -MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw -dgYIKwYBBQUHAQEEajBoMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy -dC5jb20wQAYIKwYBBQUHMAKGNGh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9E -aWdpQ2VydEdsb2JhbFJvb3RHMi5jcnQwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDov -L2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDARBgNV -HSAECjAIMAYGBFUdIAAwDQYJKoZIhvcNAQELBQADggEBAJ4a3svh316GY2+Z7EYx -mBIsOwjJSnyoEfzx2T699ctLLrvuzS79Mg3pPjxSLlUgyM8UzrFc5tgVU3dZ1sFQ -I4RM+ysJdvIAX/7Yx1QbooVdKhkdi9X7QN7yVkjqwM3fY3WfQkRTzhIkM7mYIQbR -r+y2Vkju61BLqh7OCRpPMiudjEpP1kEtRyGs2g0aQpEIqKBzxgitCXSayO1hoO6/ -71ts801OzYlqYW9OQQQ2GCJyFbD6XHDjdpn+bWUxTKWaMY0qedSCbHE3Kl2QEF0C -ynZ7SbC03yR+gKZQDeTXrNP1kk5Qhe7jSXgw+nhbspe0q/M1ZcNCz+sPxeOwdCcC -gJE= ------END CERTIFICATE----- \ No newline at end of file diff --git a/git.bamboogames.cn_nginx/git.bamboogames.cn_bundle.pem b/git.bamboogames.cn_nginx/git.bamboogames.cn_bundle.pem deleted file mode 100644 index 0dc18b4..0000000 --- a/git.bamboogames.cn_nginx/git.bamboogames.cn_bundle.pem +++ /dev/null @@ -1,72 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIG2TCCBMGgAwIBAgIQDiI8Ol3M8OHu6nJ6cbTqOjANBgkqhkiG9w0BAQsFADBb -MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg -SW5jLjElMCMGA1UEAxMcVHJ1c3RBc2lhIERWIFRMUyBSU0EgQ0EgMjAyNTAeFw0y -NjA0MjMwMDAwMDBaFw0yNjA3MjEyMzU5NTlaMB0xGzAZBgNVBAMTEmdpdC5iYW1i -b29nYW1lcy5jbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMsMThl4 -aTCpOTi+sgbijjbWHt5oDWUld0MgtoFIyJS1oh3DNLH1iOX8XR81gN5c1BEreBdU -38K+09MUmfjjNR76xWG1Eqh3AvgEVJ6H9DGyLaZ3aI3m6P4RsPLSUMJ0K7jsrazq -lkXIzeaufk2Xp4cMF9fbbaUhBLsiNP+73WIkIWESL7EgLiEOr2j09+A+ba8B9xmZ -cqa+262TlU5p9bB5BJbyMuEyiE6UXD/EAMhngTrrzx0h2h1AFxtNVJGTS7TUMYta -UbS7gap3sYksYS4YBS5NlDfUjYDPtzjwswoYXvtiuAV4Y3VkQ0U10/VZ4CLg4EwV -4drs537+g+zoT28CAwEAAaOCAtUwggLRMB8GA1UdIwQYMBaAFLQSKKW0wB2fKXFp -PNkRlkp1aVDAMB0GA1UdDgQWBBSCAXFrvb9mYpKL3ua40hg+QkyOKzAdBgNVHREE -FjAUghJnaXQuYmFtYm9vZ2FtZXMuY24wPgYDVR0gBDcwNTAzBgZngQwBAgEwKTAn -BggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMA4GA1UdDwEB -/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATB5BggrBgEFBQcBAQRtMGswJAYI -KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3 -aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL1RydXN0QXNpYURWVExTUlNBQ0Ey -MDI1LmNydDAMBgNVHRMBAf8EAjAAMIIBgAYKKwYBBAHWeQIEAgSCAXAEggFsAWoA -dgDCMX5XRRmjRe5/ON6ykEHrx8IhWiK/f9W1rXaa2Q5SzQAAAZ259IEWAAAEAwBH -MEUCIFL1pBL/7olfxuB3l7pL2qiNHghmHRbspTTP8ciYAZ4uAiEAybJLiXAxs2k/ -D51CWbVEZthLvqApXOpannaI1ehUXooAdwDYCVU7lE96/8gWGW+UT4WrsPj8XodV -Jg8V0S5yu0VLFAAAAZ259IPVAAAEAwBIMEYCIQDktRKhH2Alo3H5nv8dKYIQcsat -l1YLiweSJCTLBnwBQgIhAJIQ+BmV6ObgMYdU+J3hn1vDjfF1yWkOzFYy9ElFKcpn -AHcAlE5Dh/rswe+B8xkkJqgYZQHH0184AgE/cmd9VTcuGdgAAAGdufSBJQAABAMA -SDBGAiEA2YbbOGMgc7VgALCecgkcCc2tGWtNxLi4d1MGtNrJvYgCIQCTKOw+yz+Y -nAoP4zdXXzTywyEMrZyBkIXcSCY45vPqFTANBgkqhkiG9w0BAQsFAAOCAgEArTD4 -s92olE+wwrmCrqiBBkeVuwZ9rjxmKpsNUsFXonsO0mZ5mrnxZ2tv7mQ9C+dtfZ3d -kslvYEpcQTSijTX4sMKVPs20SSHGX5fsj6UHWrEjhIq4oFajkovZxOxKJPPcZVt9 -MrhoTJxZatmB/vLJwOz/H94N80rf0O5/r1VVyAyiEOrFfPp1ZZsHmPOxAPk/YXXE -x1yQIaW5/9GV148XnbGf9F1LBt1/uexkILGlJjBsa0X3QEKADih3+PIzAY293/5b -TQVFG5LbQV8xvCyUqQQVQgN4PPdHJBqzp2bDEpL/b7whJppXu+lcAE7n8Y3dvWHM -4plil8JoqLM7GkYKcj2bcGNwB93a8X5BYpgxh3qUULv96jWTl+QorMWIRrSJMHbO -y1IrDkGDrik9tsA0zDqKYC2qIx1F72PPkul3NmGPPsDHXG1AYfrw6+DOSocnrBPj -Ym8vBl9WcvS7BcYgqg1MTda+6M9VIYJrgFviMgFJ87fNZN2RYDLmRsftJFiDSX/4 -F2Q/d4NFLVaVtsdxzIx86HP4E2A1g3VswAFkvcBjO5g3ZAhPZ7dqv60GZ/QPLio/ -QyPIncRq5MbCsQC3IkOCXVR1XBrOHIXFxgSMHfnifo9RBeUfYArPyCHiYvJZZBv/ -Bj8F9U7Muky3HSK6kPFaF2GGC30XIEI28m3NBF0= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFnjCCBIagAwIBAgIQCSYyO0lk42hGFRLe8aXVLDANBgkqhkiG9w0BAQsFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH -MjAeFw0yNTAxMDgwMDAwMDBaFw0zNTAxMDcyMzU5NTlaMFsxCzAJBgNVBAYTAkNO -MSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSUwIwYDVQQD -ExxUcnVzdEFzaWEgRFYgVExTIFJTQSBDQSAyMDI1MIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEA0fuEmuBIsN6ZZVq+gRobMorOGIilTCIfQrxNpR8FUZ9R -/GfbiekbiIKphQXEZ7N1uBnn6tXUuZ32zl6jPkZpHzN/Bmgk1BWSIzVc0npMzrWq -/hrbk5+KddXJdsNpeG1+Q8lc8uVMBrztnxaPb7Rh7yQCsMrcO4hgVaqLJWkVvEfW -ULtoCHQnNaj4IroG6VxQf1oArQ8bPbwpI02lieSahRa78FQuXdoGVeQcrkhtVjZs -ON98vq5fPWZX2LFv7e5J6P9IHbzvOl8yyQjv+2/IOwhNSkaXX3bI+//bqF9XW/p7 -+gsUmHiK5YsvLjmXcvDmoDEGrXMzgX31Zl2nJ+umpRbLjwP8rxYIUsKoEwEdFoto -Aid59UEBJyw/GibwXQ5xTyKD/N6C8SFkr1+myOo4oe1UB+YgvRu6qSxIABo5kYdX -FodLP4IgoVJdeUFs1Usa6bxYEO6EgMf5lCWt9hGZszvXYZwvyZGq3ogNXM7eKyi2 -20WzJXYMmi9TYFq2Fa95aZe4wki6YhDhhOO1g0sjITGVaB73G+JOCI9yJhv6+REN -D40ZpboUHE8JNgMVWbG1isAMVCXqiADgXtuC+tmJWPEH9cR6OuJLEpwOzPfgAbnn -2MRu7Tsdr8jPjTPbD0FxblX1ydW3RG30vwLF5lkTTRkHG9epMgpPMdYP7nY/08MC -AwEAAaOCAVYwggFSMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLQSKKW0 -wB2fKXFpPNkRlkp1aVDAMB8GA1UdIwQYMBaAFE4iVCAYlebjbuYP+vq5Eu0GF485 -MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw -dgYIKwYBBQUHAQEEajBoMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy -dC5jb20wQAYIKwYBBQUHMAKGNGh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9E -aWdpQ2VydEdsb2JhbFJvb3RHMi5jcnQwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDov -L2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDARBgNV -HSAECjAIMAYGBFUdIAAwDQYJKoZIhvcNAQELBQADggEBAJ4a3svh316GY2+Z7EYx -mBIsOwjJSnyoEfzx2T699ctLLrvuzS79Mg3pPjxSLlUgyM8UzrFc5tgVU3dZ1sFQ -I4RM+ysJdvIAX/7Yx1QbooVdKhkdi9X7QN7yVkjqwM3fY3WfQkRTzhIkM7mYIQbR -r+y2Vkju61BLqh7OCRpPMiudjEpP1kEtRyGs2g0aQpEIqKBzxgitCXSayO1hoO6/ -71ts801OzYlqYW9OQQQ2GCJyFbD6XHDjdpn+bWUxTKWaMY0qedSCbHE3Kl2QEF0C -ynZ7SbC03yR+gKZQDeTXrNP1kk5Qhe7jSXgw+nhbspe0q/M1ZcNCz+sPxeOwdCcC -gJE= ------END CERTIFICATE----- \ No newline at end of file