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

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

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

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

  1. Создайте openssl-san.cnf
[ 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.pem -days 365 -sha256 -extensions req_ext -extfile openssl-san.cnf
  1. Создание цепочки сертификатов
cat server.pem intermediateCA.pem rootCA.pem > chain.pem

Дополнительно для интеграции с Nginx может потребоваться файл dhparam.pem:

openssl dhparam -out /etc/nginx/dhparams/dhparams.pem 2048

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

  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-соединений.