Skip to content

after updating 19.0.5 -> 20.0.2 apps cant be updated  #24466

@hj-beckers

Description

@hj-beckers

When I try to update/install apps from the appstore, I get the message: "Error: Could not download app XXXX".
We use a MITM-proxy and uptonow it was sufficient to append our own certificate to /files_external/rootcerts.crt.

This message comes from lib/private/Installer.php line 379 belonging to public function downLoadApp{$appId, $allowUnstable = false} ? The 2002 versions is different versus the 19.0x version in regard auf this variable $allowUnstable

diff output:

192d191
< 	 * @param bool [$allowUnstable] Allow unstable releases
195,196c194,195
< 	public function updateAppstoreApp($appId, $allowUnstable = false) {
< 		if ($this->isUpdateAvailable($appId, $allowUnstable)) {
---
> 	public function updateAppstoreApp($appId) {
> 		if ($this->isUpdateAvailable($appId)) {
198c197
< 				$this->downloadApp($appId, $allowUnstable);
---
> 				$this->downloadApp($appId);
216d214
< 	 * @param bool [$allowUnstable]
220c218
< 	public function downloadApp($appId, $allowUnstable = false) {
---
> 	public function downloadApp($appId) {
223c221
< 		$apps = $this->appFetcher->get($allowUnstable);
---
> 		$apps = $this->appFetcher->get();
389d386
< 	 * @param bool $allowUnstable
392c389
< 	public function isUpdateAvailable($appId, $allowUnstable = false) {
---
> 	public function isUpdateAvailable($appId) {
411c408
< 			$this->apps = $this->appFetcher->get($allowUnstable);
---
> 			$this->apps = $this->appFetcher->get();

In the nextcloud log is a curl complaint about a self signed certificate (in former releases this was corrected by the above mentioned certificate copy):

{"reqId":"7FQsZA0ZMTornK9QXbY6","level":2,"time":"2020-11-25T11:03:44+01:00","remoteAddr":"","user":"--","app":"appstoreFetcher","method":"","url":"--","message":{"Exception":"GuzzleHttp\\Exception\\RequestException","Message":"cURL error 60: SSL certificate problem: self signed certificate in certificate chain (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)","Code":200,"Trace":[{"file":"/srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","line":155,"function":"createRejection","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::","args":[{"sink":{"__class__":"GuzzleHttp\\Psr7\\Stream"},"headers":[],"response":{"__class__":"GuzzleHttp\\Psr7\\Response"},"request":{"__class__":"GuzzleHttp\\Psr7\\Request"},"options":{"verify":"/srv/www/htdocs/nextcloud/resources/config/ca-bundle.crt","timeout":60,"proxy":{"http":"10.47.7.42:3128","https":"10.47.7.42:3128"},"synchronous":true,"handler":{"__class__":"GuzzleHttp\\HandlerStack"},"allow_redirects":{"max":5,"protocols":["http","https"],"strict":false,"referer":false,"track_redirects":false},"http_errors":true,"decode_content":true,"cookies":false,"idn_conversion":true},"errno":60,"onHeadersException":null,"__class__":"GuzzleHttp\\Handler\\EasyHandle"},{"errno":60,"error":"SSL certificate problem: self signed certificate in certificate chain","appconnect_time":0,"url":"https://apps.nextcloud.com/api/v1/apps.json","content_type":null,"http_code":0,"header_size":39,"request_size":103,"filetime":-1,"ssl_verify_result":19,"redirect_count":0,"total_time":0.060743,"namelookup_time":5.5e-5,"connect_time":0.00057,"pretransfer_time":0,"size_upload":0,"size_download":0,"speed_download":0,"speed_upload":0,"download_content_length":-1,"upload_content_length":-1,"starttransfer_time":0,"redirect_time":0,"redirect_url":"","primary_ip":"10.47.7.42","certinfo":[],"primary_port":3128,"local_ip":"10.47.8.71","local_port":39862,"http_version":0,"protocol":2,"ssl_verifyresult":0,"scheme":"HTTPS","appconnect_time_us":0,"connect_time_us":570,"namelookup_time_us":55,"pretransfer_time_us":0,"redirect_time_us":0,"starttransfer_time_us":0,"total_time_us":60743,"curl_version":"7.66.0"}]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","line":105,"function":"finishError","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::","args":[{"__class__":"GuzzleHttp\\Handler\\CurlHandler"},{"sink":{"__class__":"GuzzleHttp\\Psr7\\Stream"},"headers":[],"response":{"__class__":"GuzzleHttp\\Psr7\\Response"},"request":{"__class__":"GuzzleHttp\\Psr7\\Request"},"options":{"verify":"/srv/www/htdocs/nextcloud/resources/config/ca-bundle.crt","timeout":60,"proxy":{"http":"10.47.7.42:3128","https":"10.47.7.42:3128"},"synchronous":true,"handler":{"__class__":"GuzzleHttp\\HandlerStack"},"allow_redirects":{"max":5,"protocols":["http","https"],"strict":false,"referer":false,"track_redirects":false},"http_errors":true,"decode_content":true,"cookies":false,"idn_conversion":true},"errno":60,"onHeadersException":null,"__class__":"GuzzleHttp\\Handler\\EasyHandle"},{"__class__":"GuzzleHttp\\Handler\\CurlFactory"}]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlHandler.php","line":43,"function":"finish","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::","args":[{"__class__":"GuzzleHttp\\Handler\\CurlHandler"},{"sink":{"__class__":"GuzzleHttp\\Psr7\\Stream"},"headers":[],"response":{"__class__":"GuzzleHttp\\Psr7\\Response"},"request":{"__class__":"GuzzleHttp\\Psr7\\Request"},"options":{"verify":"/srv/www/htdocs/nextcloud/resources/config/ca-bundle.crt","timeout":60,"proxy":{"http":"10.47.7.42:3128","https":"10.47.7.42:3128"},"synchronous":true,"handler":{"__class__":"GuzzleHttp\\HandlerStack"},"allow_redirects":{"max":5,"protocols":["http","https"],"strict":false,"referer":false,"track_redirects":false},"http_errors":true,"decode_content":true,"cookies":false,"idn_conversion":true},"errno":60,"onHeadersException":null,"__class__":"GuzzleHttp\\Handler\\EasyHandle"},{"__class__":"GuzzleHttp\\Handler\\CurlFactory"}]},{"file":"/
srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/Proxy.php","line":28,"function":"__invoke","class":"GuzzleHttp\\Handler\\CurlHandler","type":"->","args":["*** sensitive parameter replaced ***","*** sensitive parameter replaced ***"]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/Proxy.php","line":51,"function":"GuzzleHttp\\Handler\\{closure}","class":"GuzzleHttp\\Handler\\Proxy","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php","line":37,"function":"GuzzleHttp\\Handler\\{closure}","class":"GuzzleHttp\\Handler\\Proxy","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":29,"function":"__invoke","class":"GuzzleHttp\\PrepareBodyMiddleware","type":"->","args":["*** sensitive parameter replaced ***","*** sensitive parameter replaced ***"]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php","line":70,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":59,"function":"__invoke","class":"GuzzleHttp\\RedirectMiddleware","type":"->","args":["*** sensitive parameter replaced ***","*** sensitive parameter replaced ***"]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/HandlerStack.php","line":71,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":361,"function":"__invoke","class":"GuzzleHttp\\HandlerStack","type":"->","args":["*** sensitive parameter replaced ***","*** sensitive parameter replaced ***"]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":163,"function":"transfer","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameter replaced ***","*** sensitive parameter replaced ***"]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":183,"function":"requestAsync","class":"GuzzleHttp\\Client","type":"->","args":["get",{"__class__":"GuzzleHttp\\Psr7\\Uri"},{"verify":"/srv/www/htdocs/nextcloud/resources/config/ca-bundle.crt","timeout":60,"proxy":{"http":"10.47.7.42:3128","https":"10.47.7.42:3128"},"synchronous":true,"handler":{"__class__":"GuzzleHttp\\HandlerStack"},"allow_redirects":{"max":5,"protocols":["http","https"],"strict":false,"referer":false,"track_redirects":false},"http_errors":true,"decode_content":true,"cookies":false,"idn_conversion":true,"_conditional":{"User-Agent":"GuzzleHttp/6.5.1 curl/7.66.0 PHP/7.4.6"}}]},{"file":"/srv/www/htdocs/nextcloud/lib/private/Http/Client/Client.php","line":233,"function":"request","class":"GuzzleHttp\\Client","type":"->","args":["get","https://apps.nextcloud.com/api/v1/apps.json",{"verify":"/srv/www/htdocs/nextcloud/resources/config/ca-bundle.crt","timeout":60,"proxy":{"http":"10.47.7.42:3128","https":"10.47.7.42:3128"},"headers":{"User-Agent":"Nextcloud Server Crawler","Accept-Encoding":"gzip"},"synchronous":true}]},{"file":"/srv/www/htdocs/nextcloud/lib/private/App/AppStore/Fetcher/Fetcher.php","line":115,"function":"get","class":"OC\\Http\\Client\\Client","type":"->","args":["https://apps.nextcloud.com/api/v1/apps.json",{"timeout":60}]},{"file":"/srv/www/htdocs/nextcloud/lib/private/App/AppStore/Fetcher/AppFetcher.php","line":88,"function":"fetch","class":"OC\\App\\AppStore\\Fetcher\\Fetcher","type":"->","args":["",""]},{"file":"/srv/www/htdocs/nextcloud/lib/private/App/AppStore/Fetcher/Fetcher.php","line":187,"function":"fetch","class":"OC\\App\\AppStore\\Fetcher\\AppFetcher","type":"->","args":["","",false]},{"file":"/srv/www/htdocs/nextcloud/lib/private/Installer.php","line":223,"function":"get","class":"OC\\App\\AppStore\\Fetcher\\Fetcher","type":"->","args":[false]},{"
file":"/srv/www/htdocs/nextcloud/core/Command/App/Install.php","line":67,"function":"downloadApp","class":"OC\\Installer","type":"->","args":["calendar"]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/symfony/console/Command/Command.php","line":255,"function":"execute","class":"OC\\Core\\Command\\App\\Install","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/symfony/console/Application.php","line":1000,"function":"run","class":"Symfony\\Component\\Console\\Command\\Command","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/symfony/console/Application.php","line":271,"function":"doRunCommand","class":"Symfony\\Component\\Console\\Application","type":"->","args":[{"__class__":"OC\\Core\\Command\\App\\Install"},{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/srv/www/htdocs/nextcloud/3rdparty/symfony/console/Application.php","line":147,"function":"doRun","class":"Symfony\\Component\\Console\\Application","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/srv/www/htdocs/nextcloud/lib/private/Console/Application.php","line":215,"function":"run","class":"Symfony\\Component\\Console\\Application","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/srv/www/htdocs/nextcloud/console.php","line":100,"function":"run","class":"OC\\Console\\Application","type":"->","args":[]},{"file":"/srv/www/htdocs/nextcloud/occ","line":11,"args":["/srv/www/htdocs/nextcloud/console.php"],"function":"require_once"}],"File":"/srv/www/htdocs/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","Line":201,"CustomMessage":"--"},"userAgent":"--","version":"20.0.2.2"}

Versions: openSUSE 15.2, nextcloud 20.0.2, php 7.4.6, mariadb. 10.4.14. In a installation with opensuse 15.1, nc 19.0.5, php 7.2.5 and the same certificate appended to rootcerts.crt there are no problems.
Any hints?

Metadata

Metadata

Assignees

No one assigned

    Labels

    4. to releaseReady to be released and/or waiting for tests to finishbug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions