Fórum Root.cz
Hlavní témata => Server => Téma založeno: beer 31. 08. 2017, 10:19:37
-
Ahoj, na můj vpsfree debian jsem nainstaloval shellinabox a certbot apache, vygeneroval certifikáty lets encrypt, ale nemůžu rozchodit v shellinaboxu lets encrypt certifikát.
Pokoušel jsem se o 2 způsoby, jak rozchodit lets encrypt certifikát v shellinaboxu, bohužel neúspěšně.
1. první způsob (dle https://vpsguide.net/tutorials/vps-tutorials/install-shellinabox-on-an-ubuntu-debian-vps/ (https://vpsguide.net/tutorials/vps-tutorials/install-shellinabox-on-an-ubuntu-debian-vps/)): přes mod proxy, ale v debianu stretch nemohu nainstalovat do apache mod proxy.
aptitude install -y libapache2-mod-proxy-html libxml2-dev
Nepodařilo se najít balík, jehož název nebo popis odpovídá „libapache2-mod-proxy-html“
Nelze provést některé akce, přerušuji
a2enmod http_proxy
ERROR: Module http_proxy does not exist!
2. způsob, co jsem zkoušel:
/etc/default/shellinabox
# Should shellinaboxd start automatically
SHELLINABOX_DAEMON_START=1
# TCP port that shellinboxd's webserver listens on
SHELLINABOX_PORT=4200
# Parameters that are managed by the system and usually should not need
# changing:
# SHELLINABOX_DATADIR=/var/lib/shellinabox
# SHELLINABOX_USER=shellinabox
# SHELLINABOX_GROUP=shellinabox
# Any optional arguments (e.g. extra service definitions). Make sure
# that that argument is quoted.
#
# Beeps are disabled because of reports of the VLC plugin crashing
# Firefox on Linux/x86_64.
SHELLINABOX_ARGS="--no-beep --cert=/etc/shellinabox/certs/"
nebo
/etc/default/shellinabox
# Should shellinaboxd start automatically
SHELLINABOX_DAEMON_START=1
# TCP port that shellinboxd's webserver listens on
SHELLINABOX_PORT=4200
# Parameters that are managed by the system and usually should not need
# changing:
# SHELLINABOX_DATADIR=/var/lib/shellinabox
# SHELLINABOX_USER=shellinabox
# SHELLINABOX_GROUP=shellinabox
# Any optional arguments (e.g. extra service definitions). Make sure
# that that argument is quoted.
#
# Beeps are disabled because of reports of the VLC plugin crashing
# Firefox on Linux/x86_64.
SHELLINABOX_ARGS="--no-beep"
SHELLINABOX_ARGS="--cert=/etc/shellinabox/certs/"
Dále jsem vytvořil soubor, který by mi měl pomoci vytvářet certifikát pro shelliabox, ze souborů, které používám na apachi od lets encrypt:
/etc/shellinabox/lets-renew.sh
#!/bin/bash
cat /etc/letsencrypt/live/vpsfree.dynv6.net/privkey.pem /etc/letsencrypt/live/vpsfree.dynv6.net/fullchain.pem >/etc/shellinabox/certs/certificate.pem
chown shellinabox:shellinabox /etc/shellinabox/certs
chmod 700 /etc/shellinabox/certs
chmod 600 /etc/shellinabox/certs/certificate.pem
exit 0
Vytvořil jsem tím etc/shellinabox/certs/certificate.pem
ls /etc/shellinabox/certs/
certificate.pem
a spustil shellinabox:
shellinaboxd
[ssl] Cannot read valid certificate from "certificate.pem"! Check file permissions and file format.
Nejede, tak jsem zkusil předat parametr přes -c, očekává se předání složky s certifikátem:
shellinaboxd -c /etc/shellinabox/certs/
[ssl] Cannot read valid certificate from "/etc/shellinabox/certs//certificate.pem"! Check file permissions and file format.
Kde dělám chybu?
-
shellinaboxd
[ssl] Cannot read valid certificate from "certificate.pem"! Check file permissions and file format.
shellinaboxd -c /etc/shellinabox/certs/
[ssl] Cannot read valid certificate from "/etc/shellinabox/certs//certificate.pem"! Check file permissions and file format.
Co je na "Cannot read valid certificate from ..." a "Check file permissions and file format" nesrozumitelného?
-
Přece vidíte, jak jsem nastavil práva. 700 na složku a 600 na certifikát. Vlastníkem je také shellinabox. Já v tom chybu nevidím.
A jak jsem přesně generoval certifikát, taky vidíte. Bylo to špatně? Ten certifikát tam normálně je v dané cestě a shellinabox má k tomu práva.
Když spustím přes systemctl start shellinabox, tak to hlásí to samé.
-
Vidím, že vytváříš adresář s danými přístupovými údaji. Jaká jsou ale práva na ten vlastní certifikát? Místo ls to chce ls -l
-
Rozumím, myslím, že OK...:
ls -l /etc/shellinabox/certs/certificate.pem
-rw------- 1 shellinabox shellinabox 5205 srp 31 11:01 /etc/shellinabox/certs/certificate.pem
Tak jak to rozchodit aspoň přes tu proxy? Ještě jsem zkusil:
a2enmod proxy proxy_http
To prošlo.
Ale proxy nejede ani po restartu apache
Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /shellinabox/.
Reason: Error reading from remote server
-
Přece vidíte, jak jsem nastavil práva. 700 na složku a 600 na certifikát. Vlastníkem je také shellinabox. Já v tom chybu nevidím.
A jak jsem přesně generoval certifikát, taky vidíte. Bylo to špatně? Ten certifikát tam normálně je v dané cestě a shellinabox má k tomu práva.
Shellinabox si ale myslí něco jiného. Tvrdí, že k souboru nemá přístup nebo že nemá správný formát. Takže je třeba ověřit jestli se daný uživatel skutečně k souboru dostane = jestli má práva a/nebo formát certifikátu.
Také je dobré zjistit, jako jaký uživatel ta služba běží, třeba je to jinak než si myslíte.
Přepnete li se na uživatele shellinabox, tak budete mít soubor přístupný? Co kterákoli nadřazená složka v cestě? Nebrání přístupu?
Je formát souboru v pořádku?
A v neposlední řadě, není to chyba v shellinabox a nebo také možná věc, nespouští to systemd v nějakém kontextu, který přístupu k certifikátu shellinaboxu brání?
-
http://www.linuxintro.org/wiki/Shell_in_a_box#cannot_read_valid_certificate
Není to toto?
-
Nepomohlo. Nakonec rozchozeno tak, že jsem nastavil --localhost-only --disable-ssl, a nakonec se mi podařilo zprovoznit tu proxy, které naslouchá na localhostu 4200
-
Kdyby někoho zajímalo funkční nastavení, předpokládejme,že máte funkční lets encrypt například dle tohoto návodu. Podle tohoto návodu povolíme /etc/rc.local, vytvoříme ho a dáme mu spustitelný příznak.
Povolíme proxy mód na apachi (tohle mi fungovalo na debianu 9:
a2enmod proxy proxy_http
/etc/apache2/sites-enabled/shellinabox.conf
<Location /mujterm>
ProxyPass http://localhost:4200/
Order allow,deny
Allow from all
</Location>
Tohle jsem dal do /etc/rc.local
#!/bin/bash
cd /tmp && shellinaboxd --localhost-only --disable-ssl &
exit 0
Po rebootu se shellinabox správně nastartuje a je dostupný přes https na mojedomena.tld/mujterm
-
Ještě můžeme zabezpečit:
<IfModule mod_proxy.c>
# If you want to use apache2 as a forward proxy, uncomment the
# 'ProxyRequests On' line and the <Proxy *> block below.
# WARNING: Be careful to restrict access inside the <Proxy *> block.
# Open proxy servers are dangerous both to your network and to the
# Internet at large.
#
# If you only want to use apache2 as a reverse proxy/gateway in
# front of some web application server, you DON'T need
# 'ProxyRequests On'.
#ProxyRequests On
#<Proxy *>
# AddDefaultCharset off
# Require all denied
# #Require local
#</Proxy>
# Enable/disable the handling of HTTP/1.1 "Via:" headers.
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
#ProxyVia Off
<Proxy *>
AddDefaultCharset off
AuthUserFile /etc/apache2/.htpasswd
AuthName EnterPassword
AuthType Basic
require user sexy-jmeno
Order deny,allow
Allow from all
#Allow from .example.com
</Proxy>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
htpasswd -c /etc/apache2/.htpasswd sexy-jmeno
systemctl restart apache2
-
Také jsem se shelliabox a certifikátem bojoval ale pak jsem zjistil že je to celkem jednoduché, na debianu si zřejmě při instalaci osahal všechny certifikáty a ve složce /var/lib/shellinabox povytvárel soubory s názvy certificate-www.mujweb.cz.pem, certificate-ftp.mujweb.cz.pem tak že vzal všechny domény z daného certifikátu a nakopíroval tam ten certifikát mnohokrát a pak to jednoduše šlapalo přes https://www.mujweb.cz:4200
-
Kdyby někoho zajímalo funkční nastavení, předpokládejme,že máte funkční lets encrypt například dle tohoto návodu. Podle tohoto návodu povolíme /etc/rc.local, vytvoříme ho a dáme mu spustitelný příznak.
Povolíme proxy mód na apachi (tohle mi fungovalo na debianu 9:
a2enmod proxy proxy_http
/etc/apache2/sites-enabled/shellinabox.conf
<Location /mujterm>
ProxyPass http://localhost:4200/
Order allow,deny
Allow from all
</Location>
Tohle jsem dal do /etc/rc.local
#!/bin/bash
cd /tmp && shellinaboxd --localhost-only --disable-ssl &
exit 0
Po rebootu se shellinabox správně nastartuje a je dostupný přes https na mojedomena.tld/mujterm
Zdravim ve spolek
Zprovozneni proxy - OK, funkcni a vyzkouseno na Apache 2.4 Ubuntu server 18.04
Shellinabox: staci do /etc/default/shellinabox pridat do sekce SHELLINABOX_ARGS
--localhost-only --disable-ssl
Restartovat Apache i Shellinabox a https pro Shellinabox je ready