Apache и PHP перестанут работать в Ubuntu 18 - PullRequest
0 голосов
/ 27 марта 2020

У меня Apache работает под Ubuntu 18 на экземпляре облака Google. Он перенаправляет запросы websocket в работающий процесс PHP. Все работало нормально как для безопасных, так и для незащищенных HTTP-соединений.

Около двух недель go перестали работать защищенные веб-сокеты. Примерно через 2 минуты я получаю тайм-аут браузера «Тайм-аут открытия рукопожатия Websocket». Если я удалю свой порт 80 с перенаправлением на 443 и изменит свой PHP, чтобы он не использовал защищенные веб-сокеты, незащищенные веб-сокеты все еще будут работать. * получил обновление до 2.4.29-1ubuntu4.13 и PHP до 7.2.24-0ubuntu0.18.04.3 через dpkg и автоматические обновления.

Моя apache конфигурация для виртуального хоста: 443

  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/XXXX.crt
  SSLCertificateKeyFile /etc/ssl/private/XXXX.key
  SSLCertificateChainFile /etc/ssl/certs/XXXX.crt
  SSLProxyEngine on
  ProxyPass /wss8080 wss://127.0.0.1:8080/
  ProxyPassReverse /wss8080 wss://127.0.0.1:8080/

При включенных следующих режимах прокси: /etc/apache2/mods-enabled/proxy.conf /etc/apache2/mods-enabled/proxy_http.load /etc/apache2/mods-enabled/proxy_wstunnel.load / etc / apache2 / mods-enabled / proxy_connect.load /etc/apache2/mods-enabled/proxy.load

Мой PHP код

    $loop   = React\EventLoop\Factory::create();
    $context = new React\ZMQ\Context($loop);
    $pull = $context->getSocket(ZMQ::SOCKET_REP);
    $pull->bind('tcp://127.0.0.1:' . $zmqPort); // Binding to 127.0.0.1 means the only client that can connect is itself
    $pull->on('message', function($networkMsg) {
//stuff
    });
$webSock = new React\Socket\Server('0.0.0.0:' . $wsPort, $loop); // Binding to 0.0.0.0 means remotes can connect
$webSock = new React\Socket\SecureServer($webSock, $loop, [
    'local_cert' => $sslCert,
    'local_pk' => $sslPKey,
    'allow_self_signed' => FALSE,
    'verify_peer' => FALSE
]);
$webServer = new Ratchet\Server\IoServer(
                new Ratchet\Http\HttpServer(
                    new Ratchet\WebSocket\WsServer(
                        new Ratchet\Wamp\WampServer($pusher)
                    )
                ),
                $webSock
);
$loop->run();

Попытка с помощью curl (что я не сделал не пытайтесь, пока он не сломался, поэтому я не могу сравнить)

curl -k -vvv "https://XXXX:8080"
* Rebuilt URL to: https://XXXX:8080/
*   Trying 35.238.154.120...
* TCP_NODELAY set
* Connected to XXXX (XXX.XXX.XXX.XXX) port 8080 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Unknown (8):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Client hello (1):
* TLSv1.3 (OUT), TLS Unknown, Certificate Status (22):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: OU=Domain Control Validated; CN=*.XXXX
*  start date: Sep 30 16:50:20 2019 GMT
*  expire date: Apr 10 18:13:00 2021 GMT
*  issuer: C=US; ST=Arizona; L=Scottsdale; O=GoDaddy.com, Inc.; OU=http://certs.godaddy.com/repository/; CN=Go Daddy Secure Certificate Authority - G2
*  SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
* TLSv1.3 (OUT), TLS Unknown, Unknown (23):
> GET / HTTP/1.1
> Host: XXXX:8080
> User-Agent: curl/7.58.0
> Accept: */*
> 
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS Unknown, Unknown (23):
< HTTP/1.1 426 Upgrade header MUST be provided
< Connection: Upgrade
< Upgrade: websocket
< Sec-WebSocket-Version: 13
< Sec-WebSocket-Protocol: wamp
< X-Powered-By: Ratchet/0.4.1
* no chunk, no close, no size. Assume close to signal end
< 
* Closing connection 0
* TLSv1.3 (OUT), TLS Unknown, Unknown (21):
* TLSv1.3 (OUT), TLS alert, Client hello (1):

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...