Skip to content
GitLab
    • Explore Projects Groups Topics Snippets
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • H HaTaTA
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar

En prévision de l'arrivée de la forge institutionnelle INRAE, nous vous invitons à créer vos nouveaux projets sur la forge MIA.

  • Dorchies David
  • HaTaTA
  • Issues
  • #5
Something went wrong while setting issue due date.
Closed
Open
Issue created 3 years ago by Grelot Frederic@frederic.grelot:swimmer_tone5:Developer
  • New related issue

  • New related issue

Manage error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small

Closed

Manage error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small

L'appel de la fonction login("id", "pwd") rnvoie l'erreur suivante sous ubuntu 20.04

Erreur dans curl::curl_fetch_memory(url, handle = handle) : error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small

Selon https://stackoverflow.com/questions/63235805/curl-openssl-error-141a318a-tls-process-ske-dhedh-key-too-small la solution est de fixer le paramètre "CipherString" de "/etc/ssl/openssl.cnf" à la valeur "DEFAULT:@SECLEVEL=1".

Pour ne le faire que de façon temporaire, au sein de l'appel de la librairie, il faut jouer sur les façons de fixer les options dans libcurl. Il s'agit de fixer l'option "CURLOPT_SSL_CIPHER_LIST" à "DEFAULT@SECLEVEL=1".

Cette option est visible avec :

  • curl::curl_symbols("CURLOPT_SSL_CIPHER_LIST"), mais je n'ai pas compris comment la changer ni le sens de la valeur retournée.
  • avec httr::httr_options()[httr::httr_options()[["libcurl"]] == "CURLOPT_SSL_CIPHER_LIST",], qui montre qu'elle s'appelle "ssl_cipher_list" pour httr, mais je n'ai pas encore compris non plus comment la changer.
Edited 3 years ago

    Tasks

    0

    No tasks are currently assigned. Use tasks to break down this issue into smaller parts.

    Linked items
    0

    Link issues together to show that they're related. Learn more.

    Related merge requests

    1

    When this merge request is accepted, this issue will be closed automatically.

    • Resolve "Manage error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small"
      !3
      Assigned to Grelot Frederic

    Activity


    • Grelot Frederic changed the description 3 years ago

      changed the description

    • Grelot Frederic created merge request !3 (merged) to address this issue 3 years ago

      created merge request !3 (merged) to address this issue

    • Grelot Frederic mentioned in merge request !3 (merged) 3 years ago

      mentioned in merge request !3 (merged)

    • Dorchies David
      Dorchies David @david.dorchies · 3 years ago
      Owner

      I faced a big dependency issue on Debian: the libxml2 package was in version 2.99 on deb9 and 2.94 on deb10. I have upgraded my distro from deb9 to deb10 some weeks ago and this package has not been upgraded because its version number is upper on the former distro... I solved this issue by forcing the installation of the version 2.94 of libxml2...

      But then xml2 R package didn't want to be installed as well... It was solved with the instruction: install.packages("xml2", INSTALL_opts = '--no-lock').

      Then I was able to try:

      > library(hatata)
      Loading required package: magrittr
      > session <- login("ddorchies", "**********")

      And it works on Debian 10 / Windows 10 WSL1

      I'll try on another distribution.

      Edited 3 years ago by Dorchies David
    • Dorchies David
      Dorchies David @david.dorchies · 3 years ago
      Owner

      I'm able to reproduce this error on Debian 10 virtual machine:

      > library(hatata)
      Le chargement a nécessité le package : magrittr
      > session <- login("ddorchies", "*********")
      Error in curl::curl_fetch_memory(url, handle = handle) :
      error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small
    • Dorchies David
      Dorchies David @david.dorchies · 3 years ago
      Owner

      Minimal example:

      > library(rvest)
      > s <- session("https://temps-activites.inrae.fr/fr/")
      Error in curl::curl_fetch_memory(url, handle = handle) :
      error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small
    • Dorchies David
      Dorchies David @david.dorchies · 3 years ago
      Owner

      I managed to overpass this error message with the following:

      • Copy the modified openssl.conf file from https://askubuntu.com/a/1265095 (in my case I copied the file /usr/lib/ssl/openssl.cnf to my home and modified the line CipherString = DEFAULT@SECLEVEL=2 to CipherString = DEFAULT@SECLEVEL=1)
      • under R, write the instruction: Sys.setenv(OPENSSL_CONF = "location_of_my_modified_openssl.cnf")

      But now I get a strange warning:

      rs <- session("https://temps-activites.inrae.fr/fr/")
      Warning message:
      In strsplit(rawToChar(raw), "\r?\n") :
      la chaîne de caractères entrée 1 est incorrecte dans cet environnement linguistique

      And when I try the following instruction from the login function:

      > rf <- rvest::html_form(rs)[[1]]
      Erreur : Page doesn't appear to be html.                                                                                Run `rlang::last_error()` to see where the error occurred.

      Conclusion: it's possible to provide a modified openssl.cnf in the package and define the environment variable OPENSSL_CONF at the beginning of the login function. That should solve the security issue with openssl. Now, I dont know if the following issues are related to this first one or not...

    • Dorchies David
      Dorchies David @david.dorchies · 3 years ago
      Owner

      Getting better and better... (Thanks to https://www.programmersought.com/article/5158624553/)

      > Sys.setenv(OPENSSL_CONF = "/home/aubes/openssl.cnf")
      > library(rvest)
      > Sys.setlocale('LC_ALL','C')
      [1] "LC_CTYPE=C;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=fr_FR.UTF-8;LC_PAPER=fr_FR.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=fr_FR.UTF-8;LC_IDENTIFICATION=C" > rs <- session("https://temps-activites.inrae.fr/fr/")
      > library(hatata)
      Le chargement a n?cessit? le package : magrittr
      > session <- login("ddorchies", "**********")
      > session <- jump_to_pointage(session, date = "2021-06-01")
      Navigating to /fr/ostoken/request/oscontrol
      Navigating to index.php?controller=Pointage/Calendar&action=show&user_id=4242
      > fdt_isValidable(session, "2021-06-01")
      [1] FALSE

      So everything seems to be fine now! I try to implement that in the package.

      Edited 3 years ago by Dorchies David
    • Dorchies David mentioned in commit c8eac2ba 3 years ago

      mentioned in commit c8eac2ba

    • Dorchies David mentioned in commit 0fdb39a1 3 years ago

      mentioned in commit 0fdb39a1

    • Dorchies David closed via merge request !3 (merged) 3 years ago

      closed via merge request !3 (merged)

      • Dorchies David
        Dorchies David @david.dorchies · 3 years ago
        Owner

        @frederic.grelot a écrit:

        Dans ta solution, je crois que je ne suis pas en phase avec le fait que tu changes un variable d'environnement de façon globale, même après que la fonction soit terminée. Je pense qu'il faudrait, a minima, restaurer la variable d'environnement dans sa valeur de défault avec un un appel on.exit()

        Je peux le faire facilement, mais je ne trouve pas comment réouvrir l'issue que tu as fermée. À moins qu'on ne puisse plus ?

        Sinon, je trouve ça très bourrin, tu ne penses pas que nous pouvons juste changer une valeur du paramètre qui nous intéresse ? Si jamais on l'utilise chez quelqu'un qui n'a pas les mêmes valeurs dans sa fichier de conf de opensssl que ce que tu as pris, nous risquons les effets de bord...

      • Dorchies David
        Dorchies David @david.dorchies · 3 years ago
        Owner

        il faudrait, a minima, restaurer la variable d'environnement dans sa valeur de défault avec un un appel on.exit()

        Oui, on peut affiner cette partie. Il est possible que cette bidouille ne soit nécessaire qu'au moment de la connexion au SSO et que ça ne concerne donc que la function login

        Sinon, je trouve ça très bourrin, tu ne penses pas que nous pouvons juste changer une valeur du paramètre qui nous intéresse ? Si jamais on l'utilise chez quelqu'un qui n'a pas les mêmes valeurs dans sa fichier de conf de opensssl que ce que tu as pris, nous risquons les effets de bord...

        Je suppose que non car ça ne change le comportement du SSL que dans cette utilisation précise. Et c'est une configuration qui fonctionne dans ce cas précis. Il n'y a pas d'effets de bord sur le système en dehors de la session R en cours. Si on circonscrit le changement de cette variable d'environnement à la fonction login, on supprime aussi le effets de bords dans la session R en cours.

      • Grelot Frederic
        Grelot Frederic @frederic.grelot · 3 years ago
        Author Developer

        Ah... J'ai compris pourquoi je n'arrivais pas à te répondre, je peux accéder à la discussion sans être loggué, mais pas y répondre, forcément...

        OK. À la limite, on peut aussi ajouter la partie nécessaire du fichier conf de base dans un fichier temporaire basé sur celui présent sur la bécane.

        Je vais déjà faire le on.exit.

      • Please register or sign in to reply
    Please register or sign in to reply
    0 Assignees
    None
    Assign to
    Labels
    0
    None
    0
    None
      Assign labels
    • Manage project labels

    Milestone
    No milestone
    None
    Due date
    None
    None
    None
    Time tracking
    No estimate or time spent
    Confidentiality
    Not confidential
    Not confidential

    You are going to turn on confidentiality. Only project members with at least the Reporter role, the author, and assignees can view or be notified about this issue.

    Lock issue
    Unlocked
    0
    0 Participants
    Reference:

    Menu

    Explore Projects Groups Topics Snippets