Passer le flux docker en https

Cette procédure va vous guider pas à pas dans la mise en place du https avec docker.

Prérequis

Afin d'utiliser une image docker d'un logiciel Maarch. Vous devez tout d'abord télécharger apache2 :

apt install apache2

Une fois l'installation d'apache2 finie nous allons commencer par paramétrer le reverse proxy. Voici un exemple de VHOST pour le reverse proxy :

<VirtualHost *:80>

    #Information sur le serveur
    ServerAdmin webmaster@localhost
    ServerName onlyoffice.mondomaine.com

    #Localisation des journaux
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    #Configuration du proxy : ce vhost(*:80) rebondit sur http://127.0.0.1:81/
    ProxyPass / http://127.0.0.1:81/
    ProxyPassReverse / http://127.0.0.1:81/
    ProxyRequests Off
</VirtualHost>

Il vous faudra ensuite activer les modules apache suivant :

a2enmod proxy
a2enmod proxy_http

Nous allons maintenant pouvoir passer à la mise en place du HTTPS. Deux solutions sont possible pour mettre en place le https :

  • Utiliser letsencrypt

pour l'utilisation de letsencrypt je vous invite a consulter la documentation officiel : https://certbot.eff.org/docs/using.html#apache

  • Utiliser un certificat déjà existant.

Dans ce cas vous devrez créer un nouveau VHOST.

    <IfModule mod_ssl.c>
        <VirtualHost *:443>
            ServerAdmin webmaster@localhost
            ServerName onlyoffice.maarchcourrier.com

            SSLEngine on
            SSLCertificateFile /etc/ssl/certs/fullchain.pem
            SSLCertificateKeyFile /etc/ssl/private/privkey.pem

            <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
            </FilesMatch>
            <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
            </Directory>

            ProxyPass / http://127.0.0.1:81/
            ProxyPassReverse / http://127.0.0.1:81/
            ProxyRequests Off
            RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
            RequestHeader set "X-Forwarded-SSL" expr=%{HTTPS}
        </VirtualHost>
    </IfModule>

Il vous faudra ensuite activer les modules apache suivant :

a2enmod ssl
a2enmod headers

Dans le cas ou vous rencontrez des anomalies sur la vérification des certificats nous vous conseillons de lancer le docker de la façon suivante :

docker run -i -t -d -p 81:80  \
  --entrypoint "/bin/bash" \
  onlyoffice/documentserver:6.2.2 \
  -c "/var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/default.json -I -e 'this.services.CoAuthoring.requestDefaults.rejectUnauthorized=false' && /app/ds/run-document-server.sh"

ajouter un certificat

Installer une autorité de certification Copiez votre certificat au format PEM (le format qui contient ----BEGIN CERTIFICATE----) dans

/usr/local/share/ca-certificates 

et nommez-le avec une extension de fichier .crt.

Ensuite, lancez

sudo update-ca-certificates.

Avertissements: Cette installation concerne uniquement les produits qui utilisent ce magasin de certificats. Certains produits peuvent utiliser d'autres magasins de certificats; Si vous utilisez ces produits, vous devrez également ajouter ce certificat de CA à ces autres magasins de certificats. ( Instructions Firefox , Instructions Chrome , Instructions Java )

Tester le CA Vous pouvez vérifier si cela a fonctionné en recherchant le certificat que vous venez d'ajouter dans /etc/ssl/certs/ca-certificates.crt (qui est simplement une longue liste de tous les certificats de votre autorité de certification approuvée concaténés ensemble).

Vous pouvez également utiliser le client s_client d'OpenSSL en essayant de vous connecter à un serveur dont vous savez qu'il utilise un certificat signé par l'autorité de certification que vous venez d'installer.

$ openssl s_client -connect foo.whatever.com:443 -CApath /etc/ssl/certs

CONNECTED(00000003)
depth=1 C = US, ST = Virginia, O = "Whatever, Inc.", CN = whatever.com, emailAddress = admin@whatever.com
verify return:1
depth=0 C = US, ST = Virginia, L = Arlington, O = "Whatever, Inc.", CN = foo.whatever.com
verify return:1
---
Certificate chain
0 s:/C=US/ST=Virginia/L=Arlington/O=Whatever, Inc./CN=foo.whatever.com
i:/C=US/ST=Virginia/O=Whatever, Inc./CN=whatever.com/emailAddress=admin@whatever.com

... snip lots of output ...

    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1392837700
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)

La première chose à rechercher est la chaîne de certificats située en haut de la sortie. Cela devrait afficher l'autorité de certification en tant qu'émetteur (à côté de i:). Cela vous indique que le serveur présente un certificat signé par l'autorité de certification que vous installez.

Deuxièmement, recherchez le verify return code à la fin pour être défini sur 0 (ok).

results matching ""

    No results matching ""