Skip to content
View in the app

A better way to browse. Learn more.

Froxlor Forum

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

apache, letsencrypt und Generierung von 28_froxlor_ssl_vhost_mysite.com.conf

Featured Replies

 
Hallo Froxlor Gemeinde,
 
ich versuche gerade auf unserem Server Seiten via letsencrypt zu verschlüsseln. Mit den Froxlor eigenen Tools hatte ich leider keinen Erfolg. Das kann an unserem Setup liegen oder an meiner Unfähigkeit (Achtung Serveradmin-Noob!).  
 
(Der Fehler den ich bekomme ist folgender)  
 
Could not get Let's Encrypt certificate for mysite.com: Please check http://mysite/.well-known/acme-challenge/YI6nQJMglYzLJoOf-2u_MRZMivqlD5w29wovISnRJpA - token not available; PHP error: {"type":2,"message":"file_get_contents(http:\/\/mysite\/.well-known\/acme-challenge\/YI6nQJMglYzLJoOf-2u_MRZMivqlD5w29wovISnRJpA): failed to open stream: HTTP request failed! HTTP\/1.1 404 Not Found\r\n","file":"\/var\/www\/froxlor\/lib\/classes\/ssl\/class.lescript.php","line":171}
 
Wenn jemand dafür eine Lösung hat immer her damit.  
 
 
Was jedoch funktioniert hat ist direkt mit dem letsencrypt Kommandozeilen Tool ein Zertifikat zu erstellen. Nun habe ich das Problem, dass letsencrypt die ssl_vhost_xx.conf angepasst hat. Diese wird von froxlor jedoch bei einer Änderung an der Domain neu generiert.  
 
Meine Fragen:  
 
  • Wo sollte ich die Einstellungen der Domain anpassen, damit sich froxlor und letsencrypt nicht in die Quere kommen? (Geschätz unter "Eigene vHost-Einstellungen:" der Domain)
  • Welchen Teil aus der .conf muss ich übernehmen?  
  • Welcher Teil der .conf verändert sich bei einem erneuern des Zertifikats durch letsencrypt?  
 
Vielen Dank vorab
Fabian
 

 

-> php.ini -> allow_url_fopen = On

 

-> prüfe ob die acme.conf im webserver eingerichtet und einbunden wurde (config-templates!)

  • Author
-> php.ini -> allow_url_fopen = On

 

 

Check. Ist bereits vorher aktiv gewesen.

 

-> prüfe ob die acme.conf im webserver eingerichtet und einbunden wurde (config-templates!)

 

 

 
Den Teil verstehe ich nicht. Sorry.
Trotzdem danke für die Hilfe.  
  • Author

Die Datei

 

/etc/apache2/conf.d/acme.conf

existiert nicht. Grundsätzlich zu meiner Frage. Es ist für mich auch okay ohne froxlor die Zertifikate zu erstellen und zu verwalten. Ich würde nur gerne wissen wo ich mit Froxlor kollidieren könnte, bzw wo ich meine vHost Einstellungen ablegen sollte wenn ich verhindern möchte, dass Froxlor sie überschreibt.

Wenn du Let's Encrypt aktiviert hast in den Einstellungen, folge bitte den Anweisungen in Configuration -> [distro] -> Webserver -> [dein webserver], dann funktioniert das mit LE auch alles

  • Author

okay. Danke. Ich werde es versuchen.

  • 3 weeks later...

Hallo, gibt es bei dir eine Lösung?

Ich habe genau das gleiche Problem. Letsencrypt ist aktiviert und auch die Conf gesetzt. aber der stream kann nicht aufgebaut werden.

Dann nenne uns bitte die Fehlermeldung aus der Froxlor-SystemLog bzw. die ausgabe von "php /var/www/froxlor/scripts/froxlor_master_cronjob.php --letsencrypt --debug"

Sry für die verspätete Antwort, hier der Fehler in der Log:

Could not get Let's Encrypt certificate for ossi-connection.de: Please check http://ossi-connection.de/.well-known/acme-challenge/FAit3ZkFG4Pn1jqKfCNrzSUwEivZQYGryIdxzjKK4_8 - token not available; PHP error: {"type":2,"message":"file_get_contents(http:\/\/ossi-connection.de\/.well-known\/acme-challenge\/FAit3ZkFG4Pn1jqKfCNrzSUwEivZQYGryIdxzjKK4_8): failed to open stream: operation failed","file":"\/var\/www\/froxlor\/lib\/classes\/ssl\/class.lescript.php","line":171} 

und hier der Debug:

[debug] Adding SAN entry: ossi-connection.de
[debug] Adding SAN entry: www.ossi-connection.de
[information] letsencrypt Using 'https://acme-v01.api.letsencrypt.org' to generate certificate
[information] letsencrypt Account already registered. Continuing.
[information] letsencrypt Starting certificate generation process for domains
[information] letsencrypt Requesting challenge for ossi-connection.de
[information] letsencrypt Sending signed request to /acme/new-authz
[information] letsencrypt Got challenge token for ossi-connection.de
[information] letsencrypt Token for ossi-connection.de saved at /var/www/froxlor/.well-known/acme-challenge/089SkP0Tr3B7RolBZbg1mkGMzQYE-AV-CUNajRgbtL0 and should be available at http://ossi-connection.de/.well-known/acme-challenge/089SkP0Tr3B7RolBZbg1mkGMzQYE-AV-CUNajRgbtL0
[error] Could not get Let's Encrypt certificate for ossi-connection.de: Please check http://ossi-connection.de/.well-known/acme-challenge/089SkP0Tr3B7RolBZbg1mkGMzQYE-AV-CUNajRgbtL0 - token not available; PHP error: {"type":2,"message":"file_get_contents(http:\/\/ossi-connection.de\/.well-known\/acme-challenge\/089SkP0Tr3B7RolBZbg1mkGMzQYE-AV-CUNajRgbtL0): failed to open stream: operation failed","file":"\/var\/www\/froxlor\/lib\/classes\/ssl\/class.lescript.php","line":171}

Ich hoffe das hilft weiter.

 

Gruß

Lindi

Ok, das hatte ich alles schon.

Bei einer Einstellung bin ich mir jedoch nicht ganz sicher. 

Der globale Alias zeigt auf /var/www/froxlor/.well-known/acme-challenge

In den SSL Einstellungen bei Froxlor steht unter Verzeichnis für Let's Encrypt challenges: /var/www/froxlor

 

Muss da der selbe Pfad wie bei den Alias rein, oder reicht das Froxlor Verzeichniss?

Nein das stimmt so, das /.well-known/acme-challenge wird da angehängt

Ich habe gerade nochmal alles kontrolliert.

Die Datei /etc/apache2/conf-enabled/acme.conf exestiert inkl. entsprechenden Inhalt.

Letsencrypt ist aktiviert im Backend.

allow_url_fopen = On ist Global gesetzt (PHP-Info im Backend) und auch auf der Domain wo Letsencrypt angewendet werden soll.

 

ein Debug bringt leider weiterhin den Fehler

[debug] Updating ossi-connection.de
[debug] Adding SAN entry: ossi-connection.de
[debug] Adding SAN entry: www.ossi-connection.de
[information] letsencrypt Using 'https://acme-v01.api.letsencrypt.org' to generate certificate
[information] letsencrypt Account already registered. Continuing.
[information] letsencrypt Starting certificate generation process for domains
[information] letsencrypt Requesting challenge for ossi-connection.de
[information] letsencrypt Sending signed request to /acme/new-authz
[information] letsencrypt Got challenge token for ossi-connection.de
[information] letsencrypt Token for ossi-connection.de saved at /var/www/froxlor/.well-known/acme-challenge/10d0S29D6pSwJHHB76OcfP-2SX8hvh52cRuWEd0UX8s and should be available at http://ossi-connection.de/.well-known/acme-challenge/10d0S29D6pSwJHHB76OcfP-2SX8hvh52cRuWEd0UX8s
[error] Could not get Let's Encrypt certificate for ossi-connection.de: Please check http://ossi-connection.de/.well-known/acme-challenge/10d0S29D6pSwJHHB76OcfP-2SX8hvh52cRuWEd0UX8s - token not available; PHP error: {"type":2,"message":"file_get_contents(http:\/\/ossi-connection.de\/.well-known\/acme-challenge\/10d0S29D6pSwJHHB76OcfP-2SX8hvh52cRuWEd0UX8s): failed to open stream: operation failed","file":"\/var\/www\/froxlor\/lib\/classes\/ssl\/class.lescript.php","line":171}

Versuche mal folgendes, da mir die Ideen ausgehen:
 
Öffne die Datei /var/www/froxlor/lib/classes/ssl/class.lescript.php und in Zeile 171 änderst du:

$uri = "http://${domain}/.well-known/acme-challenge/${challenge['token']}";

einfach mal in

$uri = urlencode("http://${domain}/.well-known/acme-challenge/${challenge['token']}");

und schau was beim cronjob passiert

Dann kommt folgendes:

[error] Could not get Let's Encrypt certificate for ossi-connection.de: Please check http%3A%2F%2Fossi-connection.de%2F.well-known%2Facme-challenge%2FlsBmBncHYHfiGN5mtv8iLFesCSBYh0YhBV-TObUZ4f8 - token not available; PHP error: {"type":2,"message":"file_get_contents(http%3A%2F%2Fossi-connection.de%2F.well-known%2Facme-challenge%2FlsBmBncHYHfiGN5mtv8iLFesCSBYh0YhBV-TObUZ4f8): failed to open stream: No such file or directory","file":"\/var\/www\/froxlor\/lib\/classes\/ssl\/class.lescript.php","line":171}

Die Änderung habe ich aber in der Zeile 166 gemacht.

In der Zeile 171 steht: if ($payload !== trim(@file_get_contents($uri))) {

// simple self check
if ($payload !== trim(@file_get_contents($uri))) {
$errmsg = json_encode(error_get_last());
if ($errmsg != "null") {
$errmsg = "; PHP error: " . $errmsg;
} else {
$errmsg = "";
}
@unlink($tokenPath);
throw new \RuntimeException("Please check $uri - token not available" . $errmsg);
}

Dann nutzt du nicht die aktuelle Froxlor version, bitte mit 0.9.37-rc1 oder git-master testen...

Über

deb http://debian.froxlor.org jessie main

hab ich die Version

 

0.9.36-1+wheezy1

 

Warum auch immer Wheezy (liegt das an meinem Systemupgrade?).

 

apt-get update && apt-get upgrade

bringt nix neues.

Habs grad im Release teil gelesen, das es für die RC Version kein deb gibt.

Das erklärt wieso ich eine andere Version drauf habe.

Dann warte noch 1-2 tage und teste mit der 0.9.37 final

Hallo,

das aktuelle update ist eingespielt.

Die Zeile zum bearbeiten ist aber immer noch in der 166.

Aber selbst mit der Anpassung haben, hat sich nix geändert.

Dann leg doch mal irgendeine Datei in den Ordner /var/www/froxlor/.well-known/acme-challenge und versuch von deiner domain aus darauf zuzugreifen. ggfls dabei halt logs checken oder sogar nen PHP scriptchen machen, was grad das file_get_contents() auch ausführt und auf fehler achten

Also ich habe nun mal eine normale Datei erstellt, die kann ich mit der /.well-known URL aufrufen.

In den Errorlogs ist nix los, weder in der normalen Apache Log, noch bei den Kunden.

Die Fehlermeldung hat sich nicht geändert.

welche PHP Einstellungen greifen da genau? Die von der Domain, für das  dass SSL Zertifikat genutzt wird oder?

Was mich wundert, ist die Einstellung der Vhost datei für SSL. passt das so?

  SSLCertificateFile /etc/apache2/apache2.pem
  SSLCertificateKeyFile /etc/apache2/apache2.key
  SSLCACertificateFile /etc/apache2/apache2.crt
  SSLCertificateChainFile /etc/apache2/apache2.csr

Das sieht für mich irgendwie falsch aus.

Es greifen natürlich die php-Einstellungen die du für die Domain festgelegt hast, mit SSL oder nicht hat das nichts zu tun

Ich habe für diese Domain eine extra PHP Einstellung. Ist da was was fehlerhaft?

short_open_tag = On
asp_tags = Off
precision = 14
output_buffering = 4096
allow_call_time_pass_reference = Off
safe_mode = {SAFE_MODE}
safe_mode_gid = Off
safe_mode_include_dir = "{PEAR_DIR}"
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
{OPEN_BASEDIR_C}open_basedir = "{OPEN_BASEDIR}"
disable_functions = passthru,shell_exec,system,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate
disable_classes =
expose_php = Off
max_execution_time = 30
max_input_time = 60
memory_limit = 16M
post_max_size = 16M
error_reporting = E_ALL & ~E_NOTICE
display_errors = On
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = Off
variables_order = "GPCS"
register_globals = Off
register_argc_argv = Off
gpc_order = "GPC"
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
include_path = ".:{PEAR_DIR}"
enable_dl = Off
file_uploads = On
upload_tmp_dir = "{TMP_DIR}"
upload_max_filesize = 32M
allow_url_fopen = On
sendmail_path = "/usr/sbin/sendmail -t -f {CUSTOMER_EMAIL}"
session.save_handler = files
session.save_path = "{TMP_DIR}"
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = 0
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 16
session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
suhosin.simulation = Off
suhosin.mail.protect = 1
suhosin.session.encrypt = 0

opcache.restrict_api = "{DOCUMENT_ROOT}"

Ich seh mitlerweile den Wald vor lauter Bäume nicht mehr ...

Wenn du magst, schick mir gerne mal root Zugang per PM, dann schau ich mal drauf

Archived

This topic is now archived and is closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.