Próxima edição em doc ao vivo com Collabora Online (CODE) erro cURL 60: O emissor do certificado do par foi marcado como não confiável pelo usuário

0

Olá! Eu estou tendo o melhor tempo com isso. Eu quero terminá-lo para que eu possa começar a escrever um livro inspirador para as pessoas e outros sobreviventes de lesões cerebrais aqui e ali quando eu tiver tempo. Eu tenho uma lesão cerebral com perda de memória de curto prazo (como Dory de encontrar Nemo) de um acidente de carro quase fatal em 2007 e se recuperou muito bem. Não quero usar o Google Drive ou outras soluções em nuvem de propriedade de outras empresas, pois qualquer informação carregada em algo como o Google Drive pertence ao Google e eles podem redistribuir o que quiserem. De qualquer forma, eu divago.

Eu instalei o Nextcloud 12 no Apache e ele funciona muito bem! Eu gostaria de editar documentos ao vivo pelas razões acima. Seguindo as instruções em Documentação do Collabora CODE . Estou usando a imagem do Docker CODE (collabora / code). Eu começo a imagem com o código abaixo, conforme explicado na documentação. Eu tenho o apache rodando sem erros, pelo menos nenhum óbvio que eu tenha visto. Eu não vasculhei os logs, apenas procurei novos ao executar uma ação na próxima nuvem. Eu tenho o aplicativo Collabore Online instalado e configure o servidor on-line Collabora em Admin para https://127.0.0.1:9980. Quando eu vou para o Arquivo e tento abrir um novo documento previamente criado, ontem, em branco .odt, aparece um erro, mostrado no bloco abaixo.

A porta 9980 está aberta. O Selinux também está ligado, mas eu gostaria de continuar. Eu tentei muitas coisas ao longo da última semana ou duas aqui e ali quando eu tinha tempo. Não me lembro de tudo o que fiz, mas sei que tentei criar um arquivo do Docker personalizado para copiar os certificados antigos usados no certificado "Vamos criptografar" do meu site. Não me lembro se, em seguida, passei a variável env correta para impedir a criação do certificado autoassinado e usar aquele no sistema de arquivos, alguém conhece as etapas para fazer isso? Eu reverti isso de volta para usar o certificado autoassinado porque muitos tutoriais disponíveis usam o certificado autoassinado sem problema. Então talvez seja minha configuração especial? Com as manipulações cert que eu tentei, eu testei contra https://127.0.0.1:8890 com curl. Eu tenho executado em erro cURL 35 Encontrado fim do arquivo, e erro cURL 60 Certificado do par foi marcado como não confiável.

Alguém sabe como eu poderia usar o meu próprio certificado de criptografia do meu site no contêiner com êxito para o serviço loolwsl em execução dentro dele? Por favor, deixe-me saber se eu esqueci de mencionar qualquer coisa! Muito obrigado pela leitura e pela sua ajuda!

khamil8686

On the webpage

Internal Server Error

The server encountered an internal error and was unable to complete your request.

Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.

More details can be found in the server log.

Technical details

    Remote Address: 167.142.215.1
    Request ID: WVOhwIY0d9yPqqbVbYLBaQAAAAI

Apache log message (same thing repeated several times)
[Thu Jun 29 07:09:25.542925 2017] [authz_core:error] [pid 23408] [client 167.142.215.1:14850] AH01630: client denied by server configuration: /var/www/nextcloud/data/.ocdata

In the nextcloud log
{"reqId":"WVOhwIY0d9yPqqbVbYLBaQAAAAI","level":3,"time":"2017-06-28T12:32:00+00:00","remoteAddr":"167.142.215.1","user":"khamil8686","app":"richdocuments","method":"GET","url":"\/nextcloud\/index.php\/apps\/richdocuments\/index?fileId=641&requesttoken=xRmG6LQ%2BYOl01txmrtMSQ1OlqGsDB81OeVyWM5JAFTg%3D%3Asl3MrI1OI7w6mY1X5IpnJgLs4C9FX4YFEBXeQ6UvInk%3D","message":"Exception: {\"Exception\":\"GuzzleHttp\\Exception\\RequestException\",\"Message\":\"cURL error 60: Peer's certificate issuer has been marked as not trusted by the user.\",\"Code\":0,\"Trace\":\"#0 \\/var\\/www\\/nextcloud\\/3rdparty\\/guzzlehttp\\/guzzle\\/src\\/RequestFsm.php(103): GuzzleHttp\\Exception\\RequestException::wrapException(Object(GuzzleHttp\\Message\\Request), Object(GuzzleHttp\\Ring\\Exception\\RingException))\n#1 \\/var\\/www\\/nextcloud\\/3rdparty\\/guzzlehttp\\/guzzle\\/src\\/RequestFsm.php(132): GuzzleHttp\\RequestFsm->__invoke(Object(GuzzleHttp\\Transaction))\n#2 \\/var\\/www\\/nextcloud\\/3rdparty\\/react\\/promise\\/src\\/FulfilledPromise.php(25): GuzzleHttp\\RequestFsm->GuzzleHttp\\{closure}(Array)\n#3 \\/var\\/www\\/nextcloud\\/3rdparty\\/guzzlehttp\\/ringphp\\/src\\/Future\\/CompletedFutureValue.php(55): React\\Promise\\FulfilledPromise->then(Object(Closure), NULL, NULL)\n#4 \\/var\\/www\\/nextcloud\\/3rdparty\\/guzzlehttp\\/guzzle\\/src\\/Message\\/FutureResponse.php(43): GuzzleHttp\\Ring\\Future\\CompletedFutureValue->then(Object(Closure), NULL, NULL)\n#5 \\/var\\/www\\/nextcloud\\/3rdparty\\/guzzlehttp\\/guzzle\\/src\\/RequestFsm.php(134): GuzzleHttp\\Message\\FutureResponse::proxy(Object(GuzzleHttp\\Ring\\Future\\CompletedFutureArray), Object(Closure))\n#6 \\/var\\/www\\/nextcloud\\/3rdparty\\/guzzlehttp\\/guzzle\\/src\\/Client.php(165): GuzzleHttp\\RequestFsm->__invoke(Object(GuzzleHttp\\Transaction))\n#7 \\/var\\/www\\/nextcloud\\/3rdparty\\/guzzlehttp\\/guzzle\\/src\\/Client.php(125): GuzzleHttp\\Client->send(Object(GuzzleHttp\\Message\\Request))\n#8 \\/var\\/www\\/nextcloud\\/lib\\/private\\/Http\\/Client\\/Client.php(138): GuzzleHttp\\Client->get('https:\\/\\/127.0.0...', Array)\n#9 \\/var\\/www\\/nextcloud\\/apps\\/richdocuments\\/lib\\/WOPI\\/DiscoveryManager.php(84): OC\\Http\\Client\\Client->get('https:\\/\\/127.0.0...')\n#10 \\/var\\/www\\/nextcloud\\/apps\\/richdocuments\\/lib\\/WOPI\\/Parser.php(41): OCA\\Richdocuments\\WOPI\\DiscoveryManager->get()\n#11 \\/var\\/www\\/nextcloud\\/apps\\/richdocuments\\/lib\\/TokenManager.php(117): OCA\\Richdocuments\\WOPI\\Parser->getUrlSrc('application\\/vnd...')\n#12 \\/var\\/www\\/nextcloud\\/apps\\/richdocuments\\/lib\\/Controller\\/DocumentController.php(108): OCA\\Richdocuments\\TokenManager->getToken(*** sensitive parameters replaced ***)\n#13 [internal function]: OCA\\Richdocuments\\Controller\\DocumentController->index('641')\n#14 \\/var\\/www\\/nextcloud\\/lib\\/private\\/AppFramework\\/Http\\/Dispatcher.php(160): call_user_func_array(Array, Array)\n#15 \\/var\\/www\\/nextcloud\\/lib\\/private\\/AppFramework\\/Http\\/Dispatcher.php(90): OC\\AppFramework\\Http\\Dispatcher->executeController(Object(OCA\\Richdocuments\\Controller\\DocumentController), 'index')\n#16 \\/var\\/www\\/nextcloud\\/lib\\/private\\/AppFramework\\/App.php(114): OC\\AppFramework\\Http\\Dispatcher->dispatch(Object(OCA\\Richdocuments\\Controller\\DocumentController), 'index')\n#17 \\/var\\/www\\/nextcloud\\/lib\\/private\\/AppFramework\\/Routing\\/RouteActionHandler.php(47): OC\\AppFramework\\App::main('OCA\\\\Richdocumen...', 'index', Object(OC\\AppFramework\\DependencyInjection\\DIContainer), Array)\n#18 [internal function]: OC\\AppFramework\\Routing\\RouteActionHandler->__invoke(Array)\n#19 \\/var\\/www\\/nextcloud\\/lib\\/private\\/Route\\/Router.php(299): call_user_func(Object(OC\\AppFramework\\Routing\\RouteActionHandler), Array)\n#20 \\/var\\/www\\/nextcloud\\/lib\\/base.php(1000): OC\\Route\\Router->match('\\/apps\\/richdocum...')\n#21 \\/var\\/www\\/nextcloud\\/index.php(40): OC::handleRequest()\n#22 {main}\",\"File\":\"\\/var\\/www\\/nextcloud\\/3rdparty\\/guzzlehttp\\/guzzle\\/src\\/Exception\\/RequestException.php\",\"Line\":51}","userAgent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko\/20100101 Firefox\/54.0","version":"12.0.0.29"}

More readable nextcloud log from UI
    /var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/RequestFsm.php - line 103: GuzzleHttp\Exception\RequestException wrapException(Object(GuzzleHttp\Message\Request), Object(GuzzleHttp\Ring\Exception\RingException))
    /var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/RequestFsm.php - line 132: GuzzleHttp\RequestFsm->__invoke(Object(GuzzleHttp\Transaction))
    /var/www/nextcloud/3rdparty/react/promise/src/FulfilledPromise.php - line 25: GuzzleHttp\RequestFsm->GuzzleHttp\{closure}(Array)
    /var/www/nextcloud/3rdparty/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php - line 55: React\Promise\FulfilledPromise->then(Object(Closure), NULL, NULL)
    /var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Message/FutureResponse.php - line 43: GuzzleHttp\Ring\Future\CompletedFutureValue->then(Object(Closure), NULL, NULL)
    /var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/RequestFsm.php - line 134: GuzzleHttp\Message\FutureResponse proxy(Object(GuzzleHttp\Ring\Future\CompletedFutureArray), Object(Closure))
    /var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php - line 165: GuzzleHttp\RequestFsm->__invoke(Object(GuzzleHttp\Transaction))
    /var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php - line 125: GuzzleHttp\Client->send(Object(GuzzleHttp\Message\Request))
    /var/www/nextcloud/lib/private/Http/Client/Client.php - line 138: GuzzleHttp\Client->get('https //127.0.0...', Array)
    /var/www/nextcloud/apps/richdocuments/lib/WOPI/DiscoveryManager.php - line 84: OC\Http\Client\Client->get('https //127.0.0...')
    /var/www/nextcloud/apps/richdocuments/lib/WOPI/Parser.php - line 41: OCA\Richdocuments\WOPI\DiscoveryManager->get()
    /var/www/nextcloud/apps/richdocuments/lib/TokenManager.php - line 117: OCA\Richdocuments\WOPI\Parser->getUrlSrc('application/vnd...')
    /var/www/nextcloud/apps/richdocuments/lib/Controller/DocumentController.php - line 108: OCA\Richdocuments\TokenManager->getToken(*** sensitive parameters replaced ***)
    [internal function] OCA\Richdocuments\Controller\DocumentController->index('641')
    /var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php - line 160: call_user_func_array(Array, Array)
    /var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php - line 90: OC\AppFramework\Http\Dispatcher->executeController(Object(OCA\Richdocuments\Controller\DocumentController), 'index')
    /var/www/nextcloud/lib/private/AppFramework/App.php - line 114: OC\AppFramework\Http\Dispatcher->dispatch(Object(OCA\Richdocuments\Controller\DocumentController), 'index')
    /var/www/nextcloud/lib/private/AppFramework/Routing/RouteActionHandler.php - line 47: OC\AppFramework\App main('OCA\Richdocumen...', 'index', Object(OC\AppFramework\DependencyInjection\DIContainer), Array)
    [internal function] OC\AppFramework\Routing\RouteActionHandler->__invoke(Array)
    /var/www/nextcloud/lib/private/Route/Router.php - line 299: call_user_func(Object(OC\AppFramework\Routing\RouteActionHandler), Array)
    /var/www/nextcloud/lib/base.php - line 1000: OC\Route\Router->match('/apps/richdocum...')
    /var/www/nextcloud/index.php - line 40: OC handleRequest()
    {main}

To run the Collabora Online CODE Docker image
docker run -t -d -p 127.0.0.1:9980:9980 \
       -e 'cert_domain=X\.com' \
       -e 'username=admin' \
       -e 'password=password' --restart always --cap-add MKNOD collabora/code

Apache Config - nextcloud.conf & collaboraonlineCODE.conf in conf.d

==> /etc/httpd/conf.d/nextcloud.conf 
  Options +FollowSymlinks
  AllowOverride All

  
    Dav off
  

  SetEnv HOME /var/www/nextcloud
  SetEnv HTTP_HOME /var/www/nextcloud



==> /etc/httpd/conf.d/collaboraonlineCODE.conf 
  ServerName collabora.X:443

  # SSL configuration, you may want to take the easy route instead and use Lets Encrypt!
  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/X-0002/cert.pem
  SSLCertificateChainFile /etc/letsencrypt/live/X.com-0002/chain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/X.com-0002/privkey.pem
  SSLProtocol             all -SSLv2 -SSLv3
  SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
  SSLHonorCipherOrder     on

  # Encoded slashes need to be allowed
  AllowEncodedSlashes NoDecode

  # Container uses a unique non-signed certificate
  SSLProxyEngine On
  SSLProxyVerify None
  SSLProxyCheckPeerCN Off
  SSLProxyCheckPeerName Off

  # keep the host
  ProxyPreserveHost On

  # static html, js, images, etc. served from loolwsd
  # loleaflet is the client part of LibreOffice Online
  ProxyPass           /loleaflet https://127.0.0.1:9980/loleaflet retry=0
  ProxyPassReverse    /loleaflet https://127.0.0.1:9980/loleaflet

  # WOPI discovery URL
  ProxyPass           /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0
  ProxyPassReverse    /hosting/discovery https://127.0.0.1:9980/hosting/discovery

  # Main websocket
  ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon

  # Admin Console websocket
  ProxyPass   /lool/adminws wss://127.0.0.1:9980/lool/adminws

  # Download as, Fullscreen presentation and Image upload operations
  ProxyPass           /lool https://127.0.0.1:9980/lool
  ProxyPassReverse    /lool https://127.0.0.1:9980/lool

    
por Kyle H 28.06.2017 / 15:23

2 respostas

0

Um aviso à frente: Você definitivamente NÃO deve usar a senha password para sua ferramenta de administração. Mesmo que você pretenda restringir o acesso de alguma forma, é muito fácil cometer um erro ali e convidar pessoas maliciosas.

O certificado do contêiner docker exibido como não confiável é o comportamento esperado . No entanto, esse certificado gerado automaticamente não importa se você encaminha sua instalação de CÓDIGO via apache também.

Por razões além¹⁾ do simples "Eu não quero me importar com certificados", a configuração recomendada do CÓDIGO, por design, evita problemas de certificado inteiramente, pedindo que você configure o CÓDIGO em um domínio diferente (com certificado potencialmente separado) que a sua instalação do nextcloud.

Tenha seu nextcloud em um (sub) domínio, como www.example.com, e configure uma entrada adicional em sua configuração do apache, como code.example.com, que encaminha solicitações para 127.0.0.1:9980 (ignorando o certificado, confiando que nenhum usuário mal-intencionado pode configurar um serviço diferente nessa combinação de porta e dispositivo).

Siga as diretrizes oficiais e coloque a URL https://127.0.0.1:9980 na configuração do apache para code.example.com em (algo como) /etc/httpd/conf.d/collaboraonlineCODE.conf e o domínio público https://code.example.com do seu CODE instalação na configuração nextcloud em (somehting like) https://example.com/settings/admin . Isso garante que você possa acessar o CODE da mesma forma que o nextcloud - em qualquer computador, não apenas aquele que está executando a instalação.

¹⁾ Dessa forma, o contêiner do docker não contém o certificado, o que é uma escolha bastante sensata, considerando que o CODE não é de maneira alguma endurecido pela segurança.

    
por 29.06.2017 / 03:09
0

Não use seu próprio certificado com nextcloud. O auto-assinado especial é bom. Eu ainda não o tenho completamente em funcionamento e funcionando, mas esse erro é passado.

    
por 02.07.2017 / 13:58