Updater Initializing hängt 14.0.3

Guten Mittag.
Ich habe ein Problem mit meiner Nextcloud installation. ich will nun von 14.0.3.0 auf die neuste.

wenn ich nun den updater starte kommt nur

Initializing

Current version is 14.0.3.

dann hängt es. im updater log steht

FClshPwqWc [info] releaseChannel: stable
2019-04-22T15:01:28+0200 FClshPwqWc [info] internal version: 14.0.3.0
2019-04-22T15:01:28+0200 FClshPwqWc [info] updateURL: https://updates.nextcloud.org/updater_server/?version=14x0x3x0xxxstablexx2018-10-12T06%3A49%3A20%2B00%3A00+549d53cd93807270a18495a08dac72b24aabf5bbx7x0x33

dannach passiert da nichts mehr in den logs. weis da einer ein rat?

lg iTweek

Die Anfrage liegt zwar schon über ein Jahr zurück, aber für alle die noch auf dieses Problem stossen werden hier meine Lösung:

Die URL wird mit den curl PHP Funktionen abgefragt. Dabei wird eine Zertifikatsüberprüfung durchgeführt. Das funktioniert nicht und der Updater bleibt hängen. Bei mir hatte der apache User keine Zugriffsrechte auf die Trustet CA’s.
Dieses kleine Skript hat mir bei der Lösung geholfen:

<?php
  var_dump(openssl_get_cert_locations());

  $updateURL="https://updates.nextcloud.com/updater_server/?version=18x0x2x2xxxstablexx2020-03-11T14%3A54%3A25%2B00%3A00+93cae9d2d17112084c882df902b31604151669c0x7x2x11";
  $curl = curl_init();
  curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $updateURL,
    CURLOPT_USERAGENT => 'Nextcloud Updater',
  ]);

  $response = curl_exec($curl);
  var_dump($response);

  var_dump(curl_errno($curl));
?>

Wird das Skript mit root ausgeführt gibt es kein Problem:

[root@]# php test.php 
array(8) {
  ["default_cert_file"]=>
  string(21) "/etc/pki/tls/cert.pem"
  ["default_cert_file_env"]=>
  string(13) "SSL_CERT_FILE"
  ["default_cert_dir"]=>
  string(18) "/etc/pki/tls/certs"
  ["default_cert_dir_env"]=>
  string(12) "SSL_CERT_DIR"
  ["default_private_dir"]=>
  string(20) "/etc/pki/tls/private"
  ["default_default_cert_area"]=>
  string(12) "/etc/pki/tls"
  ["ini_cafile"]=>
  string(0) ""
  ["ini_capath"]=>
  string(0) ""
}
string(810) "<?xml version="1.0" encoding="UTF-8"?>
<nextcloud>
 <version>18.0.6.0</version>
 <versionstring>Nextcloud 18.0.6</versionstring>
 <url>https://download.nextcloud.com/server/releases/nextcloud-18.0.6.zip</url>
 <web>https://docs.nextcloud.com/server/18/admin_manual/maintenance/upgrade.html</web>
 <changes>https://updates.nextcloud.com/changelog_server/?version=18.0.6</changes>
 <autoupdater>1</autoupdater>
 <eol>0</eol>
 <signature>ca4Eetjt2mve8ivIEhOCpaRIOr5BZKgHY6a2ftbpeKpRDUGJx0QaPFf1p3NUqGgB
/zna+9J8eQl9rQgAv4rX0RAAUvD31frJ7yrPa9zwv+OfUOt7zA3NcMruLJGWwDOn
gOhDzfSUt+lNC+WI60yEA4wtz9J4q0KKy/4RtUo0eL+cRO/um7Grqqg8SIuuy7TO
l6vEwrHndXehP7YSVksU19rCAQlFstqRhOoyFPLUtODtjPOHJnDH1uB4XDbvNwy8
dNUU8f+NFPgAgnu+QCGphrOqVdDnvd46uKMxkQm/V4V0/t9yzuw4pAtUImA6UZOc
5ZUISSxzrRMeGcu4zTRLVQ==</signature>
</nextcloud>
"
int(0)

Jetzt wird das Skript mit dem User apache ausgeführt:

[root@]# sudo -u apache php test.php 
array(8) {
  ["default_cert_file"]=>
  string(21) "/etc/pki/tls/cert.pem"
  ["default_cert_file_env"]=>
  string(13) "SSL_CERT_FILE"
  ["default_cert_dir"]=>
  string(18) "/etc/pki/tls/certs"
  ["default_cert_dir_env"]=>
  string(12) "SSL_CERT_DIR"
  ["default_private_dir"]=>
  string(20) "/etc/pki/tls/private"
  ["default_default_cert_area"]=>
  string(12) "/etc/pki/tls"
  ["ini_cafile"]=>
  string(0) ""
  ["ini_capath"]=>
  string(0) ""
}
bool(false)
int(77)

Fehler 77, aha! Der User apache hat also anscheinend keine Rechte auf das “default_cert_file” zuzugreifen.

Hier die Prüfung dazu:

[root@]# sudo -u apache test -r /etc/pki/tls/cert.pem; echo $?
1

Die 1 bedeutet: Kein zugriff!

/etc/pki/tls/cert.pem ist bei meiner Installation ein Link auf /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem. Also prüfe ich die Rechte auf diese Datei:

[root@]# ls -l /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
-rw-------. 1 root root 222148 21. Mär 19:11 /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

Also hat nur root Rechte auf die Datei. Hier hilft jetzt ein chmod:

[root@]# chmod 444 /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

Und jetzt funktioniert das Skript auch mit dem User apache:

[root@dev private]# sudo -u apache php test.php 
array(8) {
  ["default_cert_file"]=>
  string(21) "/etc/pki/tls/cert.pem"
  ["default_cert_file_env"]=>
  string(13) "SSL_CERT_FILE"
  ["default_cert_dir"]=>
  string(18) "/etc/pki/tls/certs"
  ["default_cert_dir_env"]=>
  string(12) "SSL_CERT_DIR"
  ["default_private_dir"]=>
  string(20) "/etc/pki/tls/private"
  ["default_default_cert_area"]=>
  string(12) "/etc/pki/tls"
  ["ini_cafile"]=>
  string(0) ""
  ["ini_capath"]=>
  string(0) ""
}
string(810) "<?xml version="1.0" encoding="UTF-8"?>
<nextcloud>
 <version>18.0.6.0</version>
 <versionstring>Nextcloud 18.0.6</versionstring>
 <url>https://download.nextcloud.com/server/releases/nextcloud-18.0.6.zip</url>
 <web>https://docs.nextcloud.com/server/18/admin_manual/maintenance/upgrade.html</web>
 <changes>https://updates.nextcloud.com/changelog_server/?version=18.0.6</changes>
 <autoupdater>1</autoupdater>
 <eol>0</eol>
 <signature>ca4Eetjt2mve8ivIEhOCpaRIOr5BZKgHY6a2ftbpeKpRDUGJx0QaPFf1p3NUqGgB
/zna+9J8eQl9rQgAv4rX0RAAUvD31frJ7yrPa9zwv+OfUOt7zA3NcMruLJGWwDOn
gOhDzfSUt+lNC+WI60yEA4wtz9J4q0KKy/4RtUo0eL+cRO/um7Grqqg8SIuuy7TO
l6vEwrHndXehP7YSVksU19rCAQlFstqRhOoyFPLUtODtjPOHJnDH1uB4XDbvNwy8
dNUU8f+NFPgAgnu+QCGphrOqVdDnvd46uKMxkQm/V4V0/t9yzuw4pAtUImA6UZOc
5ZUISSxzrRMeGcu4zTRLVQ==</signature>
</nextcloud>
"
int(0)

Danach kann dann auch das Update von Nextcloud ohne Probleme durchgeführt werden und bleibt nicht beim Initializing hängen!