Publié lundi 10 mars 2014 11:24 par Arnault Nouvel

[SharePoint 2013] Configurer une application web SharePoint 2013 en SSL avec HNSC et SharePoint apps (updated)

sharepoint-2013-logo

Dans ce post, nous allons voir comment configurer une application web SharePoint 2013 afin qu’elle puisse héberger des collections de sites ainsi que des apps SharePoint, en SSL. Nous verrons aussi, et surtout, comment générer un certificat SSL correspondant grâce à Active Directory Certificate Services.

Update : la première version de ce post contenait certaines erreurs qui ont été corrigées (collection de sites racine de la web app, certificat, mysite en HNSC). Les modifications structurantes sont en gras.

Introduction

Dans SharePoint 2013, les collections de sites et les apps peuvent être hébergées sur une même application web (un seul site IIS), et par défaut les apps ne fonctionnent qu’en SSL. Toutefois, les sites SharePoint et les apps ne seront pas accessibles avec le même nom de domaine car il est conseillé, pour des raisons de sécurité, d’utiliser un nom de domaine distinct pour les apps. Il nous faudra donc configurer cette web application avec un certificat capable de gérer les host names de toutes les collections de sites HNSC, les hosts names des apps SharePoint (auto générées), et le nom du serveur afin que le moteur de recherche puisse indexer le tout correctement.

Si on travaille avec des Host Named Site Collections (acronyme HNSC) sur une application web SharePoint, on retrouvera par exemple les collections de sites suivantes :

  • https://intranet.office15.dev
  • https://apps.office15.dev
  • https://dev.office15.dev
  • https://my.office15.dev
  • etc..

En parallèle, cette web app hébergera aussi les app webs des apps installées sur ces collections de sites.
Ces app webs seront accessible via un host name autogénéré par SharePoint, sur un domaine DNS distinct (ici office15apps.demo) :

  • https://app-12345678ABCDEF.office15apps.dev
  • https://app-3456789BCDEFG.office15apps.dev
  • etc.

Enfin, lorsque le moteur de recherche puisse indexer correctement cette web app, il cherchera à accéder à son url sans host name, et donc avec le nom du serveur. Dans mon cas, https://srv15.

Il nous faudra donc un certificat valide pour tous les host names *.office15.dev,  *.office15-apps.dev, et srv15.

Pré-requis

Il y a 2 pré-requis avant de suivre ce tutoriel :

  • Il faut configurer son environnement pour gérer les apps. Les diverses étapes sont très bien détaillées sur ce post TechNet : http://technet.microsoft.com/en-us/library/fp161236(v=office.15)
    Note : dans le cadre de ce tutoriel, contrairement à l’article TechNet, les collections de sites sont sur la zone DNS *.office15.dev, et les app webs sur *.office15apps.dev.
  • Pour générer le certificat SSL, le rôle Active Directory Certificate Services doit être installé sur l’un des serveurs de l’infrastructure. Dans le cadre de ce tutoriel, il est installé sur le contrôleur de domaine.

Avant de poursuivre, Il pourrait être intéressant de lire ce post afin de bien comprendre la notion d’app web et comment fonctionnent les apps pour SharePoint, ainsi que ce post qui explique la notion de HNSC.

Création de l’application web

La création de l’application web se fait de manière traditionnelle, via l’administration centrale. 
On prendra soin de sélectionner le port 443 (port associé au https), de laisser le host header vide (impératif pour gérer les HNSC), et d’activer le SSL.

image

Une fois créée, l’application apparait avec l’url https://NOM_SERVEUR/

webapps

Note : l’url affichée correspondra en théorie au nom du serveur sur laquelle est hébergée l’administration centrale. Nous aurons besoin de cette information pour créer la collection de sites racine et le certificat. En effet, c’est ce nom de serveur qu’il faudra utiliser.

Création des collections de sites

Pour créer les collections de sites en HNSC, il faudra utiliser PowerShell. Ce script permet de créer quelques collections de sites sur notre nouvelle web app :

Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction SilentlyContinue

 

New-SPSite https://SRV15 -Language 1036 -Template "STS#0"  -Name "HNSC ROOT" -OwnerEmail administrator@office15.dev -OwnerAlias OFFICE15\Administrator

New-SPSite https://team.office15.dev -HostHeaderWebApplication https://srv15 -Language 1036 -Template "STS#0"  -Name "Site d'équipe" -OwnerEmail administrator@office15.dev -OwnerAlias OFFICE15\Administrator

New-SPSite https://apps.office15.dev -HostHeaderWebApplication https://srv15 -Language 1036 -Template "APPCATALOG#0"  -Name "Catalogue des Apps" -OwnerEmail administrator@office15.dev -OwnerAlias OFFICE15\Administrator

New-SPSite https://dev.office15.dev -HostHeaderWebApplication https://srv15 -Language 1036 -Template "DEV#0"  -Name "Site du développeur" -OwnerEmail administrator@office15.dev -OwnerAlias OFFICE15\Administrator

New-SPSite https://search.office15.dev -HostHeaderWebApplication https://srv15 -Language 1036 -Template "SRCHCEN#0"  -Name "Centre de recherche" -OwnerEmail administrator@office15.dev -OwnerAlias OFFICE15\Administrator

 

#Pensez à créer un managed path wildcard /personal/ sur votre web app HNSC si vous souhaitez y héberger les my sites

New-SPSite https://my.office15.dev -HostHeaderWebApplication https://srv15 -Language 1036 -Template "SPSMSITEHOST#0"  -Name "Hôte des my sites" -OwnerEmail administrator@office15.dev -OwnerAlias OFFICE15\Administrator

Notez que l’on crée aussi une collection de sites avec le nom du serveur principal (sans l’argument –HostHeaderWebApplication), celle-ci servira de collection de sites racine pour le moteur de recherche, qui indexera alors toutes les collections de sites HNSC de la web app automatiquement.

Notez aussi qu’il est possible d’héberger les my sites sur une web app HNSC à condition d’y ajouter le managed path wildcard /personal/

Après exécution de ce script, les collections de sites seront crées mais inaccessibles, car puisque notre application web est configurée en SSL, il nous faut lui assigner un certificat au niveau de IIS.

A ce stade, on pensera à créer les entrées DNS correspondantes à ces collections de sites dans le gestionnaire DNS pour les faire pointer vers le serveur frontal SharePoint (ou le load balancer s’il y a plusieurs serveurs frontaux).

Passons maintenant à l’étape la plus intéressante.

Création du certificat

Le certificat SSL dont nous avons besoin pour notre application web doit être capable de gérer les 3 entrées DNS différentes :

  • SRV15 pour accéder à la collection de sites racine
  • *.office15.dev pour les collections de sites
  • *.office15apps.dev pour les app webs.

Contrairement aux certificats SSL à host name unique ou à wildcard unique, IIS ne nous fournit pas d’assistant permettant de créer facilement ce type de certificat. Nous allons devoir travailler avec la console mmc.

Génération de la demande de certificat

Connectons nous sur le serveur sur lequel est hébergé le rôle Active Directory Certificate Services, et exécutons (touche Windows + R) mmc.exe.

image

La consôle MMC devrait alors apparaitre. Dans le menu file, cliquer sur “Add/Remove snap-in…”

image

Sélectionner Certificates (avec l’option “Computer account”), et valider.

De retour dans la fenêtre principale, effectuer un clic-droit sur le magasin “Personal”, All Tasks, Advanced Operations, Create Custom Request…

image

Sélectionner “Active Directory Enrollment Policy”, et valider

image

Sélectionner le template “Web Server”, et cliquer sur Next

image

Déplier ensuite le template “Web Server” afin de voir apparaitre le détail, puis cliquer sur Properties.

image

Cette fenêtre devrait apparaitre :

image

C’est ici que nous devons spécifier les informations spécifiques à notre certificat :

  • Pour lui définir un nom, sélectionner le type “Common Name” et la valeur (par exemple “SharePoint HNSC”)
  • Pour lui assigner les host headers wildcards, dans la section Alternative name, créer une entrée de type DNS avec pour valeur *.office15.dev, une autre entrée de type DNS avec pour valeur *.office15apps.dev, et enfin une avec le nom du serveur (correspondant à l’url de la web app qui apparait dans l’administration centrale, dans mon cas SRV15).

La fenêtre devrait alors ressembler à ceci :

cert-dns

Si le certificat doit être pouvoir être exporté puis installé sur un serveur autre que celui sur lequel il est généré, allez dans l’onglet “Private Key”, section “”, et cochez “Mark this key as exportable” :

cert-keyexport

Note : il peut être intéressant de naviguer sur les autres onglets de cette fenêtre pour modifier certaines propriétés, comme la durée de validité du certificat qui est de 2 ans par défaut.

Dérouler alors la fin de l’assistant, et enregistrer le fichier de demande de certificat en spécifiant bien l’extension .req (pour ce tutoriel, on saisira sharepoint-hnsc.req).

Génération du certificat

Dans la console MMC, ajouter maintenant le snap-in “Certification Authority”, qui nous permettra de créer le certificat correspondant à la demande générée précédemment.

image

Sur le noeud correspondant à l’instance AD CS, effectuer un click droit, all tasks, submit new request…

image

Sélectionner le fichier de demande de certificat (sharepoint-hnsc.req) précédemment généré, et valider.

Le certificat final est alors créé, et une fenêtre apparait pour nous laisser choisir l’emplacement auquel le sauvegarder. Entrer un nom de fichier en précisant l’extension .cer, et valider.

image

Installation du certificat sur les frontaux de la ferme SharePoint

Les opérations décrites ci-dessous devront être répétées sur serveur frontal de la ferme SharePoint.

Copier le fichier sharepoint-hnsc.cer sur un emplacement accessible depuis le serveur SharePoint.

Se connecter ensuite au serveur SharePoint, et effectuer un clic-droit + install certificate sur le fichier sharepoint-hnsc.cer

image

Le wizard d’importation se lance alors, sur la page d’accueil il faut sélectionner “local machine” (afin que le certificat puisse être utilisé par IIS) et cliquer sur Next

image

Sur le 2ème écran, on peut laisser l’option par défaut et cliquer sur Next.

image

Le certificat devrait alors être disponible dans IIS.

Ouvrir la console IIS, puis effectuer un clic-droit sur notre web app, edit bindings :

image

Editer le binding par défaut :

image

Sélectionner le certificat que nous venons d’importer, et valider.

image

A ce stade, il devrait être possible de se connecter à nos collections de sites (https://team.office15.dev par exemple) :

image

Les SharePoint apps devraient aussi fonctionner. Pour le vérifier, vous pouvez installer une app (il y en a des toutes faites sur codeplex : http://apps.codeplex.com) dans le site du développeur (https://dev.office15.dev) et tenter d’y accéder :

image

image

Conclusion

Nous avons vu dans ce post comment créer un certificat SSL spécifique à un usage SharePoint 2013 afin de permettre des connexions sécurisées à la fois aux collections de sites SharePoint et aux app webs des apps SharePoint.

D’autre part, si la ferme est exposée sur internet, on devra obtenir le certificat via un fournisseur de certificat public. Malheureusement , ces derniers ne fournissent pas, en général, de certificat avec des alternate names wildcards. Pour contourner ce problème, une solution peut être d’acquérir 2 certificats wildcards distincts (un pour *.office15.dev, et un autre pour *.office15apps.dev), et de déclarer 2 bindings sur l’application web IIS en associant chaque certificat à une IP différente. Il faudra alors que le serveur aie 2 adresses IP minimum.


Arnault Nouvel
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01