[SOLUCIONADO] Integración Mapuche con Arai

Hola, tenemos instalado y funcionando Huarpe + Arai-Usuarios, el problema aparece cuando intento acceder a Mapuche desde Huarpe con un usuario de mapuche, previamente dado de alta en Arai-Usuarios. Nos abre una pestaña con la dirección de mapuche http://170.210.156.60/siu/mapuche/default-sp , miramos en el log de simplesaml y nos arroja lo siguiente:


 Session: Valid session found with 'usuarios_arai'.
Jan 31 11:18:57 simplesamlphp INFO [9fca30bf10] SAML2.0 - IdP.SSOService: Accessing SAML 2.0 IdP endpoint SSOService
Jan 31 11:18:57 simplesamlphp DEBUG [9fca30bf10] Received message:
Jan 31 11:18:57 simplesamlphp DEBUG [9fca30bf10] <samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="ONELOGIN_f43d24118c07db80a17f6f321$
Jan 31 11:18:57 simplesamlphp DEBUG [9fca30bf10]   <saml:Issuer>http://170.210.156.60/siu/mapuche/default-sp</saml:Issuer>
Jan 31 11:18:57 simplesamlphp DEBUG [9fca30bf10]   <samlp:NameIDPolicy Format="uid" AllowCreate="true"/>
Jan 31 11:18:57 simplesamlphp DEBUG [9fca30bf10]   <samlp:RequestedAuthnContext Comparison="exact">
Jan 31 11:18:57 simplesamlphp DEBUG [9fca30bf10]     <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
Jan 31 11:18:57 simplesamlphp DEBUG [9fca30bf10]   </samlp:RequestedAuthnContext>
Jan 31 11:18:57 simplesamlphp DEBUG [9fca30bf10] </samlp:AuthnRequest>
Jan 31 11:18:57 simplesamlphp ERROR [9fca30bf10] SimpleSAML_Error_MetadataNotFound: METADATANOTFOUND('%ENTITYID%' => '\'http://170.210.156.60/siu/mapuche/default-sp\'')
Jan 31 11:18:57 simplesamlphp ERROR [9fca30bf10] Backtrace:
Jan 31 11:18:57 simplesamlphp ERROR [9fca30bf10] 3 /var/www/html/arai-usuarios/vendor/simplesamlphp/simplesamlphp/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php:305 (SimpleSAML_Metadata_MetaDataStorageHand$
Jan 31 11:18:57 simplesamlphp ERROR [9fca30bf10] 2 /var/www/html/arai-usuarios/vendor/simplesamlphp/simplesamlphp/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php:325 (SimpleSAML_Metadata_MetaDataStorageHand$
Jan 31 11:18:57 simplesamlphp ERROR [9fca30bf10] 1 /var/www/html/arai-usuarios/vendor/simplesamlphp/simplesamlphp/modules/saml/lib/IdP/SAML2.php:303 (sspmod_saml_IdP_SAML2::receiveAuthnRequest)
Jan 31 11:18:57 simplesamlphp ERROR [9fca30bf10] 0 /var/www/html/arai-usuarios/vendor/simplesamlphp/simplesamlphp/www/saml2/idp/SSOService.php:19 (N/A)
Jan 31 11:18:57 simplesamlphp ERROR [9fca30bf10] Error report with id eb67ccb3 generated.
Jan 31 11:18:57 simplesamlphp DEBUG [9fca30bf10] Template: Reading [/var/www/html/arai-usuarios/vendor/simplesamlphp/simplesamlphp/modules/arai/dictionaries/arai]
Jan 31 11:18:57 simplesamlphp DEBUG [9fca30bf10] Template: Reading [/var/www/html/arai-usuarios/vendor/simplesamlphp/simplesamlphp/dictionaries/errors]


La versión de mapuche que estamos usando es la 3.4.0.
Pego el contenido de nuestro archivo de configuración de apache para mapuche:


 Alias /siu/mapuche_toba "/usr/local/siu/mapuche/aplicacion/vendor/siu-toba/framework/www"
    <Directory "/usr/local/siu/mapuche/aplicacion/vendor/siu-toba/framework/www/">
                SetEnv TOBA_DIR         "/usr/local/siu/mapuche/aplicacion/vendor/siu-toba/framework"
        Options MultiViews
        AllowOverride None
        <IfModule !mod_authz_core.c>
                Order allow,deny
                Allow from all
        </IfModule>
        <IfModule mod_authz_core.c>
                Require all granted
        </IfModule>
    </Directory>

        #Proyecto: toba_usuarios
        Alias /siu/mapuche_toba_usuarios "/usr/local/siu/mapuche/aplicacion/vendor/siu-toba/framework/proyectos/toba_usuarios/www"
        <Directory "/usr/local/siu/mapuche/aplicacion/vendor/siu-toba/framework/proyectos/toba_usuarios/www/">
                DirectoryIndex aplicacion.php
                Options MultiViews
                AllowOverride None
                <IfModule !mod_authz_core.c>
                            Order allow,deny
                            Allow from all
                </IfModule>
                <IfModule mod_authz_core.c>
                            Require all granted
                </IfModule>
                SetEnv TOBA_DIR                 "/usr/local/siu/mapuche/aplicacion/vendor/siu-toba/framework"
                SetEnv TOBA_PROYECTO    "toba_usuarios"
                SetEnv TOBA_INSTANCIA   "produccion"
                SetEnv TOBA_INSTALACION_DIR "/usr/local/siu/mapuche/instalacion"

        #API REST
                RewriteEngine On
                RewriteBase /siu/mapuche_toba_usuarios
                Options FollowSymLinks SymLinksIfOwnerMatch
                RewriteRule ^rest/(.*)$ rest.php/$1 [PT,L,QSA]
                RewriteRule ^rest$      rest.php/   [PT,L,QSA]
                SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
        </Directory>

    #Proyecto: mapuche
        Alias /siu/mapuche "/usr/local/siu/mapuche/aplicacion/www"
        <Directory "/usr/local/siu/mapuche/aplicacion/www/">
                DirectoryIndex aplicacion.php
                Options MultiViews
                AllowOverride None
                <IfModule !mod_authz_core.c>
                            Order allow,deny
                            Allow from all
                </IfModule>
                <IfModule mod_authz_core.c>
                            Require all granted
                </IfModule>
                SetEnv TOBA_DIR                 "/usr/local/siu/mapuche/aplicacion/vendor/siu-toba/framework"
                SetEnv TOBA_PROYECTO    "mapuche"
                SetEnv TOBA_INSTANCIA   "produccion"
                SetEnv TOBA_INSTALACION_DIR "/usr/local/siu/mapuche/instalacion"

        #API REST
                RewriteEngine On
                RewriteBase /siu/mapuche
                Options FollowSymLinks SymLinksIfOwnerMatch
                RewriteRule ^rest/(.*)$ rest.php/$1 [PT,L,QSA]
                RewriteRule ^rest$      rest.php/   [PT,L,QSA]
                SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
        </Directory>


El contenido del archivo /usr/local/siu/mapuche/instalacion/i__produccion/p__toba_usuarios/rest/rest_arai_usuarios/cliente.ini es el siguiente:


[conexion]
to = "https://arai-usuarios.uncaus.edu.ar/gestion/rest/"
auth_tipo = "ssl"
cert_file = "/home/administrador/saml/certificado.crt"
key_file = "/home/administrador/saml/certificado.pem"
ca_cert = "/home/administrador/saml/certificado.crt"

¿Que certificados tendría que poner en el archivo cliente.ini, el firmado por nosotros o el de letsencrypt ?
¿Hay alguna guía que podamos seguir para realizar la sincronización mapuche con Arai - Huarpe?

Muchas gracias por su tiempo.

Hola Leandro, disculpas por la demora, acabo de volver de vacaciones. A lo que nos toca:

Primero que nada, una guía o ejemplo de configuración general de la plataforma. Para que puedan corroborar si estan en el camino adecuado.

Esto es el primer indicio que veo. Cuando responde METADATANOTFOUND es que la aplicación o SP (en este caso Mapuche), no está registrada correctamente en el IDP de Araí (al menos no con la url como indica). Lo que deben hacer es asegurarse de que esta sea la url de dicha aplicación y además, verificar que esté asi configurado en el archivo /ruta/de/instalacion/arai-usuarios/config/idp.yml, similar a esto:


idp:
...
    service_provider:
         registry:
            'http://ip-mapuche/alias-mapuche/default-sp':
                AssertionConsumerService: 'http://ip-mapuche/alias-mapuche/?acs'
                SingleLogoutService: 'http://ip-mapuche/alias-mapuche/?sls'
                appUniqueId: siu-mapuche_x.siu-mapuche


También esta configuración está para ver/editar en el ABM de aplicaciones de Arai-Usuarios (ese es el link que el usuario clickea desde el menú de huarpe por ej). Copiá el contenido y vemos.

En el cliente.ini, los certificados son los que uds deben crear para “SSL Client”. No sirven los de letsencrypt.

Espero haber sido de ayuda. Saludos!

Hola Sergio, no estamos dando en la tecla con la configuración de los certificados tanto en huarpe, idp, arai-usuarios y mapuche.
Tenemos configurado huarpe que sería el cliente de la api almacenada en Mapuche en el archivo de configuración parameters.yml ubicado en /var/www/html/huarpe-core/app/config/ de la siguiente forma:


parameters:
    portal_url_base: 'https://huarpe.uncaus.edu.ar'
    portal_url_port: 443
    locale: es
    secret: 42n1Ac2gJfmBQwTxYxuUT8eoG70PVw
    api_client_cert: /etc/ssl/certs/saml/certificado.crt
    api_client_cert_key: /etc/ssl/certs/saml/certificado.pem
    trusted_proxies: null
    session_name: huarpe
    session_expire: 3600
    session_handler: session.handler.native_file
    session_memcached_host: null
    session_memcached_port: null
    log_handler: file
    log_level: DEBUG
    logo_file: logouncaus.png
    nombre_institucion: UNCAUS
    idp.uid_attribute: uniqueIdentifier
    idp.entity_id: 'https://idp.arai-usuarios.uncaus.edu.ar/idp/saml2/idp/metadata.php'
    idp.url_sso: 'https://idp.arai-usuarios.uncaus.edu.ar/idp/saml2/idp/SSOService.php'
    idp.url_sls: 'https://idp.arai-usuarios.uncaus.edu.ar/idp/saml2/idp/SingleLogoutService.php'
    idp.cert_data: "-----BEGIN CERTIFICATE-----\nMIIEUTCCAzmgAwIBAgIJANY9I6k1e2F9MA0GCSqGSIb3DQEBCwUAMIG+MQswCQYD\nVQQGEwJBUjEOMAwGA1UECAwFQ2hhY28xJjAkBgNVBAcMHVByZXNpZGVuY2lhIFJv\ncXVlIFNhZW56IFBl$
    sp.entity_id: 'https://huarpe.uncaus.edu.ar/saml/metadata'
    sp.url_acs: 'https://huarpe.uncaus.edu.ar/saml/acs'
    sp.url_sls: 'https://huarpe.uncaus.edu.ar/saml/logout'
    siu.arai_usuarios.api.client.defaults: { cert: /etc/ssl/certs/saml/certificado.crt, ssl_key: /etc/ssl/certs/saml/certificado.pem, base_uri: 'https://arai-usuarios.uncaus.edu.ar/gestion/rest/' }
    mapuche.api.client.defaults: { cert: /etc/ssl/certs/saml/certificado.crt, ssl_key: /etc/ssl/certs/saml/certificado.pem, base_uri: 'https://170.210.156.60/siu/mapuche/rest/' }


Los certificados que figuran en api_client_cert: /etc/ssl/certs/saml/certificado.crt y api_client_cert_key: /etc/ssl/certs/saml/certificado.pem deberían ser SSL Client ?, y en el caso que así sea, al generar el CA, este lo debo copiar en /usr/share/ca-certificates/mozilla ?, siempre en la máquina donde está instalado huarpe. Ésta configuración es usada por el servicio simplesaml que conecta con el servicio api/rest de mapuche?.
Copio los mensajes de logs de apache para huarpe al momento de seleccionar la opción de Recibos de Sueldo, seguido me arroja el error 500.


[Wed Feb 21 11:18:16.374933 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:16] security.DEBUG: Read existing security token from the session. {"key":"_security_app"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:16.375132 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:16] security.DEBUG: User was reloaded from a user provider. {"username":"facagro","provider":"CoreBundle\\\\Security\\\\User\\\\SimpleSamlUserProvider"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:16.403985 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:16] security.DEBUG: Stored the security token in the session. {"key":"_security_app"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:18.536285 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:18] request.INFO: Matched route "homepage". {"route":"homepage","route_parameters":{"_controller":"CoreBundle\\\\Controller\\\\CoreController::indexAction","_route":"homepage"},"request_uri":"https://huarpe.uncaus.edu.ar/?_pjax=%23pjax-container","method":"GET"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:18.539776 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:18] security.DEBUG: Read existing security token from the session. {"key":"_security_app"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:18.539974 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:18] security.DEBUG: User was reloaded from a user provider. {"username":"facagro","provider":"CoreBundle\\\\Security\\\\User\\\\SimpleSamlUserProvider"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:18.581620 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:18] security.DEBUG: Stored the security token in the session. {"key":"_security_app"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:18.603052 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:18] request.INFO: Matched route "bloque_render". {"route":"bloque_render","route_parameters":{"_controller":"CoreBundle\\\\Controller\\\\BloqueController::renderBloqueAction","zona":"principal","bloqueId":"siu.pantalla_inicial.bloque","_route":"bloque_render"},"request_uri":"https://huarpe.uncaus.edu.ar/bloque/principal/siu.pantalla_inicial.bloque","method":"GET"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:18.606440 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:18] security.DEBUG: Read existing security token from the session. {"key":"_security_app"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:18.606637 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:18] security.DEBUG: User was reloaded from a user provider. {"username":"facagro","provider":"CoreBundle\\\\Security\\\\User\\\\SimpleSamlUserProvider"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:18.634562 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:18] security.DEBUG: Stored the security token in the session. {"key":"_security_app"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:21.275140 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:21] request.INFO: Matched route "mapuche_agente_familiares". {"route":"mapuche_agente_familiares","route_parameters":{"_controller":"SIU\\\\MapucheBundle\\\\Controller\\\\MapucheController::agenteFamiliaresAction","_route":"mapuche_agente_familiares"},"request_uri":"https://huarpe.uncaus.edu.ar/mapuche/agente/familiares","method":"GET"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:21.286442 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:21] security.DEBUG: Read existing security token from the session. {"key":"_security_app"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:21.286643 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:21] security.DEBUG: User was reloaded from a user provider. {"username":"facagro","provider":"CoreBundle\\\\Security\\\\User\\\\SimpleSamlUserProvider"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:21.316780 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:21] request.CRITICAL: Uncaught PHP Exception InvalidArgumentException: "SSL certificate not found: /etc/letsencrypt/live/huarpe.uncaus.edu.ar/fullchain.pem" at /var/www/html/huarpe-core/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php line 428 {"exception":"[object] (InvalidArgumentException(code: 0): SSL certificate not found: /etc/letsencrypt/live/huarpe.uncaus.edu.ar/fullchain.pem at /var/www/html/huarpe-core/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:428)"} [], referer: https://huarpe.uncaus.edu.ar/
[Wed Feb 21 11:18:21.321599 2018] [:error] [pid 30366] [client 170.210.156.100:46226] [2018-02-21 11:18:21] security.DEBUG: Stored the security token in the session. {"key":"_security_app"} [], referer: https://huarpe.uncaus.edu.ar/

También pego el resultado de una consulta curl al servidor de mapuche.


arai:~# curl  https://mapuche.uncaus.edu.ar/siu/mapuche/ -vvv
*   Trying 170.210.156.60...
* TCP_NODELAY set
* Connected to mapuche.uncaus.edu.ar (170.210.156.60) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Request CERT (13):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: C=AR; ST=CHACO; L=PRESIDENCIA ROQUE SAENZ PEÑA; O=UNCAUS; OU=UNCAUS; CN=mapuche.uncaus.edu.ar; emailAddress=stellagerzel@uncaus.edu.ar
*  start date: Feb 19 17:26:49 2018 GMT
*  expire date: Feb 17 17:26:49 2028 GMT
*  common name: mapuche.uncaus.edu.ar (matched)
*  issuer: C=AR; ST=CHACO; L=PRESIDENCIA ROQUE SAENZ PEÑA; O=UNCAUS; OU=UNCAUS; CN=mapuche.uncaus.edu.ar; emailAddress=stellagerzerl@uncaus.edu.ar
*  SSL certificate verify ok.
> GET /siu/mapuche/ HTTP/1.1
> Host: mapuche.uncaus.edu.ar
> User-Agent: curl/7.52.1
> Accept: */*
> 
< HTTP/1.1 302 Found
< Date: Wed, 21 Feb 2018 14:34:24 GMT
< Server: Apache/2.4.27 (Ubuntu)
< Set-Cookie: TOBA_SESSID=ot0dqj6f9jbouu3287mvk54b1a; path=/; HttpOnly
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-cache, must-revalidate
< Pragma: no-cache
< Location: https://idp.arai-usuarios.uncaus.edu.ar/idp/saml2/idp/SSOService.php?SAMLRequest=jVNNr9owELzzK1DuSUgIfWBBKgr9QKKASNpDL5XjbIqlxHa9dh%2Fv39dJoNCnCtUXR7s745ndzRxpUyuytOYkjvDTAprB0J1zUwskXXLhWS2IpMiRCNoAEsNItvy8JXEwIkpLI5msvVewxyiKCNpwKXrYZr3w9rv32%2F3Hze77NJlA8VRMpgmdzKqoYmw6nhVvZmURA42eRtNxzJIKJj30K2h0PAvP0XqDng3RwkagocK4%2BCia%2BqPYj6M8Ssg4IXHyrYeunVkuqOngJ2MUkjDkpQqopty3aKnmEgMrGLUYQGldos2Hrb%2B4%2B8qyfQb6F2cQqJPqaQ%2BXjrzjouTix%2BNGFH0Rkk95fvAP%2ByzvSZbXBq2kQNuAvjzz5bi9aW2osuwErxQit9fMW8rQSzvCeSuadK3R6X8ThCVU1NbGRzUP7xlunIrsnKvN%2BiBrzl66eHs%2BSN1Q137LS%2B9PcFnX8nmlgRpYeEZb8IbhX1SXFYSyW0jn3cDZDFeyUW4W2M4JzpSZi6ebr%2FvyVe226whV%2BnABGWFtnQsf3PUsddnODZh7O9dUoJLaXCz%2Fk7xXHT6QnQ6u6fu%2FK%2F0N&RelayState=https%3A%2F%2Fmapuche.uncaus.edu.ar%2Fsiu%2Fmapuche%2F
< Content-Length: 0
< Content-Type: text/html; charset=iso-8859-1
< 
* Curl_http_done: called premature == 0
* Connection #0 to host mapuche.uncaus.edu.ar left intact
arai:~# 

Entiendo que la consulta se realizó correctamente aceptando el certificado de mapuche y previamente registrando las CA en huarpe, digo las CA ya que se registró la CA generada en mapuche como servidor de api y en huarpe como cliente, luego usamos la CA de huarpe en la configuración de mapuche haciendo uso de la directiva SSLCACertificateFile.
Pego el contenido de la configuración de apache en mapuche.


      SSLCertificateFile      /home/administrador/certs_mapuche/servidor/certificado-servidor.pem
                SSLCertificateKeyFile   /home/administrador/certs_mapuche/servidor/claveprivada.pem

                #   Server Certificate Chain:
                #   Point SSLCertificateChainFile at a file containing the
                #   concatenation of PEM encoded CA certificates which form the
                #   certificate chain for the server certificate. Alternatively
                #   the referenced file can be the same as SSLCertificateFile
                #   when the CA certificates are directly appended to the server
                #   certificate for convinience.
#               SSLCertificateChainFile /home/administrador/certs_ca_huarpe/cahuarpecert.ca

                #   Certificate Authority (CA):
                #   Set the CA certificate verification path where to find CA
                #   certificates for client authentication or alternatively one
                #   huge file containing all of them (file must be PEM encoded)
                #   Note: Inside SSLCACertificatePath you need hash symlinks
                #                to point to the certificate files. Use the provided
                #                Makefile to update the hash symlinks after changes.
#               SSLCACertificatePath /etc/ssl/certs/
#               SSLCACertificateFile /etc/apache2/ssl/CAXplotacert.pem
                SSLCACertificateFile /home/administrador/certs_huarpe_cliente/CAXplotacert.pem

      #   issuer chain before deciding the certificate is not valid.
                SSLVerifyClient  optional_no_ca
                SSLProtocol all -SSLv2  -SSLv3 -TLSv1
                SSLOptions      +StdEnvVars +ExportCertData
                SSLVerifyDepth  2


En la directiva SSLVerifyClient, cuando cambio el valor por require, desde huarpe cuando selecciono la aplicación registrada que es mapuche, me arroja un error de autenticación fallida ssl cliente.


170.210.156.60 no aceptó tu certificado de acceso o es posible que no se haya proporcionado.
Intenta comunicarte con el administrador del sistema.
ERR_BAD_SSL_CLIENT_AUTH_CERT

Espero que sirva de ayuda estos datos.

Saludos.

Pego el mensaje arrojado por la herramienta openssl, la cosulta la estamos haciendo desde huarpe.uncaus.edu.ar al sitio mapuche.uncaus.edu.ar, al parecer se acepta y verifica correctamente.


arai:/var/www/html/arai-usuarios# openssl s_client -showcerts -connect mapuche.uncaus.edu.ar:443
CONNECTED(00000003)
depth=1 C = AR, ST = CHACO, L = PRESIDENCIA ROQUE SAENZ PE\C3\83\C2\91A, O = UNCAUS, OU = UNCAUS, CN = mapuche.uncaus.edu.ar, emailAddress = stellagerzerl@uncaus.edu.ar
verify return:1
depth=0 C = AR, ST = CHACO, L = PRESIDENCIA ROQUE SAENZ PE\C3\83\C2\91A, O = UNCAUS, OU = UNCAUS, CN = mapuche.uncaus.edu.ar, emailAddress = stellagerzel@uncaus.edu.ar
verify return:1
---
Certificate chain
 0 s:/C=AR/ST=CHACO/L=PRESIDENCIA ROQUE SAENZ PE\xC3\x83\xC2\x91A/O=UNCAUS/OU=UNCAUS/CN=mapuche.uncaus.edu.ar/emailAddress=stellagerzel@uncaus.edu.ar
   i:/C=AR/ST=CHACO/L=PRESIDENCIA ROQUE SAENZ PE\xC3\x83\xC2\x91A/O=UNCAUS/OU=UNCAUS/CN=mapuche.uncaus.edu.ar/emailAddress=stellagerzerl@uncaus.edu.ar
-----BEGIN CERTIFICATE-----
MIIEEzCCAvugAwIBAgIJALAheJiLwVbOMA0GCSqGSIb3DQEBBQUAMIG1MQswCQYD
VQQGEwJBUjEOMAwGA1UECAwFQ0hBQ08xKDAmBgNVBAcMH1BSRVNJREVOQ0lBIFJP
UVVFIFNBRU5aIFBFw4PCkUExDzANBgNVBAoMBlVOQ0FVUzEPMA0GA1UECwwGVU5D
QVVTMR4wHAYDVQQDDBVtYXB1Y2hlLnVuY2F1cy5lZHUuYXIxKjAoBgkqhkiG9w0B
CQEWG3N0ZWxsYWdlcnplcmxAdW5jYXVzLmVkdS5hcjAeFw0xODAyMTkxNzI2NDla
Fw0yODAyMTcxNzI2NDlaMIG0MQswCQYDVQQGEwJBUjEOMAwGA1UECAwFQ0hBQ08x
KDAmBgNVBAcMH1BSRVNJREVOQ0lBIFJPUVVFIFNBRU5aIFBFw4PCkUExDzANBgNV
BAoMBlVOQ0FVUzEPMA0GA1UECwwGVU5DQVVTMR4wHAYDVQQDDBVtYXB1Y2hlLnVu
Y2F1cy5lZHUuYXIxKTAnBgkqhkiG9w0BCQEWGnN0ZWxsYWdlcnplbEB1bmNhdXMu
ZWR1LmFyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxZP6xqdvLXFV
lW+dJySB2I9af4xxtvmVvT83PZ6iJyrqdJcb+b1EC3aaqe4MugJHaQrkWH3/YSi7
MtacQnkq095oDsTx6yQmTH5jTRNhrJ0uI8a35O7kKly2vmTnW9C8QgC4YC/bBo45
+a/tp/XCTjSVyDaIH1Hu3/XmowRWuKWBA1io79xJf8cpF3Rpn7G2sgq5qTKsPrOo
mUQ8FYbHFt5p0rvUpsKAhv8i+nBjeXMiGv8DZyEcYIvGhBAUcOmuMRqea+Q5saAo
x/TRDWEc+vajNU8IgGv27I7yqemcYtWAgMyCFcA2IbsljZgr6tVKQZz31g+S9NN2
JwNXiz1tswIDAQABoyUwIzAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUF
BwMBMA0GCSqGSIb3DQEBBQUAA4IBAQCVD3mKNvzs6BJMbTaugLXar2tzWq9F/xzc
Y2s6hXif03BVfgMFyQsDK2xKODohkMEDqp/ShbQQaE8te3idfyml4FNfIKOIHd2z
GtJt34z+09gfQFtwE83d5UBC4izg7qESM7YALgKMS0e/Mxo44ViPj4iVGpM7VsqW
iUkE7E+SaIkyCCsgB2DSMh3Ok6EVsDMhhTt2vTctna/0+qxublzgbAhQSEZiKokf
Q1GcEOzQ6n4HlcMV+dRKstM/d8sOX2Um1+PV30jFK8+/SFJABFnYQD2tWWrnR0ee
UdsjK9CZ8uakiomWF1aFn9Y76g3oDfWEZyA1ur9ekVlqDnIYrmlG
-----END CERTIFICATE-----
---
Server certificate
subject=/C=AR/ST=CHACO/L=PRESIDENCIA ROQUE SAENZ PE\xC3\x83\xC2\x91A/O=UNCAUS/OU=UNCAUS/CN=mapuche.uncaus.edu.ar/emailAddress=stellagerzel@uncaus.edu.ar
issuer=/C=AR/ST=CHACO/L=PRESIDENCIA ROQUE SAENZ PE\xC3\x83\xC2\x91A/O=UNCAUS/OU=UNCAUS/CN=mapuche.uncaus.edu.ar/emailAddress=stellagerzerl@uncaus.edu.ar
---
Acceptable client certificate CA names
/C=AR/ST=CHACO/L=PRESIDENCIA ROQUE SAENZ PE\xC3\x83\xC2\x91A/O=UNCAUS/OU=UNCAUS/CN=huarpe.uncaus.edu.ar/emailAddress=stellagerzel@uncaus.edu.ar
Client Certificate Types: RSA sign, DSA sign, ECDSA sign
Requested Signature Algorithms: RSA+SHA512:DSA+SHA512:ECDSA+SHA512:RSA+SHA384:DSA+SHA384:ECDSA+SHA384:RSA+SHA256:DSA+SHA256:ECDSA+SHA256:RSA+SHA224:DSA+SHA224:ECDSA+SHA224:RSA+SHA1:DSA+SHA1:ECDSA+SHA1
Shared Requested Signature Algorithms: RSA+SHA512:DSA+SHA512:ECDSA+SHA512:RSA+SHA384:DSA+SHA384:ECDSA+SHA384:RSA+SHA256:DSA+SHA256:ECDSA+SHA256:RSA+SHA224:DSA+SHA224:ECDSA+SHA224:RSA+SHA1:DSA+SHA1:ECDSA+SHA1
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 1959 bytes and written 314 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: B90317104196E8EF89CABC951CB7FC3BD41342ADA5F703E97A7AF0713646B24B
    Session-ID-ctx: 
    Master-Key: AD7531DBCC0E3276C637BF6D703F3E98FF649B908F7090C65963AF95F77B703F6A3F29EFEDC9C59CE89FFAED2C4F3492
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - f7 2f 02 cd 60 05 fa bc-1f 5d 10 97 dd 8e f3 8f   ./..`....]......
    0010 - ee 40 a8 21 15 fc 00 44-c2 ee af 2e 92 dc 4b 62   .@.!...D......Kb
    0020 - 56 61 13 81 e2 18 e7 91-31 12 df c6 1c f1 00 b5   Va......1.......
    0030 - b3 ad 17 6c e5 cb 3a 5b-e9 e4 50 53 d4 aa 1a 9f   ...l..:[..PS....
    0040 - b7 4a fa d6 f6 ea ca 37-b3 db a2 5a 82 d4 27 e1   .J.....7...Z..'.
    0050 - 93 bc 0b 39 9e 02 6d b4-13 bd 98 6a 58 b4 5b c7   ...9..m....jX.[.
    0060 - 6c 2a d8 d2 29 2d ae f0-50 01 98 85 82 ec 2a 29   l*..)-..P.....*)
    0070 - 21 a6 cf 54 4a ca b9 9d-9d c8 60 9f d5 53 55 60   !..TJ.....`..SU`
    0080 - a9 4c 15 15 b1 20 07 5f-5c dd 4c 84 c3 d9 b5 4e   .L... ._\.L....N
    0090 - 70 2c 22 fe 66 81 7d e5-31 d1 0d 26 4c df 01 a9   p,".f.}.1..&L...
    00a0 - a8 47 60 c2 1f 0a 06 0d-30 6a 15 f6 3f 12 89 24   .G`.....0j..?..$
    00b0 - 0c d3 cf 99 36 56 84 49-70 a9 f1 2c 7e fc 40 2f   ....6V.Ip..,~.@/

    Start Time: 1519224845
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
---
closed

Saludos.

Hola,

Si, en esos parámetros van certificados de tipo ssl client. El CA sirve para “validar” la autenticidad del certificado en cuestión. O sea, el que valida el certificado es quien lo recibe (como una petición previa a la conexión a la api). El que lo recibe sería el servidor Mapuche, que recibe la consulta del cliente Huarpe. El CA debería estar entonces registrado en el servidor Mapuche.

No, para nada. Es otra cuestión totalmente distinta. Los certificados ssl client son para validar las conexiones REST de las apis, entre ellas. El servicio de simplesaml es utilizado para validar el login/sesión de los usuarios. Por otro lado, simplesaml también hace uso de un tipo de certificado… en la doc está bien especificado como crearlo, simple, sin necesitar estar firmado (es solo para encriptar el token saml para la conexión de las aplicaciones con simplesaml.

Para validar la conexión a las api, ej. ejecutando desde un cliente Huarpe hacia un servidor Mapuche, tendría que hacerse algo así

curl https://mapuche.xxx.edu.ar/rest/agentes/999 --key /srv/certs/huarpe.ssl.client.key --cert /srv/certs/huarpe.ssl.client.crt

Donde 999 es el legajo de un agente, junto con las claves de cliente ssl de Huarpe. Esto te daría como resultado algo similar a esto si fué todo bien:

{ "legajo": 999, "agente": "apellido, nombre, "apellido": "apellido", "desc_apmat": null, "nombre": "nombre", "documento": "DNI 334455566", "tipo_documento": "DNI", "numero_documento": 334455566, "cuil": "27-334455566-0", "tipo_sexo": "F", "fecha_nacimiento": "1971-22-19", "estado": "A", "descripcion_estado": "Activo", "datos_combo": "999 - apellido, nombre", "fecha_jubilacion": null, "fecha_ingreso": "1998-05-01" }

Espero ayude a poder ir depurando un poco el estado de la instalación. Pueden probar validar con curl la conexión desde Huarpe (cliente) hacia la api de Usuarios (servidor) o hacia Mapuche (servidor), también desde Mapuche (como cliente ojo!) hacia la api de Usuarios (como servidor). Es todo un poco complejo al configurar pero una vez funciona … es llevadero. De todas formas planeamos liberar una mejora sobre este mecanismo, a futuro.

Saludos!