Project

General

Profile

Tâche #9142

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

integration certificat wildcard pour sso

Added by lacambra fabrice almost 6 years ago. Updated over 5 years ago.

Status:
Résolu
Priority:
Normal
Assigned To:
Target version:
-
Start date:
10/06/2014
Due date:
% Done:

100%

Estimated time:
10.00 h
Spent time:
Remaining (hours):
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 View (953 Bytes) Benjamin Bohard, 03/25/2015 01:54 PM

Associated revisions

Revision 1715baf4 (diff)
Added by Lionel Morin over 5 years ago

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

Revision d7700a29 (diff)
Added by Bruno Boiget over 5 years ago

check_certs.py : gestion des certificats wildcard

ref #9142 @30m

Revision 4ad68358 (diff)
Added by Bruno Boiget over 5 years ago

Correction d'une erreur introduite dans check_certs.py

ref #9142 @15m

History

#1 Updated by Benjamin Bohard over 5 years ago

  • Distribution changed from EOLE 2.3 to 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 Updated by Bruno Boiget over 5 years ago

  • Tracker changed from Anomalie to Tâche
  • Status changed from Nouveau to En cours
  • Assigned To set to Lionel Morin
  • Target version set to sprint 2015 8-10
  • Estimated time set to 1.50 h
  • Parent task set to #8894
  • Remaining (hours) set to 0.75

#3 Updated by Bruno Boiget over 5 years ago

  • Estimated time changed from 1.50 h to 3.00 h

#4 Updated by Bruno Boiget over 5 years ago

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 Updated by Bruno Boiget over 5 years ago

  • Description updated (diff)

#6 Updated by Joël Cuissinat over 5 years ago

  • Assigned To deleted (Lionel Morin)
  • Estimated time changed from 3.00 h to 6.00 h
  • Parent task changed from #8894 to #10816

#7 Updated by Joël Cuissinat over 5 years ago

  • Estimated time changed from 6.00 h to 10.00 h
  • Remaining (hours) changed from 0.75 to 5.0

#8 Updated by Benjamin Bohard over 5 years ago

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 Updated by Daniel Dehennin over 5 years ago

  • Assigned To set to Bruno Boiget

#11 Updated by Daniel Dehennin over 5 years ago

  • Status changed from En cours to Résolu
  • % Done changed from 0 to 100
  • Remaining (hours) changed from 5.0 to 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

Also available in: Atom PDF