Jump to content
Froxlor Forum
  • 0

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


fabian.moron.zirfas

Question

 
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
 

 

Link to comment
Share on other sites

25 answers to this question

Recommended Posts

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

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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}

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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);
}

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 ...

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Archived

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

×
×
  • Create New...