Как заменить дефолтный сертификат SSL FastPanel

Дефолтный сертификат SSL FastPanel доставляет неудобство тем, что браузер постоянно ругается на небезопасное соединение и не предлагает сохранить пароль, а так хочется не вводить его каждый раз.

Лучшее решение - это задать адрес панели с указанием домена. А если не хочется вешать панель на домен, то можно сгенерировать само-подписанный сертификат на IP адрес сервера и добавить его в доверенные источники.

Сгенерировать сертификат можно разными способами, в том числе и с помощью PHP. Для этого нам понадобится 2 файла.

1) Конфиг openSSL (пусть будет openssl_ip.cnf):

[req]
default_bits = 2048
prompt = no
default_md = sha512
distinguished_name = dn
x509_extensions = v3_ca

[ dn ]
CN = my.tld
C = country
ST = state
L = location
O = ORGANISATION

[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
subjectAltName = @alternate_names
keyUsage = digitalSignature, keyEncipherment

[ alternate_names ]
DNS.1 = your.site
DNS.2 = www.your.site
IP.1 = 12.34.56.78
IP.2 = 12.34.56.79

Домены и IP адреса приведены для примера, лишнее можно убрать или добавить еще, что нужно

2) И сам скрипт php:

<?php

$dn = array(
    "commonName" => "your.site"
);

// Генерируем приватный ключ
$privkey = openssl_pkey_new(array(
    "private_key_bits" => 2048,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
));

// Генерируем запрос на выдачу сертификата
$csr = openssl_csr_new($dn, $privkey, array('digest_alg' => 'sha512'));

// Генерируем само-подписанный сертификат на 7300 дней
$cert_x509 = openssl_csr_sign($csr, null, $privkey, $days = 7300, array('digest_alg' => 'sha512', 'config' => __DIR__ . '/openssl_ip.cnf'));

// Сохраняем сертификат в файл
openssl_x509_export_to_file($cert_x509, __DIR__ . '/fastpanel2.crt');

// Сохраняем приватный ключ в файл
openssl_pkey_export_to_file($privkey, __DIR__ . '/fastpanel2.key');

Полученные файлы fastpanel2.crt и fastpanel2.key нужно закинуть в /usr/local/fastpanel2-nginx/ssl-certs/ и перезагрузить fastpanel2-nginx

# service fastpanel2-nginx restart