Nextcloud join script läuft nicht durch

german
nextcloud

#1

Hallo,
ich bekomme aus dem join.log folgende Meldung:

curl failed with error 60, parameters were\n\t-X POST -H OCS-APIREQUEST: true -u nc_admin:ohV9ael7thae6Jahx5xeih"iiqu8ah https://ucs-server.xxxxx.intranet/nextcloud/ocs/v2.php/apps/user_ldap/api/v1/config
EXITCODE=60

Fr 31. Aug 14:51:09 CEST 2018
univention-run-join-scripts finished

Ich vermute mal es hat damit zu tun, dass im join-script auf die interne adresse verwiesen wird (.intanet). Das ssl Zertifikat aber nicht dazu passt (xxxx.spdns.de).
Kann man da was machen?
Die momentan installierte Version ist 4.3-1 errata116.


#2

Hallo,

laut https://curl.haxx.se/libcurl/c/libcurl-errors.html bedeutet der Fehler 60 ein Problem mit dem fehlenden Vertauen zur ausstellenden CA (Peer certificate cannot be authenticated with known CA certificates. ).
Das trifft nicht ganz Ihre Vermutung (da würde ich Fehler 51 erwarten, auch aus Erfahrung in ähnlichen Fällen).

Fehler 60 könnte man eventuell durch update-ca-certificates eliminieren, vorausgesetzt, es handelt sich um ein ähnliches Problem wie in der Lets Encrypt README beschrieben. Aber ob das im beschriebenen Fall zum eigentlichen Ziel führt weiß ich auch nicht.

Der Nextcloud-Join hat m.E. an dieser Stelle ein generelles Problem, da er den curl hart gegen https://${hostname}.${domainname}/nextcloud und damit die Wand fährt wenn der Apache ein hier nicht passendes - weil externes - Zertifikat nutzt. Was man bei Nextcloud wohl machen würde.

Mir fällt dazu im Moment nichts ein außer @blizzz um seine Meinung zum Thema zu bitten.

Viele Grüße,
Dirk Ahrnke


#3

Hallo Herr Ahrnke,

danke für die Info.
Als quick&dirty Lösung könnt ich die externe Domäne direkt ins join-script schreiben, oder?

NC_MEMBER_OF=0
#HOST="https://${hostname}.${domainname}/nextcloud"
HOST="https://xxxxxx.spdns.de/nextcloud"

VG
Reiner


#4

Das wäre zumindest mal eine Idee. Ich würde aber vor dem Join-Versuch zunächst mal überhaupt ein curl mit https auf die externe Adresse versuchen.

Viel Erfolg


#5

Komischerweise gibt mir curl folgendes aus:

root@ucs-server:curl https://xxxxxx.spdns.de
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verification probably failed due to a problem with the certificate (it might be expired, or the name might not match the domain name in the URL). If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option.

Scheint so als ob mit meinem Zertifikat etwas nicht stimmt… Oberflächlich meckert Firefox und Co. nicht. Bei näherer Betrachtung schon:

2018-08-31%2020_46_03-SSL-Zertifikat%20%C3%BCberpr%C3%BCfen%20%E2%80%A2%20SSL-Trust%20-%20Internet%20Explorer

Ist ein Zertifikat von InterSSL und noch nicht abgelaufen :thinking:


#6

InterSSL kenne ich nicht, aber da steht OU=PositveSSL, also vermutlich ein Reseller o.ä. Bei Positive-SSL liefert zumindest Comodo immer ein ca-bundle mit.
Ist das in apache2/ssl/certificatechain eingetragen?


#7

Ja, ist ein Reseller. Das Zertifikat ist von Commodo. “apache2/ssl/certificatechain” ist leer.
Ich konnte mir aber nur die folgenden Dateien herunterladen und es hat schon mal funktioniert:

AddTrustExternalCARoot.pem
COMODORSAAddTrustCA.pem
COMODORSADomainValidationSecureServerCA.crt
xxxxxx_spdns_de.crt

Vermutlich ist die “COMODORSADomainValidationSecureServerCA.crt” das ca-bundle :thinking:

Ich habe das schon versucht hiermit Eigenes Zertifikat Apache zu vergleichen, aber irgendwie sieht es dort anders aus.
Ich probiers mal weiter.

Vielen Dank erst mal!
VG
Reiner


#8

So,
meine Vermutung war richtig. Ich habe “COMODORSADomainValidationSecureServerCA.crt” nach “/etc/ssl/certs” kopiert und “apache2/ssl/certificatechain” auf “”/etc/ssl/certs/COMODORSADomainValidationSecureServerCA.crt" geändert.
Dann sind die Probleme mit dem Zertifikat erledigt.
Das join-script für nextcloud läuft jetzt ohne sichtbare Fehler durch, aber der Status des scripts bleibt auf “Ausstehend” stehen…

Hier das join.log

Für weitere Hilfe wäre ich dankbar
VG
Reiner


#9

Schön, dass der Zugriff mit https zunächst geht. Ich hatte gestern schon angesetzt und wollte noch auf die Hilfeseite von Comodo, in der erklärt wird, wie die Intermediates zu verstehen sind , verlinken (https://support.comodo.com/index.php?/comodo/Knowledgebase/Article/View/620/0/) bin dabei aber darüber gestolpert, dass wir uns angewöhnen sollten, langsam von der Nutzung von SSLCertificateChainFile abzusehen. Hintergrund für eigene Recherche ist das Stichwort AH02559. Kurzfassung: Die Zertifikate sollen ab Apache 2.4.8 als komplette Kette (full chain) in eine Datei die dann bei SSLCertificateFile anzugeben ist. Ich habe im Moment noch keine Erklärung, warum die Apache 2.4.25 unter UCS 4.3. das chainfile trotzdem noch akzeptiert.

Zum join.log:
Ab Zeile 5870:

Access through untrusted domain

Please contact your administrator. If you are an administrator, edit the "trusted_domains" setting in config/config.php like the example in config.sample.php.

Da die Konfiguration jetzt vermutlich mit Ihrem o.a. Workaround versucht wird, müssen Sie eventuell schon an dieser Stelle die Konfiguration anpassen. Später wäre es sowieso nötig. Hintergründe stehen in der Nextcloud-Doku. Die Datei liegt in /var/lib/univention-appcenter/apps/nextcloud/conf/config.

hth,
Dirk Ahrnke


#10

Nützt irgendwie alles nix…

/var/lib/univention-appcenter/apps/nextcloud/conf/config/config.php:

  'trusted_domains' =>
    array (
    0 => 'xxxxxx.spdns.de',
    1 => 'aaa.bbb.ccc.ddd',
    2 => 'ucs-server.ehlers.intranet',
  ),

Fehler bleibt. Join-Script läuft nicht durch. Wenn ich die Nextcloud Seite über einen Browser aufmache dann lande ich immer auf der Seite:

"Zugriff über eine nicht vertrauenswürdige Domain. Bitte kontaktiere deinen Administrator. Wenn du Administrator bist, bearbeite die „trusted_domains“-Einstellung in config/config.php. Siehe Beispiel in config/config.sample.php.
Abhängig von Deiner Konfiguration kann diese Schaltfläche verwandt werden, um die Domain als vertrauenswürdig einzustufen: „xxxxxx.spdns.de“ als vertrauenswürdige Domain hinzufügen

#11

So läuft.
Nach studieren dieser Anleitung https://help.univention.com/t/nextcloud-join-skript-fehler/5049/16

habe ich in der : /usr/lib/univention-install/50nextcloud.inst

nextcloud_curl() {
    local result
    local curlCode
    result=$(curl -k -s "$@")
    curlCode=$?
    #echo "curl exit code $curlCode params $@" > /dev/stderr
    if [ ! ${curlCode} -eq 0 ]; then
        debugOutput=""
        if [ "$nextcloud_ucs_debug" -eq 1 ]; then
            debugOutput=", parameters were\n\t$@"
        fi
        echo "curl failed with error $curlCode$debugOutput" > /dev/stderr
        exit ${curlCode}
    fi
    echo "$result"
}

hinter "result=$(curl …) die “-k” option ergänzt. Dann lief das Join-Script durch.

VG
Reiner


#12

Hi,
wir haben hier das gleiche Problem glaube ich.
Das Nextcloud join skript läuft nicht durch:

Waiting for activation of the extension object nextcloud: OK
Object exists: cn=nextcloud,cn=custom attributes,cn=univention,dc=foo,dc=de
E: Object exists: cn=nextcloudUserEnabled,cn=nextcloud,cn=custom attributes,cn=univention,dc=foo,dc=de
No modification: cn=nextcloudUserEnabled,cn=nextcloud,cn=custom attributes,cn=univention,dc=foo,dc=de
E: Object exists: cn=nextcloudUserQuota,cn=nextcloud,cn=custom attributes,cn=univention,dc=foo,dc=de
No modification: cn=nextcloudUserQuota,cn=nextcloud,cn=custom attributes,cn=univention,dc=foo,dc=de
E: Object exists: cn=nextcloudGroupEnabled,cn=nextcloud,cn=custom attributes,cn=univention,dc=foo,dc=de
No modification: cn=nextcloudGroupEnabled,cn=nextcloud,cn=custom attributes,cn=univention,dc=foo,dc=de
Could not create LDAP Config at Nextcloud
EXITCODE=1
b1f27bae-827a-46ca-867e-79070dc1885d
univention-join-hooks: looking for hook type “join/post-joinscripts” on mail.foo.de
Found hooks:

-k in die /usr/lib/univention-install/50nextcloud.inst hinzuzufügen, hat leider keine Verbesserung gebracht.
Noch jemand eine Idee?
Univention und nextcloud sind auf dem aktuellsten Stand.

lg
Sascha