Jump to content
Froxlor Forum
  • 0
fabian.moron.zirfas

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

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
 

 

Share this post


Link to post
Share on other sites

25 answers to this question

Recommended Posts

  • 0

-> php.ini -> allow_url_fopen = On

 

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

Share this post


Link to post
Share on other sites
  • 0
-> 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.  

Share this post


Link to post
Share on other sites
  • 0

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.

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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.

Share this post


Link to post
Share on other sites
  • 0

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"

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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?

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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}

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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.

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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.

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By d00p
      Dear Froxlor Community,
      I am proud to finally release the stable version of a new API based froxlor. Due to massive internal improvements and changes in the core (almost 600 commits since 0.9.40.1) users are now able to list/create/edit/delete resources and entities of froxlor via API (requires activation of api-usage in the settings and a user based API-key). The froxlor frontend itself uses the API backend too.
      Froxlor now uses composer to include some of its requirements like phpMailer, Logger, IdnaConvert and TwoFactorAuth libraries. All required files will be included in the official tarball so you do not need to worry about installing and using composer (only if you are using / testing the git-master, see https://github.com/Froxlor/Froxlor/wiki/Install-froxlor-from-git-sources).
      Most important changes:
      froxlor now requires at least php-7.0 or newer, php-5.6 is no longer supported because of its EOL almost a year ago you can access data via API, for more information see https://api.froxlor.org/doc/. An example can be found here: https://github.com/Froxlor/Froxlor/tree/master/doc/example PHPUnit tested API backend with MySQL 5.6, 5.7 and 8 as well as MariaDB 10.3 and 10.4, see https://travis-ci.com/Froxlor/Froxlor compatibility for MySQL8 2FA (two-factor-authentication) for admins/resellers/customers (email or authenticator app) all froxlor-database tables will automatically be converted to the InnoDB engine added support for Debian 10 (buster) and Ubuntu 18.04 (bionic beaver) implemented Let's Encrypt via acme.sh - Note: all your current Let's Encrypt certificates will be removed and re-created due to another structure customizable error/access log handling for webserver (format, level, pipe-to-script, etc.) deprecated Debian 7 (wheezy) and Ubuntu 14.04 (trusty tahr) support dropped support for Ubuntu 12.04 (precise pangolin) dropped ticketsystem Changes in 0.10.1:
      allow/disallow API access on a per-customer base add explicit tlsv1.3 ciphersuite setting fixed wrong behaviour in Ftps.add() if customer is newly created and setting customer.ftpatdomain is true added expiration date to SSL certificates loaded via API request fixed wrong return in Certificates.get() if given domain does not have a certificate allow setting http2 flag for (sub)domains in customer view, fixes #725 Changes in 0.10.2:
      force Let's Encrypt ACMEv2 API, fixed #728 added default-ssl-vhost settings and optionally allow including of non-ssl default-vhost settings, fixes #727 implemented DomainZones.listing() to return custom stored dns entries removed API Parameter use_default_ssl_ipandport_if_empty from Domains.add() added API Parameter dont_use_default_ssl_ipandport_if_empty to Domains.add() fix registration and termination date to flip between empty-value and 0000-00-00 Download: 0.10.2

      Note: Debian packages are available as of 21th of October 2019 - Note that there are no packages for oldoldstable (jessie) anymore
      Attention: The auto-update feature is currently not working correctly for updaters from 0.9.x due to the archive taking a bit longer to extract and froxlor trying to redirect too soon thus leading to an internal server error. A quick reload does "fix" the problem. To avoid that please use the manual update options, see https://github.com/Froxlor/Froxlor/wiki

      Visit http://www.froxlor.org or join our IRC channel #froxlor on irc.freenode.net for support, help, participation or just a chat

      Thank you,
      d00p
    • By peterpan
      Hi,
      I have a domain equipped with a certificate from LE. The cert is valid another 2 months. Now I added a domain as an alias of the existing domain, but the certificate isn't updated to have the new domain as its SAN.
      How do I trigger getting a new and updated certificate? Should I delete the existing one?
      Thanks for helping out.
       
      Peter
    • By d00p
      Dear Froxlor Commuity,
      finally - the first release candidate of our new API based version 0.10.0! A lot of work has gone into this, many internal changes (you might miss any frontend-changes, but be patient...) most importantly the API backend which not only is used by froxlor frontend itself but can also be uses from within your website/scripts/etc.
      Froxlor now uses composer to include some of its requirements like phpMailer, Logger, IdnaConvert and TwoFactorAuth libraries.
      Here are some of the new features besides API that found their way in:
      - 2FA / TwoFactor Authentication for accounts - MySQL8 compatibility - new implementation of Let's Encrypt (acme.sh) - customizable error/access log handling for webserver (format, level, pipe-to-script, etc.) - lots and lots of bugfixes and small enhancements You can see all changes on Github at https://github.com/Froxlor/Froxlor/compare/0.9.40.1...0.10.0-rc2
      Download: 0.10.0-rc2

      Note: There will be no Debian packages for release-candidates.

      Visit http://www.froxlor.org or join our IRC channel #froxlor on irc.freenode.net.

      Thank you,
      d00p
    • By Keon
      Hallo alle miteinander,
       
      ich bin derweil dabei mir Froxlor auf einem CentOS7 System zum laufen zu bringen. Hier mal kurz ein kleiner Überblick wie ich aktuell stehe:
      SSH Port ändern, sudo User, NTP, EPEL Release, FirewallD für http, https, ssh mit neuem Port frei, fail2ban für SSH Apache, MariaDB, PHPMyAdmin, mod_ssl inkl. config und self signed cert, Froxlor Grundinstallation, Webserver und SSL Einstellungen Admin Menü, (Pfade, reload Script etc.) IP/Port 443 hinzugefügt, Konfiguration -> CentOS -> sonstiges -> cronjob for froxlor Ebenso habe ich - auch wenn unter "Konfiguration" für "CentOS" nicht vorhanden, die acme.conf angelegt  
      Kommen wir zur Frage:
      Wie bekomme ich hin, dass ich folgende Einstellung setzen kann:
       
      Habe ich noch etwas vergessen? Etwas grundlegendes? Bin normalerweise seit Debian Etch bis Jessie gewöhnt - sammle grad die ersten Erfahrungen mit Froxlor & CentOS nach 2 Jahren Pause aus der Informatik.
       
      Beste Grüße
    • By LukasH
      [Dieses Problem hat sich gelöst, ich hab mich doch tatsächlich verlesen, im Einsatz ist nur die .de, die .com ist nur eine Weiterleitung, klar funktioniert die nicht]
       
      ______________________________________________________________________________
       
      Dann habe ich noch ein weiteres Problem und zwar habe ich eine neue Subdomain angelegt, beim versuch ein SSL Zertifikat zu ziehen kommen nun nur die folgenden Fehlermeldungen:
      [Lets Encrypt self-check] Please check http://www.mail.hoerth.eu/.well-known/acme-challenge/_s_fIpGAblEU_T6A9Iej0RV1Wp-gte-xrTeVRu9naPI - token seems to be not available. This is just a simple self-check, it might be wrong but consider using this information when Let's Encrypt fails to issue a certificate Could not get Let's Encrypt certificate for mail.hoerth.eu: Verification ended with error: {"identifier":{"type":"dns","value":"www.mail.hoerth.eu"},"status":"invalid","expires":"2018-06-15T12:01:38Z","challenges":[{"type":"dns-01","status":"invalid","uri":"https:\/\/acme-v01.api.letsencrypt.org\/acme\/challenge\/SXa_3IeDJd19Xg3oVtLd0iaj3H2lKBN_fzM1cZPtguc\/5014287643","token":"mOYe0nDwOyTxrfZc83fmpBVeL1vZesbZrV-t_nkRdZ0"},{"type":"http-01","status":"invalid","error":{"type":"urn:acme:error:dns","detail":"DNS problem: NXDOMAIN looking up A for www.mail.hoerth.eu","status":400},"uri":"https:\/\/acme-v01.api.letsencrypt.org\/acme\/challenge\/SXa_3IeDJd19Xg3oVtLd0iaj3H2lKBN_fzM1cZPtguc\/5014287644","token":"_s_fIpGAblEU_T6A9Iej0RV1Wp-gte-xrTeVRu9naPI","keyAuthorization":"_s_fIpGAblEU_T6A9Iej0RV1Wp-gte-xrTeVRu9naPI.JriXbK73HFGeqTSIPL3Qg0VCDy2Qt0n4wrUZon9dCEM","validationRecord":[{"url":"http:\/\/www.mail.hoerth.eu\/.well-known\/acme-challenge\/_s_fIpGAblEU_T6A9Iej0RV1Wp-gte-xrTeVRu9naPI","hostname":"www.mail.hoerth.eu","port":"80"}]}],"combinations":[[0],[1]]} Ich habe dann mal nachgesehen und der Token existiert defintiv nicht - klar findet ihn Lets Encrypt also nicht, was ist denn gerade bei mir Los?




×
×
  • Create New...