Создание самоподписного сертификата и добавление для сервиса YouGile
Создание самоподписного сертификата в Linux
Создание сертификата
- Создайте 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
- Создание корневого сертификата
openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
- Создание промежуточного сертификата
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")
- Создание сертификата сервера
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
- Создание цепочки сертификатов
cat server.pem intermediateCA.pem rootCA.pem > chain.pem
Дополнительно для интеграции с Nginx может потребоваться файл dhparam.pem:
openssl dhparam -out /etc/nginx/dhparams/dhparams.pem 2048
Добавление сертификата в доверенные
- RHEL
cp rootCA.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust
- 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-соединений.