Projet

Général

Profil

Tâche #9142

Scénario #10816: Etude de l'intégration des certificats wildcard dans les services EOLE

integration certificat wildcard pour sso

Ajouté par lacambra fabrice il y a plus de 9 ans. Mis à jour il y a presque 9 ans.

Statut:
Résolu
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
06/10/2014
Echéance:
% réalisé:

100%

Temps estimé:
10.00 h
Temps passé:
Restant à faire (heures):
0.15

Description

Bonjour,

Serait il possible d'integrer la prise en compte des certificats type *..ac-versailles.fr sur le sso
Nous avons fait les tests avec Bruno et cela à l'air de fonctionner en modifiant le fichier /usr/share/sso/cas_resources.py
Merci d'avance

N.B : le test effectué consiste à modifier le test dans eole-sso pour accepter un établissement particulier (valide que le problème vient bien de la vérification du nom d'hôte par rapport au certificat).

* éditer le fichier /usr/share/sso/cas_resources.py

    dans la fonction proxy_cert_ok

    remplacer:

         if service_host not in ctx.peer_cert_data['subject']:

    par:

        if service_host not in ctx.peer_cert_data['subject'] and service_host != "<nom_host>":

    (par exemple, <nom_host> = ecole-0951610j.ac-versailles.fr)

* service eole-sso restart

check_certs-UnicodeEncodeError.patch Voir (953 octets) Benjamin Bohard, 25/03/2015 13:54

Révisions associées

Révision 1715baf4 (diff)
Ajouté par Lionel Morin il y a environ 9 ans

Implémentation des wildcards pour les certificats SSO (ref #9142 @4h)

Révision d7700a29 (diff)
Ajouté par Bruno Boiget il y a presque 9 ans

check_certs.py : gestion des certificats wildcard

ref #9142 @30m

Révision 4ad68358 (diff)
Ajouté par Bruno Boiget il y a presque 9 ans

Correction d'une erreur introduite dans check_certs.py

ref #9142 @15m

Historique

#1 Mis à jour par Benjamin Bohard il y a environ 9 ans

  • Distribution changé de EOLE 2.3 à Toutes

Il y a quelques préconisations dans ce domaines on dirait :
https://tools.ietf.org/html/rfc6125#section-6.4.3

En résumé :
  1. on ne devrait pas valider un certificat si le wildcard et entre 2 points (foo.*.baz),
  2. on ne devrait valider qu'un niveau : le wildcard ne devrait pas se substituer à plus d'un niveau (*.baz valide bar.baz mais ni foo.bar.baz ni baz),
  3. le wildcard peut être à l'intérieur d'une étiquette (ba*, *oo, b*r) mais ne devrait pas se trouver dans une étiquette de type A ou U d'un nom de domaine internationalisé.

#2 Mis à jour par Bruno Boiget il y a environ 9 ans

  • Tracker changé de Anomalie à Tâche
  • Statut changé de Nouveau à En cours
  • Assigné à mis à Lionel Morin
  • Version cible mis à sprint 2015 8-10
  • Temps estimé mis à 1.50 h
  • Tâche parente mis à #8894
  • Restant à faire (heures) mis à 0.75

#3 Mis à jour par Bruno Boiget il y a environ 9 ans

  • Temps estimé changé de 1.50 h à 3.00 h

#4 Mis à jour par Bruno Boiget il y a environ 9 ans

Ne fonctionne pas correctement en l'état actuel : les applications PHP utilisant phpCAS ne semblent pas accepter le certificat avec wildcard

On peut laisser la fonction modifiée dans EoleSSO, elle ne semble pas poser problème (tout fonctionne en remettant un certificat avec le nom de machine)

EC4D .=> phpCAS::setCasServerCACert('/etc/ssl/certs/ca.crt') [class.casAuthDriver.php:153]
EC4D .<= ''
EC4D .=> phpCAS::setFixedServiceURL('https://scribe.ac-test.fr/ajaxplorer/') [class.casAuthDriver.php:161]
EC4D .<= ''
EC4D .=> phpCAS::isAuthenticated() [class.casAuthDriver.php:164]
EC4D .|    => CAS_Client::isAuthenticated() [CAS.php:1151]
EC4D .|    |    => CAS_Client::_wasPreviouslyAuthenticated() [Client.php:1189]
EC4D .|    |    |    neither user nor PGT found [Client.php:1355]
EC4D .|    |    <= false
EC4D .|    |    CAS 2.0 ticket `ST-scribe.ac-test.fr-db4b6ce3ce0b12e2e2cda51960f6381b34ecbf205dc2472b2bed0a7f' is present [Client.php:1223]
EC4D .|    |    => CAS_Client::validateCAS20('', NULL, NULL) [Client.php:1224]
EC4D .|    |    |     [Client.php:2747]
EC4D .|    |    |    => CAS_Client::getServerServiceValidateURL() [Client.php:2753]
EC4D .|    |    |    |    => CAS_Client::getURL() [Client.php:417]
EC4D .|    |    |    |    <= 'https://scribe.ac-test.fr/ajaxplorer/'
EC4D .|    |    |    <= 'https://scribe.ac-test.fr:8443/serviceValidate?service=https%3A%2F%2Fscribe.ac-test.fr%2Fajaxplorer%2F'
EC4D .|    |    |    => CAS_Client::_readURL('https://scribe.ac-test.fr:8443/serviceValidate?service=https%3A%2F%2Fscribe.ac-test.fr%2Fajaxplorer%2F&ticket=ST-scribe.ac-test.fr-db4b6ce3ce0b12e2e2cda51960f6381b34ecbf205dc2472b2bed0a7f&pgtUrl=https%3A%2F%2Fscribe.ac-test.fr%2Fajaxplorer%2F', NULL, NULL, NULL) [Client.php:2762]
EC4D .|    |    |    |    => CAS_Request_CurlRequest::sendRequest() [AbstractRequest.php:220]
EC4D .|    |    |    |    |    CURL: Set CURLOPT_CAINFO /etc/ssl/certs/ca.crt [CurlRequest.php:127]
EC4D .|    |    |    |    |    curl_exec() failed [CurlRequest.php:77]
EC4D .|    |    |    |    <= false
EC4D .|    |    |    <= false
EC4D .|    |    |    could not open URL 'https://scribe.ac-test.fr:8443/serviceValidate?service=https%3A%2F%2Fscribe.ac-test.fr%2Fajaxplorer%2F&ticket=ST-scribe.ac-test.fr-db4b6ce3ce0b12e2e2cda51960f6381b34ecbf205dc2472b2bed0a7f&pgtUrl=https%3A%2F%2Fscribe.ac-test.fr%2Fajaxplorer%2F' to validate (CURL error #51: SSL peer certificate or SSH remote key was not OK) [Client.php:2763]
EC4D .|    |    |    => CAS_AuthenticationException::__construct(EoleCASClient, 'Ticket not validated', 'https://scribe.ac-test.fr:8443/serviceValidate?service=https%3A%2F%2Fscribe.ac-test.fr%2Fajaxplorer%2F&ticket=ST-scribe.ac-test.fr-db4b6ce3ce0b12e2e2cda51960f6381b34ecbf205dc2472b2bed0a7f&pgtUrl=https%3A%2F%2Fscribe.ac-test.fr%2Fajaxplorer%2F', true) [Client.php:2767]
EC4D .|    |    |    |    => CAS_Client::getURL() [AuthenticationException.php:76]
EC4D .|    |    |    |    <= 'https://scribe.ac-test.fr/ajaxplorer/'
EC4D .|    |    |    |    CAS URL: https://scribe.ac-test.fr:8443/serviceValidate?service=https%3A%2F%2Fscribe.ac-test.fr%2Fajaxplorer%2F&ticket=ST-scribe.ac-test.fr-db4b6ce3ce0b12e2e2cda51960f6381b34ecbf205dc2472b2bed0a7f&pgtUrl=https%3A%2F%2Fscribe.ac-test.fr%2Fajaxplorer%2F [AuthenticationException.php:79]
EC4D .|    |    |    |    Authentication failure: Ticket not validated [AuthenticationException.php:80]
EC4D .|    |    |    |    Reason: no response from the CAS server [AuthenticationException.php:82]
EC4D .|    |    |    |    exit()

#5 Mis à jour par Bruno Boiget il y a environ 9 ans

  • Description mis à jour (diff)

#6 Mis à jour par Joël Cuissinat il y a environ 9 ans

  • Assigné à Lionel Morin supprimé
  • Temps estimé changé de 3.00 h à 6.00 h
  • Tâche parente changé de #8894 à #10816

#7 Mis à jour par Joël Cuissinat il y a environ 9 ans

  • Temps estimé changé de 6.00 h à 10.00 h
  • Restant à faire (heures) changé de 0.75 à 5.0

#8 Mis à jour par Benjamin Bohard il y a environ 9 ans

Le même problème n'est-il pas présent dans la fonction run_check() (fichier check_cert.py) ?

        for addr in test_addrs:
            if not addr in client_ctx.peer_cert_data['subject']:
                addr_err.append(addr)
                res_verify = False
    if len(addr_err) > 0:
        print_orange(missing_msg % (config.CERTFILE, ", ".join(addr_err)))
        print warn_msg
        if config.CERTFILE == default_cert:
            print default_msg

En passant, il y a une erreur de type UnicodeDecodeError :

File "./check_certs.py", line 84, in run_check
    print_orange(missing_msg % (config.CERTFILE, ", ".join([str(addr) for addr in addr_err])))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 49: ordinal not in range(128)

#10 Mis à jour par Daniel Dehennin il y a presque 9 ans

  • Assigné à mis à Bruno Boiget

#11 Mis à jour par Daniel Dehennin il y a presque 9 ans

  • Statut changé de En cours à Résolu
  • % réalisé changé de 0 à 100
  • Restant à faire (heures) changé de 5.0 à 0.15

Le commit a été intégré à la branche 2.3 et vient seulement d’être empaqueté.

Paquet candidat 2.3-eole108~5.gbpdedf10

Formats disponibles : Atom PDF