Cette procédure va vous guider pas à pas dans la mise en place du https avec docker.
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 suivants :
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 :
Pour l'utilisation de letsencrypt nous vous invitons a consulter la documentation officielle : https://certbot.eff.org/docs/using.html#apache
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 suivants :
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"
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).