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!