Перейти к основному содержимому

Создание самоподписного сертификата и добавление для сервиса YouGile

Создание сертификата в Windows Server

Создание сертификата

New-SelfSignedCertificate -DnsName "*.yourdomain.com", "yourdomain.com" -CertStoreLocation "Cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(5)
  • Замените yourdomain.local на имя вашего домена
  • AddYears(5) - количество лет, на которые выпускается сертификат

Экспорт сертификата

  1. Откройте mmc.exe, Добавьте оснтастку "Certificates" в snap-in for Local Computer.
  2. Найдите ваш сертификат в Personal -> Certificates.
  3. Экспортируйте сертифика (включая приватный ключ) в .PFX формат

Установка сертификата в контроллер домена

  1. Импорт сертификата в mmc.exe:
  • AdОткройте mmc.exe, Добавьте оснтастку "Certificates" в snap-in for Local Computer.
  • Импортируйте ваш .PFX из предыдущего шага в Trusted Root Certification Authorities -> Certificates

Импорт сертификата в хранилище доверенных корневых центров сертификации на всех клиентах через GPO (при необходимости)

  1. Экспортируйте публичную часть сертификата (формат .CER base64).
  2. Импортируйте ее в хранилище доверенных корневых центров сертификации на всех клиентах через GPO:
  • В Group Policy Management Console (GPMC), создать новую политику или отредактировать существующую.
  • Перейдите Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Public Key Policies -> Trusted Root Certification Authorities.
  • Импортируйте публичный сертификат.

Перезапуск NTDS и тест соединения

  1. Перезапуск NTDS
restart-Service NTDS -force
  1. Тест соединения
Test-NetConnection -ComputerName yourdomain.local -Port 636
  • Замените yourdomain.local на имя вашего домена

Настройка YouGile для работы с самоподписным сертификатом

  1. Экспорт сертификата из Trusted Root Certification Authorities
  • AdОткройте mmc.exe, Добавьте оснтастку "Certificates" в snap-in for Local Computer.
  • Импортируйте ваш .PFX из предыдущего шага в Trusted Root Certification Authorities -> Certificates
  1. Настройте YouGile на работу как сервис (описано в разделе Установка)

  2. добавьте строку с путем к сертификату в файл сервиса.

<service>
<id>YouGile</id>
<name>YouGile Service (powered by WinSW)</name>
<description>This service runs YouGile continuous integration system</description>
<env name="NODE_EXTRA_CA_CERTS" value="C:\yougile\path-to-your-cert" />
<executable>%BASE%\server.exe</executable>
<logpath>%BASE%\logs</logpath>
</service>

Создание самоподписного сертификата в Linux

Создание сертификата

  1. Создайте закрытый ключ и сертификат
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext

[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = RU
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Moscow
localityName = Locality Name (eg, city)
localityName_default = Moscow
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = IT
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = example.com
commonName_max = 64

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = example.com
  1. Создание корневого сертификата
openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
  1. Создание промежуточного сертификата
openssl genrsa -out intermediateCA.key 4096
openssl req -new -key intermediateCA.key -out intermediateCA.csr
openssl x509 -req -in intermediateCA.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out intermediateCA.pem -days 500 -sha256 -extfile <(printf "basicConstraints=CA:TRUE,pathlen:0")
  1. Создание сертификата сервера
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -config openssl-san.cnf
openssl x509 -req -in server.csr -CA intermediateCA.pem -CAkey intermediateCA.key -CAcreateserial -out server.crt -days 365 -sha256 -extensions req_ext -extfile openssl-san.cnf
  1. Создание цепочки сертификатов
cat server.crt intermediate.crt rootCA.crt > chain.pem

Добавление сертификата в доверенные

  1. RHEL
cp rootCA.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust
  1. Ubuntu
sudo cp way/to/rootCA.pem /usr/local/share/ca-certificates/
sudo update-ca-certificates

Добавление пользовательского CA-сертификата для сервиса YouGile

В случае использования самоподписанных или пользовательских сертификатов, для корректной работы сервиса YouGile может потребоваться передать переменную окружения NODE_EXTRA_CA_CERTS=путь_к_файлу_сертификата. Эта переменная указывает Node.js путь к дополнительному сертификату удостоверяющего центра (CA), которому необходимо доверять.

Поиск файла сервиса

Файл сервиса YouGile, как правило, называется yougile.service и находится в каталоге /etc/systemd/system/

Путь к файлу может отличаться в зависимости от конфигурации вашей системы. Если вы не уверены, где находится файл, выполните команду:

systemctl status yougile.service

Изменение файла yougile.service

Откройте файл сервиса в любом редакторе от имени пользователя root или с использованием sudo. Например:

sudo nano /etc/systemd/system/yougile.service

Добавьте строку с переменной Environment=NODE_EXTRA_CA_CERTS=путь_к_файлу_сертификата, указав полный путь к вашему сертификату (в формате PEM). Пример содержимого файла:

[Unit]
Description=yougile

[Service]
WorkingDirectory=/opt/yougile
ExecStart=/opt/yougile/server
Environment=NODE_OPTIONS="--max_old_space_size=5000"
Environment=NODE_EXTRA_CA_CERTS=путь_к_файлу_сертификата
LimitNOFILE=500000
LimitNPROC=500000

[Install]
WantedBy=multi-user.target

Применение изменений и перезапуск сервиса

После редактирования необходимо обновить настройки systemd и перезапустить сервис. Выполните следующие команды:

sudo systemctl daemon-reload
sudo systemctl enable yougile.service
sudo systemctl restart yougile.service

Убедитесь, что сервис запущен и работает корректно:

systemctl status yougile.service

Теперь сервис YouGile будет использовать указанный CA-сертификат при установлении HTTPS-соединений.