Загрузка данных
mkdir RootCA && cd RootCA
openssl req -x509 -sha256 -days 3653 -newkey rsa:2048 -keyout ca.key -out ca.crt
должно получиться следующее:
[admin01@adm-pc RootCA]$ openssl req -x509 -sha256 -days 3653 -newkey rsa:2048 -keyout ca.key -out ca.crt
......+...+...+..+...+.........+.+...........+...+............+...+...+....+...+...+.....+.........+...+.......+.....+....+.........+........+...+++++++++++++++++++++++++++++++++++++++*......+..+.+++++++++++++++++++++++++++++++++++++++*....+...............+.+.........+.....+.............+.........+.....+....+.....+....+.......................+...+......+......+....+...........+...............+.......+..................+.....+...+.+...+.....+..................+..........+...+.........+......+............+...+......+......+..+............+.............+.....+......+.+...+..+....+............+..+.+..+.......+..+................+........+......+.+..+.......+.....+....+.....+.+...+.....................+.........+..+.+..+...+....+........+.+..+....+........+...+.........+.........+.+...........+...+.+..........................+.......+.....+.+......+.....+.........+.......+..+............+.........+......................+..+...+....+...+........+.......+..+......+.........+...+...+.......+...+.....+...+.+..............+.+......+...+......+...+..+.............+..+.+........+....+..+.+..+.......+...........+...+.........+...+....+......+...+...........+...+..........+..+...............+......+...+....+.....+.+..+...................+...+...........+.........+.+...........+...+.+.....+....+...+.....+.............+.........+...+..+...+....+...+.....+.............+...+......+..............+.+.........+......+......+.....+...+.+.....+.+...+..+........................+...+......+.......+..+.+..++++++
.......+++++++++++++++++++++++++++++++++++++++*..+.....+.+..+....+...+..+......+...+.+..................+...+..+.+.....+......+...+.+..+..........+.....+.......+..+.+...+.....+......+.+..+...............+...+..........+...+..+++++++++++++++++++++++++++++++++++++++*......+...................+..+.......+...++++++
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:au-team.cloud
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:au-team.cloud RootCA
Email Address []:
Добавим корневой сертификат в локальное хранилище сертификатов:
sudo cp ca.crt /etc/pki/ca-trust/source/anchors/ && sudo update-ca-trust
Далее на CA создадим закрытый ключ и запрос для gitea
который соответственно подпишем ранее созданным RootCA
openssl genrsa -out gitea.key 2048
openssl req -key gitea.key -new -out gitea.csr
должно получиться следующее:
[admin01@adm-pc RootCA]$ openssl req -key gitea.key -new -out gitea.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:au-team.cloud
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:gitea.au-team.cloud
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Создаём файл с расширениями для сертификата:
cat <<EOF > gitea.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
subjectAltName=@alt_names
[alt_names]
DNS.1=gitea.au-team.cloud
IP.1=192.168.0.102
EOF
Подписываем запрос и выпускаем сертификат:
openssl x509 -req -CA ca.crt -CAkey ca.key -in gitea.csr -out gitea.crt -days 365 -CAcreateserial -extfile gitea.ext
Передаём сертификат и закрытый ключ на infra-srv2:
[admin01@adm-pc RootCA]$ scp gitea.crt infra-srv2:~/
gitea.crt 100% 1285 795.5KB/s 00:00
[admin01@adm-pc RootCA]$ scp gitea.key infra-srv2:~/
gitea.key 100% 1704 1.0MB/s 00:00
Далее на CA создадим закрытый ключ и запрос для grafana
который соответственно подпишем ранее созданным RootCA
openssl genrsa -out grafana.key 2048
openssl req -key grafana.key -new -out grafana.csr
должно получиться следующее:
[admin01@adm-pc RootCA]$ openssl req -key grafana.key -new -out grafana.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:au-team.cloud
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:grafana.au-team.cloud
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Создаём файл с расширениями для сертификата:
cat <<EOF > grafana.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
subjectAltName=@alt_names
[alt_names]
DNS.1=grafana.au-team.cloud
IP.1=192.168.0.103
EOF
Подписываем запрос и выпускаем сертификат:
openssl x509 -req -CA ca.crt -CAkey ca.key -in grafana.csr -out grafana.crt -days 365 -CAcreateserial -extfile grafana.ext
Передаём сертификат и закрытый ключ на infra-srv3:
[admin01@adm-pc RootCA]$ scp grafana.crt infra-srv3:~/
grafana.crt 100% 1289 659.7KB/s 00:00
[admin01@adm-pc RootCA]$ scp grafana.key infra-srv3:~/
grafana.key 100% 1704 1.0MB/s 00:00
INFRA-SRV2:
Для корректного доступа по имени реализуем обратный прокси сервер:
установим пакет nginx
sudo su -
apt-get update && apt-get install -y nginx
Создаём директорию для сертификатов:
mkdir /etc/nginx/ssl
Перемещаем сертификат и закрытый ключ в созданную директорию:
mv /home/admin01/gitea.crt /etc/nginx/ssl
mv /home/admin01/gitea.key /etc/nginx/ssl
Создаём конфигурационный файл /etc/nginx/sites-available.d/gitea.conf для обратного прокси:
server {
listen 443 ssl;
server_name gitea.au-team.cloud;
ssl_certificate /etc/nginx/ssl/gitea.crt;
ssl_certificate_key /etc/nginx/ssl/gitea.key;
location / {
proxy_pass http://127.0.0.1:3000;
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 {
listen 80;
server_name gitea.au-team.cloud;
return 301 https://$host$request_uri;
}
Добавляем символьную ссылку:
ln -s /etc/nginx/sites-available.d/gitea.conf /etc/nginx/sites-enabled.d/
Включаем и добавляем в автозагрузку службу nginx:
systemctl enable --now nginx
В файле /etc/gitea/app.ini необходимо отредактировать и привести к следующему виду параметры:
Перезапускаем службу gitea:
systemctl restart gitea
INFRA-SRV3:
Для корректного доступа по имени реализуем обратный прокси сервер:
установим пакет nginx
sudo su -
apt-get update && apt-get install -y nginx
Создаём директорию для сертификатов:
mkdir /etc/nginx/ssl
Перемещаем сертификат и закрытый ключ в созданную директорию:
mv /home/admin01/grafana.crt /etc/nginx/ssl
mv /home/admin01/grafana.key /etc/nginx/ssl
Создаём конфигурационный файл /etc/nginx/sites-available.d/grafana.conf для обратного прокси:
server {
listen 443 ssl;
server_name grafana.au-team.cloud;
ssl_certificate /etc/nginx/ssl/grafana.crt;
ssl_certificate_key /etc/nginx/ssl/grafana.key;
location / {
proxy_pass http://127.0.0.1:3000;
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 {
listen 80;
server_name grafana.au-team.cloud;
return 301 https://$host$request_uri;
}
Добавляем символьную ссылку:
ln -s /etc/nginx/sites-available.d/grafana.conf /etc/nginx/sites-enabled.d/
Включаем и добавляем в автозагрузку службу nginx:
systemctl enable --now nginx
INFRA-SRV1:
Добавляем DNS-записи:
sudo su -
echo "P@ssw0rd" | kinit admin
ADM-PC:
Проверяем доступ по https://gitea.au-team.cloud:
Проверяем доступ по https://grafana.au-team.cloud:
Из-под пользователя admin01 в веб-интерфейсе https://gitea.au-team.cloud/ должен быть создан приватный репозиторий с именем cod-infra-iac:
Результат:
Переходим в директорию ~/infra/:
cd ~/infra/
Добавляем в файл .gitignore следующую информацию:
cat <<EOF >> .gitignore
terraform/.terraform/
terraform/*.tfstate*
terraform/.terraform.lock.*
terraform/*.tfvars
EOF
Добавляем все файлы для отслеживания через git:
git add .
git commit -m "first commit"
Синхранисируем с удалённым репозиторием в gitea:
git checkout -b main
git remote add origin https://gitea.au-team.cloud/admin01/cod-infra-iac.git
git push -u origin main
должно получиться следующее:
Проверить наличие файлов в веб-интерфейсе: