Partage
  • Partager sur Facebook
  • Partager sur Twitter

Connexions aléatoirement réussies vers Websocket

Client HTML5/Javascipt - Serveur script PHP sur apache2 - SSL/WSS

    10 mai 2017 à 17:14:17

    Bonjour à tous,

    J'utilise un code javascript pour me connecter en SSL sur mon serveur distant où un script PHPWebsocket tourne en permanence et écoute le port 1552 :

    var socket = new WebSocket("wss://monserveur.net");

    Sur le serveur distant j'ai installé Let's encrypt et j'ai paramétré Apache de la façon suivante :

    Pour le port 80 :

    <VirtualHost *:80>
        ServerName monserveur.net
        ServerAlias www.monserveur.net
    
            ProxyPass / http://localhost:1552/
            ProxyPassReverse / http://localhost:1552/ 
    
            ProxyRequests Off
            ProxyPreservehost On
    
            <Proxy>
                    Order Allow,Deny
                    Allow from all
            </Proxy>
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    
            #
            # certbot
            #
    
            RewriteEngine on
            RewriteCond %{SERVER_NAME} =monserveur.net [OR]
            RewriteCond %{SERVER_NAME} =www.monserveur.net
            RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
    </VirtualHost>


    Pour le port 443 :

    <IfModule mod_ssl.c>
    <VirtualHost *:443>
            ServerName monserveur.net
            ServerAlias www.monserveur.net
    
            ProxyRequests Off
            ProxyPreservehost On
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    
            SSLEngine on
    	SSLCertificateFile /etc/letsencrypt/live/monserveur.net/fullchain.pem
    	SSLCertificateKeyFile /etc/letsencrypt/live/monserveur.net/privkey.pem
    	Include /etc/letsencrypt/options-ssl-apache.conf
    
            SSLProtocol             all -SSLv2 -SSLv3
            SSLHonorCipherOrder     on
            SSLCompression          off
            SSLOptions +StrictRequire
    
            RewriteEngine On
    
            RewriteCond %{REQUEST_URI}     /  [NC,OR]
            RewriteCond %{HTTP:UPGRADE}    ^WebSocket$               [NC,OR]
            RewriteCond %{HTTP:CONNECTION} ^Upgrade$                 [NC]
            RewriteRule .* ws://localhost:1552%{REQUEST_URI}         [P,QSA,L]
    
            RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME}    !-f
            RewriteRule .* http://localhost:1552%{REQUEST_URI} [P,QSA,L]
    
            RequestHeader set X-Forwarded-Proto "https"
            Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    
            RequestHeader unset If-Modified-Since
            RequestHeader unset If-None-Match
    
            <Location />
                    Require all granted
                    ProxyPassReverse ws://localhost:1552
                    ProxyPassReverseCookieDomain localhost monserveur.net
            </Location>
    
    </VirtualHost>
    
    </IfModule>

    Une fois sur 10 (?!!), la connexion entre mon client et mon serveur fonctionne, j'obtiens alors la réponse suivante :

    HTTP/1.1 101 Switching Protocols
    Content-Type: text/html;charset=UTF-8
    Upgrade: WebSocket
    Connection: Upgrade
    Sec-WebSocket-Version: 13
    Sec-WebSocket-Origin: https://www.lesitedorigine.com
    Sec-WebSocket-Location: ws://monserveur.net/
    Sec-WebSocket-Accept: eE+jwv4RXWgXEXR+jR2vbM2zK3E=


    Mais... vous l'aurez compris ... 9 fois sur 10 il manque les informations Upgrade et Connection dans le header :

    HTTP/1.1 101 Switching Protocols
    
    Content-Type: text/html;charset=UTF-8
    Upgrade:
    Connection:
    Sec-WebSocket-Version: 13
    Sec-WebSocket-Origin: https://www.lesitedorigine.com
    Sec-WebSocket-Location: ws://monserveur.net/
    Sec-WebSocket-Accept: yhhXES631Rbbp2Uo45Hp31vkA1s=


    Et la connexion se coupe, coté client j'obtiens "Undefined" comme erreur ... ça m'avance pas du tout :/

    Je suis certain que mes deux scripts client/serveur fonctionnent car avant de passer en WSS et avant d'installer un certificat SSL je me connectais uniquement en WS et ça fonctionnait parfaitement.

    Et, l'aléatoire du refus ou de l'autorisation de connexion me fait poser vraiment plein de questions...

    Est-ce un problème de délai de traitement ? Parfois ça a le temps de passer, parfois non ... et dans ce cas là pourquoi et comment résoudre le problème ?

    A l'aide !

    -
    Edité par vinze60 10 mai 2017 à 17:14:52

    • Partager sur Facebook
    • Partager sur Twitter
      12 mai 2017 à 8:26:44

      Pour info, en essayant sur Chrome et Internet Explorer, je n'ai pas ce problème. 100% de mes connexions vers le websocket sécurisé fonctionnent... mais pas sur Firefox !!!!!!!!

      SOS

      -
      Edité par vinze60 12 mai 2017 à 12:33:24

      • Partager sur Facebook
      • Partager sur Twitter

      Connexions aléatoirement réussies vers Websocket

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown