Обработка истечения срока действия Let's Encyrpt SSL на сервере веб-сокетов с помощью Ratchet PHP - PullRequest
1 голос
/ 09 июля 2020

Прочитав практически все статьи о том, как заставить реализацию веб-сокетов Ratchet PHP работать с SSL, я, наконец, убедился, что она работает с помощью множества советов, хотя в основном информация здесь https://github.com/ratchetphp/Ratchet/issues/489, который в основном изменяет способ создания IoServer для использования React Secure Server. Моя реализация на сервере PHP выглядит так:

$loop = \React\EventLoop\Factory::create();

$secure_websockets = new \React\Socket\Server('0.0.0.0:8080', $loop);
$secure_websockets = new \React\Socket\SecureServer($secure_websockets, $loop, [
    'local_cert' => '/path/to/letsencyrpt/cert.crt',
    'local_pk' => '/path/to/letsencyrpt/key.key',
    'verify_peer' => false
]);

$app = new \Ratchet\Http\HttpServer(
    new \Ratchet\WebSocket\WsServer(
        new Chat()
    )
);
$server = new \Ratchet\Server\IoServer($app, $secure_websockets, $loop);
$server->run();

А на стороне клиента Javascript:

function startWebsocket() {
    var conn = new WebSocket('wss://domain.com:port');
    conn.onopen = function(e) {
        console.log("Connection established!");
    };
}

startWebsocket();

И это отлично работает.

НО ... Я использую сертификаты Let's Encrypt на сервере, и у них довольно короткий срок службы. Это нормально для https, поскольку хост (Siteground) автоматически обновляет SSL до истечения срока действия, но если я помещаю путь к указанной паре c Cert / Key (как указано выше), срок их действия истечет.

Итак, у меня есть варианты:

A: Поместите повторяющуюся заметку в мой календарь, чтобы напоминать мне обновлять пути Cert / Key каждые 3 месяца и жить с этим, или ... B: Есть ли способ узнать текущую пару Cert / Key и добавить ее как переменную? 1031 * доступ (я по глупости подписался на 'Geeky Features' годы go, прежде чем мои технические знания улучшились настолько, чтобы мне понадобилось root).

Хотя у меня нет root, он фактически является выделенным сервером, поэтому я могу попросить ребят из службы поддержки Siteground что-то изменить для меня, но мне действительно нужно быть очень конкретным c с любыми запросами. Пробовать что-то здесь, вероятно, не вариант. Я исследовал другой метод получения wss: работая с Ratchet, а именно проксирование https-запроса на порт ws. Не очень далеко ушел с этим, поскольку установленная версия Apache кажется недостаточно свежей, чтобы поддерживать туннель, и хотя есть ссылки на NGINX, работающий параллельно с Apache на Siteground, я просто оставил получаю ошибку каждый раз, когда я пытался использовать его для прокси. Не помогло и то, что без доступа root я довольно ограничен в том, что могу сделать.
...