Format Pdf - My Geoconcept
Transcription
Format Pdf - My Geoconcept
Exploitation 1 Exploitation Configuration de l’accès LDAP dans Opti-Time ................................................................................. 3 Principe ................................................................................................................................... 3 Configuration ........................................................................................................................... 3 Cryptographie .................................................................................................................................. 5 Générer un magasin de clés et un couple de clés privée/publique .............................................. 5 Générer une demande de signature de certificat par une autorité de certification (VeriSign, Thawte, …) ............................................................................................................................. 5 Importer le(s) certificats de l’autorité de certification dans le keystore .......................................... 6 Importer le certificat réponse émis par l’autorité de certification .................................................. 6 Sécurisation SSL ............................................................................................................................. 7 Sécurisation Apache2.2 ........................................................................................................... 7 Configuration Tomcat ............................................................................................................... 8 Configuration OTGS ................................................................................................................ 8 Configuration HTC ................................................................................................................... 9 Test .............................................................................................................................................. 10 ANNEXE 1 : Certificats GEOCONCEPT .......................................................................................... 11 ANNEXE 2 : Configuration HTTPS de TOMCAT .............................................................................. 12 ANNEXE 3 : Configuration HTTPS deOpti-time ............................................................................... 13 ANNEXE 3.1 : application-init.xml ........................................................................................... 13 ANNEXE 3.2 : Configuration HTC ........................................................................................... 13 ANNEXE 3.3 : Redirection automatique versOpti-time .............................................................. 14 ANNEXE 3.4 : Redirections Apache mod_jk ............................................................................ 14 Spécificités Https ........................................................................................................................... 16 Rediriger la page d’accueil de Tomcat vers Opti-Time ..................................................................... 17 2 Configuration de l’accès LDAP dans Opti-Time Configuration de l’accès LDAP dans Opti-Time Principe Concernant les généralités sur le LDAP, on peut commencer par lire ceci : commentcamarche.net/ldap [http://www.commentcamarche.net/ldap/ldapintro.php3]. Le principe de l’utilisation de l’annuaire LDAP dans Opti-Time est le suivant : chaque ressource habilitée à se connecter doit être associée à un compte utilisateur de type LDAP. Ceci fait que le mot de passe de ce compte n’est pas stocké par Opti-Time, ce qui est bien utile pour rester en phase avec les agendas d’entreprise, dans lesquels les mots de passe sont fréquemment réactualisés. Lors de l’ouverture d’une session avec Opti-Time, l’utilisateur fournit son mot de passe et son nom de compte. Opti-Time se connecte à l’annuaire LDAP (au travers d’un compte spécialisé) et demande au serveur LDAP si le mot de passe fourni par l’utilisateur qui tente de se loguer est correct. Si oui, l’utilisateur entre dans l’application. Configuration Il faut Déclarer à Opti-Time l’existence d’un fichier de configuration LDAP Ceci se fait via le fichier application_init.xml Rentrer les lignes suivantes (en adaptant le chemin bien sûr) <init-param> <param-name>ldap-connector-filename</param-name> <param-value>d:\gss\config\ldap_def.xml</param-value> <description>path for ldap config</description> </init-param> Documenter le fichier ldap_def.xml Un exemple est généralement fourni par Opti-Time, voici le modèle qui permet de se connecter au LDAP de GC (remplacer le mot de passe of course !) <?xml version="1.0" encoding="UTF-8"?> <!--<!DOCTYPE model-mapping PUBLIC "-//GeoConcept/MFO Mapping DTD 1.0//EN" "http://193.57.93.195/config/dtd/ ldap-def.dtd">--> <ldap-connector> <server hostname="193.57.93.249" port="389"> <root>cn=Users,dc=geoconcept,dc=local</root> <securityDN>cn=GSS Admin</securityDN> <securityDNPasswd>xxx</securityDNPasswd> <objectClass>user</objectClass> <login>sAMAccountName</login> <password>userPassword</password> 3 Exploitation </server> </ldap-connector> Dans cet exemple, Opti-Time se connecte à LDAP via le compte "Opti-Time admin" ( nom du compte dont le login est "Opti-Time"). Ce compte est situé dans le niveau d’arborescence cn=Users,dc=geoconcept,dc=local. Ce compte sera ensuite capable d’authentifier tous les autres utilisateurs appartenant aux ramifications du niveau d’arborescence "root". Attention, si le compte de gestion n’est pas dans la même branche que les comptes à authentifier, çà ne marchera pas, à moins de • définir dans <root> le niveau le plus haut incluant tous les comptes; • compléter le securityDN en donnant tout les sous-niveaux de hiérarchie permettant d’arriver à la feuille "CN=compte de gestion". Par exemple <root>OU=grandDomaine,dc=maSociete,dc=local</root> <securityDN>cn=compte de gestion,CN=administrateurs</scurityDN> Permettra de spécifier le compte "compte de gestion" situé dans l’arborescence ldap <server:389>/ masociete,local/grandDomaine/administrateurs et d’identifier tous les comptes situés au dessous du noeud <server:389>/masociete,local/grandDomaine/ (mais pas forcément dans le dossier adminsitrateurs) Tester Au démarrage, Opti-Time essaie de se connecter avec le compte de gestion. Cette phase est renseignée dans le log. Il faut voir les mentions (LdapInitializer) begin parsing ..\geoschedulingsuite\webapps\WEB-INF\config\ldap_def.xml (LdapParserConfig) java.net.MalformedURLException: no protocol: ..\geoschedulingsuite\webapps\WEB-INF\config \ldap_def.xml (LdapServerConfig) !TEST! Launch LDAP connection test (LdapConnection) connection correctly opened (LdapServerConfig) !TEST! LDAP connection test succeeded (LdapInitializer) end parsing ..\geoschedulingsuite\webapps\WEB-INF\config\ldap_def.xml Attention, l’erreur java.net.MalformedURLException est souvent présente mais pas critique. Tout va bien dès lors que connection correctly opened apparaît Ensuite, il faut créer une ressource associée à un compte LDAP. Essayer d’abord de l’associer au même login que celui du comte gestionnaire, puis essayer des logins tiers. Il est très utile de recourir à l’outil ADExplorer. Cet outil permet d’ouvrir une connection, de vérifier le libéllé des "path" vers les différents niveaux de l’annuaire. 4 Cryptographie Cryptographie Cette partie décrit la façon de gérer la création des certificats de cryptographie : le service industrialisation tient à disposition les certificats déjà créés. Pour une installation classique, passer au chapitre Sécurisation SSL Il existe un outil dans java pour gérer des magasins de clés : $JAVA_HOME/bin/keytool Le principe est de créer un magasin, d’y insérer une autorité de certification et une clé validée par cette autorité de certification. Pour mémoire, l’autorité de certification est un organisme reconnu par les navigateurs comme digne de confiance. Le fait pour un serveur de présenter au navigateur une clé publique certifiée par une autorité de certification reconnue de celui-cî, permet de s’assurer que la connexion chiffrée se fera avec le bon serveur. Voici les étapes à suivre : Générer un magasin de clés et un couple de clés privée/publique Le magasin a une durée de validité de 730 jours : C:\Program Files\Java\jdk1.5.0_19\bin>keytool -genkey -alias tomcat -keyalg RSA -keystore .\.keystore validity 730 Tapez le mot de passe du Keystore : mot_de_passe Quels sont vos prénom et nom ? [Unknown] : Jean CLAUDE Quel est le nom de votre unité organisationnelle ? [Unknown] : GEOCONCEPT Quelle est le nom de votre organisation ? [Unknown] : GEOCONCEPT S.A. Quel est le nom de votre ville de résidence ? [Unknown] : BAGNEUX Quel est le nom de votre Etat ou province ? [Unknown] : FRANCE Quel est le code de pays à deux lettres pour cette unité ? [Unknown] : FR Est-ce CN=Jean CLAUDE, OU=GEOCONCEPT, O=GEOCONCEPT S.A., L=BAGNEUX, ST=FRANCE, C=FR ? [non] : oui Spécifiez le mot de passe de la clé pour <tomcat> (appuyez sur Entrée s'il s'agit du mot de passe du Keystore) Générer une demande de signature de certificat par une autorité de certification (VeriSign, Thawte, …) C:\Program Files\Java\jdk1.5.0_19\bin>keytool -certreq Geoconcept.csr Tapez le mot de passe du Keystore : mot_de_passe -keystore .\.keystore -alias tomcat -file On obtient un fichier CSR (Certificat Signing Request) : Geoconcept.csr. Il faut le transmettre à une autorité de certification, qui nous renverra un certificat signé. 5 Exploitation Importer le(s) certificats de l’autorité de certification dans le keystore Selon le certificat retourné par l’autorité de certification, 2 cas se présentent : 1. Si le certificat retourné est une chaîne de certificats : il suffit d’importer le certificat racine de l’autorité de certification(celui qui est le plus élevé dans la chaîne) 2. Si le certificat retourné est un simple certificat : il faut qu’ils nous fournissent également un certificat de l’autorité qui l’a signé à importer. Si le certificat du AC (Autorité de Certification) n’est pas signé par lui même, il faudra un certificat de son signataire et remonter ainsi de suite jusqu’au certificat racine de l' AC, signé par l’AC. Avant d’importer un certificat d’une autorité de certification, il faut impérativement vérifier son empreinte en la comparant avec la bonne connue. On peut l’afficher avec la commande : keytool -printcert -file CERTIF_AC.cer Si les empreintes (MD5, SHA1) sont bonne, on peut procéder à son import dans le keystore: keytool -import -keystore .\.keystore -alias autorite -file CERTIF_AC.cer Importer le certificat réponse émis par l’autorité de certification Si le certificat réponse émis par l’AC s’appelle Geoconcept.cer : keytool -import -keystore .\.keystore -file Geoconcept.cer 6 Sécurisation SSL Sécurisation SSL Deux possibilités ont été testées : • Sécuriser Tomcat en SSL et utiliser Apache pour écouter le port 80 et rediriger les navigateurs vers l’URL HTTPS : cette solution a montré ses limites lorsqu’on souhaitait appeler les web services de OTGS : avec un JDK 6 + Spring WS, une exception arrivait lors du désencapsulage SOAP, dû à un problème connu expliqué ici : http://docs.spring.io/spring-ws/sites/1.5/faq.html#java-1.6 http://forum.spring.io/forum/spring-projects/web-services/29884-saaj0511-problem-with-spring-ws La sécurisation de Tomcat ainsi que la redirection Apache sont néanmoins présentés en ANNEXE 2 : Configuration HTTPS de TOMCAT et ANNEXE 3 : Configuration HTTPS deOpti-time • Sécuriser Apache en front-end et rediriger les requêtes en HTTP vers le back-end Tomcat. C’est aujourd’hui la solution de référence qui est décrite dans les chapitres suivants. Sécurisation Apache2.2 Cette procédure est décrite dans le wiki geoconcept : http://intranet/wiki/index.php/Comment_cr %C3%A9er_un_certificat_SSL%3F#Installation_dans_Apache_2.2 [http://intranet/wiki/index.php/ Comment_créer_un_certificat_SSL%3F#Installation_dans_Apache_2.2] • Installer Apache 2.2 openssl: http://mirrors.linsrv.net/apache//httpd/binaries/win32/httpd-2.2.25-win32x86-openssl-0.9.8y.msi • Dans httpd.conf, activer: • LoadModule ssl_module modules/mod_ssl.so • Include conf/extra/httpd-ssl.conf • Corriger le bug windows dans conf/extra/httpd-ssl.conf qui n’aime pas Program Files (x86) (il faut utiliser le nom court). • Modifier la ligne comme suit: SSLSessionCache "shmcb:C:/PROGRA\~2/Apache Software Foundation/Apache2.2/logs/ssl_scache(512000)" • Installer les certificats SSL de geoconcept: • Clé publique: SSLCertificateFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/ conf/server.crt" • Clé privée : SSLCertificateKeyFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/ conf/server.key" • Clé intermédiaire: SSLCertificateChainFile "C:/Program Files (x86)/Apache Software Foundation/ Apache2.2/conf/server-ca.crt" • Corriger un autre bug windows (il faut supprimer la passephrase de la clé privée) • Renommer server.key en server.key.old • openssl rsa -in server.key.org -out server.key (passephrase: changeit) • Dans le fichier httpd-ssl.conf, rajouter avant </VirtualHost> : 7 Exploitation SSLProxyEngine On ProxyRequests Off ProxyPreserveHost On Proxypass /MONAPPLICATION http://localhost:8080/MONAPPLICATION Proxypassreverse /MONAPPLICATION http://localhost:8080/MONAPPLICATION Proxypass /otgsCharter http://localhost:8080/ otgsCharter Proxypassreverse /otgsCharter http://localhost:8080/otgsCharter Proxypass /htc http://localhost:8080/htc Proxypassreverse /htc http://localhost:8080/htc RedirectMatch permanent ^/$ https://MONSERVEUR.geoconcept.com/MONAPPLICATION/ Configuration Tomcat Dans server.xml, il faut configurer le scheme et le proxyPort comme suit: <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" scheme="https" proxyPort="443" /> Configuration OTGS Dans le fichier application-init.xml : Il faudra mettre à jour le lien en HTTPS et le port vers la feuille de style pour les feuilles de routes : <init-param> <param-name>routesheet_xsl_filename</param-name> <param-value>http://localhost:8080/gss2.5/pages/styles/Routesheet_FR.xsl[https:// MONSERVEUR.geoconcept.com:443/]http://localhost:8080/gss2.5/pages/styles/Routesheet_FR.xsl[otgs]http:// localhost:8080/gss2.5/pages/styles/Routesheet_FR.xsl[/pages/styles/Routesheet_FR.xsl]</param-value> <description>XSL file used by XML routesheet exporter</description> </init-param> De même, il faudra vérifier si l’URL pour la charte graphique doit être spécifiée en https port 443 ou si un simple chemin relatif suffit : <init-param> <param-name>charter-base-dir</param-name> <param-value>/otgsCharter/</param-value> <description>Optional. Directory of the graphic charter. By default the application will seek the graphic Charter elements within this directory using the default dubDirs: - mapper for the mapper baseDir - styles for the styles base dir - scripts for the scripts base dir The other default charter parameters are - styles1.css as style file - mapper as mapper properties file name By default the application uses the bult-in graphic charter </description> </init-param> 8 Configuration HTC Le lien vers le géocoder est à vérifier également : <init-param> <param-name>geocoder-server-url</param-name> <param-value></param-value> <!-- geopc UGCNET aspx <param-value>https://193.57.93.195:443/geocoder/geocoder.aspx</param-value> --> <description>leave an empty param value if you wish to use internal GSS geocoder using jndi geoconcept-ugc Ds</description> </init-param> Configuration HTC Les URL de configuration du client HTC sont configurables dans mapconfig.xml. Il faut s’assurer que les ports d’accès à apache soient corrects (ici 81 si apache écoute 81) : <map> <property <property <property <property name="name" value="HTCMapConfiguration" description="HTC configuration"/> name="url" value="localhost:81"/> name="script" value="/scripts/gcis.exe"/> name="filename" value="NavstreetsforServerQ207France.gcm"/> <property <property <property <property <property <property <property name="tab" value="Server"/> name="bitmapformat" value="png"/> name="tileServer" value="/htc/maps"/> name="textCopyright" value="NAVTEQ©2007"/> name="urlGcisSmartIti" value="localhost:81/scripts/gcis.exe"/> name="graphnameSmartIti" value="NavstreetsforServerQ207France.siti"/> name="itiCost" value="TIME"/> </map> 9 Exploitation Test Pour tester, ouvrir Internet Explorer, se connecter à l’URL en https, une mention indiquant que certaines pages n’ont pas pu être affichées à cause d’un problème sur la sécurité certificat : Cliquer sur la barre et accepter d’afficher le contenu bloqué dans le menu déroulant. 10 ANNEXE 1 : Certificats GEOCONCEPT ANNEXE 1 : Certificats GEOCONCEPT A. RABAHI a décrit également une procédure sur le wiki géoconcept à cette adresse : http://wiki/Mediawiki/index.php/Comment_cr%C3%A9er_un_certificat_SSL%3F [http://wiki/Mediawiki/ index.php/Comment_créer_un_certificat_SSL?] Sur demande, il pourra fournir un keystore avec le certificat déjà importé qu’il suffira de faire prendre en compte par tomcat. Par défaut, son mot de passe est « changeit ». Pour changer le mot de passe d’un magasin de certificat, voici la commande à exécuter : .keytool -storepasswd -new new_storepass -keystore "p:\gss\geoconcept.com.kdb" 11 Exploitation ANNEXE 2 : Configuration HTTPS de TOMCAT On suppose qu’on a préalablement réalisé le keystore tel que décrit au paragraphe : <<RefHeading2021_1026938131<<Erreur : source de la référence non trouvée<<RefHeading2021_1026938131<<Erreur : source de la référence non trouvée et qu’on l’a déposé sous : P:\gss\geoconcept.com.kdb • Mettre en place le connecteur HTTPS Editer le fichier server.xml : commenter la configuration du connecteur HTTP et décommenter la configuration du connecteur HTTPS. Indiquer également le chemin vers le keystore et optionnellement le mot de passe pour le keystore : %TOMCAT_HOME%\conf\server.xml . . . <Connector port="443" maxHttpHeaderSize="8192" acceptCount="100" clientAuth="false" disableUploadTimeout="true" enableLookups="false" **keystoreFile="****P:/gss****/geoconcept.com.kdb" keystorePass="changeit"**maxSpareThreads="75" maxThreads="150" minSpareThreads="25" scheme="https" secure="true" sslProtocol="TLS"/> . . . • Mapping de toutes URL vers connecteur HTTPS Dans webapps\otgs\WEB-INF\web.xml, à la fin , mettre : <security-constraint> <web-resource-collection> <web-resource-name>Entire Application</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> • Redémarrer tomcat 12 ANNEXE 3 : Configuration HTTPS deOpti-time ANNEXE 3 : Configuration HTTPS deOpti-time Il faut spécifier le protocole HTTPS à tous les chemins de configuration deOpti-time (application-init.xml, circulation-config.xml, mapconfig.xml, etc …). Le port 443 doit être spécifié également et surtout, il est primordial que toutes les URL de configuration pointent vers le même nom de domaine. exemple : si on doit accéder à la plateforme à l'adresse http://www.geoconcept.com/[www.geoconcept.com], on mettra cette adresse partout, et surtout pas une adresse équivalente en IP : les navigateurs sont pointilleux !!! ANNEXE 3.1 : application-init.xml Il faudra mettre à jour le lien en HTTPS et le port vers la feuille de style pour les feuilles de routes : <init-param> <param-name>routesheet_xsl_filename</param-name> <param-value>http://localhost:8080/gss2.5/pages/styles/Routesheet_FR.xsl[https://localhost:443/ gss2.5/pages/styles/Routesheet_FR.xsl]</param-value> <description>XSL file used by XML routesheet exporter</description> </init-param> De même, il faudra procéder pour la charte graphique : <init-param> <param-name>charter-base-dir</param-name> <param-value>https://localhost:443/gss2.5/charter/</param-value> <description>Optional. Directory of the graphic charter. By default the application will seek the graphic Charter elements within this directory using the default dubDirs: - mapper for the mapper baseDir - styles for the styles base dir - scripts for the scripts base dir The other default charter parameters are - styles1.css as style file - mapper as mapper properties file name By default the application uses the bult-in graphic charter </description> </init-param> Le lien vers le géocoder est à vérifier également : <init-param> <param-name>geocoder-server-url</param-name> <param-value></param-value> <!-- geopc UGCNET aspx <param-value>https://193.57.93.195:443/geocoder/geocoder.aspx</param-value> --> <description>leave an empty param value if you wish to use internal GSS geocoder using jndi geoconcept-ugc Ds</description> </init-param> ANNEXE 3.2 : Configuration HTC Les URL de configuration du client HTC sont configurables dans mapconfig.xml. Il suffit de modifier la propriété « tileServer » à ligne 8 des paramètres du HTCMapConfiguration, pour définir le protocole HTTPS et le port (443) : 13 Exploitation <map> <property <property <property <property <property <property <property <property <property <property <property name="name" value="HTCMapConfiguration" description="HTC configuration"/> name="url" value="localhost"/> name="script" value="/scripts/gcis.exe"/> name="filename" value="NavstreetsforServerQ207France.gcm"/> name="tab" value="Server"/> name="bitmapformat" value="png"/> name="tileServer" value="https://localhost:443/htc/maps"/> name="textCopyright" value="NAVTEQ©2007"/> name="urlGcisSmartIti" value="localhost/scripts/gcis.exe"/> name="graphnameSmartIti" value="NavstreetsforServerQ207France.siti"/> name="itiCost" value="TIME"/> </map> ANNEXE 3.3 : Redirection automatique versOpti-time Utilser Apache mod_jk comme décrit ici : http://intranet/wiki/index.php/Best_practice_S%C3%A9curit %C3%A9 Dans server.xml : <Connector port="80" enableLookups="false" redirectPort="443"/> <Connector port="443" maxHttpHeaderSize="8192" acceptCount="100" clientAuth="false" disableUploadTimeout="true" enableLookups="false" keystoreFile="P:/gss/geoconcept.com.kdb" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" scheme="https" secure="true" sslProtocol="TLS"/> <!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" enableLookups="false" redirectPort="443" protocol="AJP/1.3" /> ANNEXE 3.4 : Redirections Apache mod_jk # Chargement du mode jk: LoadModule jk_module modules/mod_jk.so # # Mod_jk settings # JkWorkersFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/worker.properties" JkLogFile "C:/Program Files/Apache Software Foundation/Apache2.2/logs/mod_jk.log" JkLogLevel warning JkMount /otgsCharter default JkMount /otgsCharter/* default JkMount /otgs default JkMount /otgs/* default JkMount /htc default JkMount /htc/* default JkMount /ugc-admin default JkMount /ugc-admin/* default JkMount /download default JkMount /download/* default # Manager Tomcat: JkMount /manager default 14 ANNEXE 3.4 : Redirections Apache mod_jk JkMount /manager/* default # Admin Tomcat: JkMount /admin default JkMount /admin/* default # On map le / sur le Tomcat: JkMount / default # End of mod_jk settings # Redirection pour trouver GCIS: Redirect permanent /gcis /index.html # Regles de securité: <Location ~ "/manager|/AdminClient|/ugc-admin"> Order deny,allow Deny from all Allow from 82.225.38.74 127.0.0.1 </Location> 15 Exploitation Spécificités Https Le connecteur https doit être adapté sur une version Tomcat6 Dans le fichier server.xml situé dans ..: \Tomcat 6\conf vous devez coller le connecteur suivant. En précisant bien la localisation du keystore et le port 443. <Connector port="443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="P:/gss/geoconcept.com.kdb" keystorePass="changeit" clientAuth="false" sslProtocol="TLS"/> Redémarrez le service pour que les modifications soient prises en compte. 16 Rediriger la page d’accueil de Tomcat vers Opti-Time Rediriger la page d’accueil de Tomcat vers Opti-Time Utile dans le cas d’une installation sur serveur Amazon par exemple Par défaut, l’url : http://monserveur:monport/ affiche la page d’administration de Tomcat, ce qui n’est pas souhaitable dans le cas de serveurs publiés. L’idéal est de rediriger cette url vers Opti-Time. Pour cela : • créer un fichier index.html et le placer dans …/<répertoireTomcat>/webapps/ROOT/ • éditer ce fichier et y placer les lignes suivantes : <html> <head> <meta http-equiv="refresh" content="0;URL=/gss"> </head> <body> </body> </html> Sauvegarder le fichier et redémarrer Tomcat. Faites ensuite le test en entrant : http://monserveur:monport/ cela devrait afficher la page d’accueil de Opti-Time. 17 18