Accueil > Exchange, Microsoft > Générer une demande et installer un certificat SSL dans Exchange 2010

Générer une demande et installer un certificat SSL dans Exchange 2010

Une petite série de billets sur le déploiement d’Exchange 2010 :)

Nous allons commencer avec les certificats SSL !! Effectivement cela peut vite devenir un cauchemar !
Nous verrons l’utilisation d’un certificat standard ou d’un certificat SAN.

Nouvelle version veut forcement dire changement des habitudes … et nous voilà repartie vers le bon vieux get-help

La commande « New-ExchangeCertificate » et « Import-ExchangeCertificate » ont subit un petit changement, rassurerez vous rien de bien mechant.
Il n’est plus possible d’utiliser le switch –Path pour spécifier l’emplacement d’un fichier.
Il faudra maintenant passer par une variable et un Set-Content ou encore -FileData.

Maintenant un petit rappel des différents cas de figure :
Disons que mon suffixe DNS pour mon LAN est Exch2k10ROKS.local et mon serveur CAS exchange s’appel Exch2k10CAS01.Exch2k10ROKS.local (fqdn)

1) Certificat Standard
Supposons que mon nom de domaine de messagerie publique s’appel Exch2k10ROKS.fr et que je souhaite faire des économies sur le certificat SSL que je vais acheter (nous sommes ici dans le cas d’une TPE/PME).

Nous allons donc acheter un certificat standard avec un seul DN, dans notre exemple nous prendrons mail.exch2k10roks.fr

Attention ici toute notre infrastructure va reposer sur cet unique DN …
Ce qui veut dire par exemple qu’en interne les utilisateurs devront passer par mail.exch2k10roks.fr (et non par Exch2k10CAS01.Exch2k10ROKS.local) (Nouveauté !! Les clients MAPI (client Outlook lourd 2003/2007) passent maintenant par le CAS pour aller à leur mailbox (plus directement sur le serveur Mailbox))
De plus autodiscover ne fonctionnera pas comme il a été pensé c’est-à-dire en utilisant l’enregistrement DNS autodiscover ! Nous utiliserons la dernière chance avec l’enregistrement DNS de type SRV (_autodiscover._tcp.exch2k10roks.fr (valeurs : 0 0 443 mail)).

Et sur tout il va falloir revoir toutes les virtual directory pour que tout pointe sur mail.exch2k10roks.fr en externe comme en interne !!
Les virtual directory à changer :

$URLName=”mail.exch2k10roks.fr
$ComputerName=”Exch2k10CAS01

# Autodiscover Service Connection Point (SCP)
Get-ClientAccessServer | Set-ClientAccessServer -AutodiscoverServiceInternalUri https://$URLName/autodiscover/autodiscover.xml

# Web Services URL (EWS pour AS)
Get-WebServicesVirtualDirectory | Set-WebServicesVirtualDirectory -InternalUrl https://$URLName/ews/exchange.asmx -ExternalUrl https://$URLName/ews/exchange.asmx

# OAB URL
Get-OABVirtualDirectory | Set-OABVirtualDirectory -InternalURL https://$URLNAME/OAB -ExternalURL https://$URLNAME/OAB

# Autodiscover URL (Attention à votre config Autodiscover (Site Web par défaut) ou bien Autodiscover (Default Web Site))
Set-AutodiscoverVirtualDirectory -Identity “$computername\ Autodiscover (Default Web Site)” -InternalUrl https://$URLNAME/Autodiscover/Autodiscover.xml -ExternalUrl https://$URLNAME/Autodiscover/Autodiscover.xml

# OWA URL (pareil ici (Site Web par défaut) ou bien (Default Web Site))
Set-OWAVirtualDirectory -identity “$computername\owa (Default Web Site)” -InternalURL https://$URLNAME/owa -ExternalURL https://$URLNAME/owa

# Nouveauté !! Panneau de Configuration Exchange
# ECP URL (pareil ici (Site Web par défaut) ou bien (Default Web Site))
Set-EcpVirtualDirectory -identity “$computername\ecp (Default Web Site)” -InternalURL https://$URLNAME/ecp -ExternalURL https://$URLNAME/ecp

# ActiveSync URL
Get-ActiveSyncVirtualDirectory | Set-ActiveSyncVirtualDirectory -InternalURL https://$URLNAME/Microsoft-Server-ActiveSync -ExternalURL https://$URLNAME/Microsoft-Server-ActiveSync

# Outlook Anywhere URL (pareil ici (Site Web par défaut) ou bien (Default Web Site))
Set-OutlookAnywhere -identity “$computername\RPC (Site Web par défaut)” -ExternalHostname $URLNAME

Et pour finir la création du certificat SSL pour notre infrastructure, son importation et l’activation des services associés :
$Data = New-ExchangeCertificate -GenerateRequest -KeySize 2048 -PrivateKeyExportable $true -SubjectName “c=FR,o=EXCH2K10ROKS,CN=mail.exch2k10roks.fr” -DomainName mail.exch2k10roks.fr -Friendlyname Ex2k10Cert

Set-Content -path “C:\Users\Administrateur\Documents\CertRequest.req” -Value $Data

Et maintenant l’import ! la aussi un changement sympa :p
Import-ExchangeCertificate -FileData ([Byte[]]$(Get-Content -Path “C:\Users\Administrateur\Documents\mail.exch2k10roks.fr.crt” -Encoding byte -ReadCount 0))

Et pour finir l’activation : (remplacer XXX pour la Thumbprint générée lors de l’import)
Enable-ExchangeCertificate -Thumbprint XXX -services SMTP,IIS,POP,IMAP

2) Certificat SAN
Supposons maintenant que mon nom de domaine de messagerie publique s’appel Exch2k10ROKS.fr et que je souhaite acheter un certificat SSL avec lequel je pourrai profiter de toute la configuration classique d’Exchange, je veux partager d’un certificat SAN (Subject Alternative Name).

Nous allons donc acheter un certificat SAN avec multiple DN (le prix varie en fonction du nombre de DN).

Pour pouvoir profiter du maximum voilà ce que je vous conseil d’inclure comme DN :
mail.exch2k10roks.fr                                                        (enregistrement A)
exch2k10roks.fr                                                                  (Domaine Internet)
autodiscover.exch2k10roks.fr                                      (Autodiscover)
Exch2k10CAS01                                                                  (Nom NETBIOS)
Exch2k10ROKS.local                                                         (Domaine local)
Exch2k10CAS01.Exch2k10ROKS.local                      (fqdn)
X.X.X.X (IP local)                                                                  (pas indispensable)
X.X.X.X (IP WAN)                                                                  (pas indispensable)
smtp.exch2k10roks.fr                                                        (pour faire propre)
imap.exch2k10roks.fr                                                        (pour faire propre)
pop.exch2k10roks.fr                                                          (pour faire propre, mais plus personne n’utilise pop !)

Ce qui nous fait quand même 11 DN …
Avec cette configuration, aucun problème avec les utilisateurs en interne, ni avec autodiscover !

Juste bien vérifier la configuration des virtuals directory :

$URLNameExtExt=”mail.exch2k10roks.fr
$URLNameExtInt=”Exch2k10CAS01.Exch2k10ROKS.local
$ComputerName=”Exch2k10CAS01

# Autodiscover Service Connection Point (SCP)
Get-ClientAccessServer | Set-ClientAccessServer -AutodiscoverServiceInternalUri https://$URLNameInt/Autodiscover/Autodiscover.xml

# Web Services URL (EWS pour AS)
Get-WebServicesVirtualDirectory | Set-WebServicesVirtualDirectory -InternalUrl https://$URLNameInt/ews/exchange.asmx -ExternalUrl https://$URLNameExt/ews/exchange.asmx

# OAB URL
Get-OABVirtualDirectory | Set-OABVirtualDirectory -InternalURL https://$URLNameInt/OAB -ExternalURL https://$URLNameExt/OAB

# Autodiscover URL (Attention à votre config Autodiscover (Site Web par défaut) ou bien Autodiscover (Default Web Site))
Set-AutodiscoverVirtualDirectory -Identity “$computername\Autodiscover (Site Web par défaut)” -InternalUrl https://$URLNameInt/Autodiscover/Autodiscover.xml -ExternalUrl https://$URLNameExt/Autodiscover/Autodiscover.xml

# OWA URL (pareil ici (Site Web par défaut) ou bien (Default Web Site))
Set-OWAVirtualDirectory -identity “$computername\owa (Site Web par défaut)” -InternalURL https://$URLNameInt/owa -ExternalURL https://$URLNameExt/owa

# Nouveauté !! Panneau de Configuration Exchange
# ECP URL (pareil ici (Site Web par défaut) ou bien (Default Web Site))
Set-EcpVirtualDirectory -identity “$computername\ecp (Default Web Site)” -InternalURL https://$URLNameInt/ecp -ExternalURL https://$URLNameExt/ecp

# ActiveSync URL
Get-ActiveSyncVirtualDirectory | Set-ActiveSyncVirtualDirectory -InternalURL https://$URLNameInt/Microsoft-Server-ActiveSync -ExternalURL https://$URLNameExt/Microsoft-Server-ActiveSync

# Outlook Anywhere URL (pareil ici (Site Web par défaut) ou bien (Default Web Site))
Set-OutlookAnywhere -identity “$computername\RPC (Site Web par défaut)” -ExternalHostname $URLNameExt

Et pour finir la création du certificat SSL pour notre infrastructure, son importation et l’activation des services associés :
$Data = New-ExchangeCertificate -GenerateRequest -KeySize 2048 -PrivateKeyExportable $true -SubjectName “c=FR,o=LESPRITESTVIDE,CN=lespritestvide.fr” -DomainName mail.exch2k10roks.fr,exch2k10roks.fr,Exch2k10CAS01,Exch2k10ROKS.local,Exch2k10CAS01.Exch2k10ROKS.local,autodiscover.exch2k10roks.fr,X.X.X.X,X.X.X.X,smtp.lespritestvide.fr,imap.lespritestvide.fr,pop.lespritestvide.fr -Friendlyname Ex2k10CertSAN

Set-Content -path “C:\Users\Administrateur\Documents\CertRequest.req” -Value $Data

Import-ExchangeCertificate -FileData ([Byte[]]$(Get-Content -Path “C:\Users\Administrateur\Documents\mail.exch2k10roks.fr.crt” -Encoding byte -ReadCount 0))

Et pour finir l’activation : (remplacer XXX pour la Thumbprint générée lors de l’import)
Enable-ExchangeCertificate -Thumbprint XXX -services SMTP,IIS,POP,IMAP

Et voila votre certificat est maintenant en place :)
Pour toutes questions n’hésitez pas.

Anthony Exchange, Microsoft , , , , ,

  1. Chaigneau
    08/07/2010 à 21:39 | #1

    Bravo pour vos informations très précises …
    Question : peut-on utiliser l’autorité de certification de notre Domaine active directory 2003 R2 afin d’éviter l’achat de certificat ?
    Si oui avez vous des informations à ce sujet ?
    Merci d’avance….

    JL Chaigneau

  2. 12/07/2010 à 20:23 | #2

    Il est possible d’utiliser la CA interne mais il faudra que tous les clients aient le certificat racine de confiance dans leur magasin de certificat.

    Pour générer le certificat
    http://localhost/certsrv/ (sur la CA)
    > Choisir : Demander un certificat
    > Choisir : Ou, soumettre un demande de certificat avancée.
    > Soumettez une demande de certificat en utilisant un fichier CMC ou PKCS #10 codé en base 64, ou soumettez une demande en utilisant un fichier PKCS #7 codé en base 64.
    > Coller le contenu du .req généré lors de la création de la requête sur le serveur exchange.
    > Choisir comme model serveur web
    > Pour finir envoyer
    il suffit ensuite de valider la demande puis de télécharger le certificat.

  3. Sawuit
    12/05/2011 à 00:02 | #3

    Bravo pour ces infos !
    Par contre, je n’y arrive pas….
    Je suis allé jusqu’au New-ExchangeCertificate puis j’ai genéré avec mon CA interne un crt mais quand je l’importe, il me met : Ce certificat n’est pas valide pour l’utilisation d’Exchange Serveur
    Une idée ?
    Merci d’avance

  4. 08/06/2011 à 10:28 | #4

    Merci beaucoup pour cette article

  5. 07/07/2011 à 00:40 | #5

    Sur votre CA interne il faudra demander un certificat de type “webserver”
    Coller le contenu du .req generé par New-ExchangeCertificate et recuperer le .crt

  6. dastfred
    22/11/2011 à 18:52 | #6

    Directement ce que j’avais besoin. J’avais fait mon certificat simple pour IIS (owa) sans savoir que d’autres certificats étaient aussi nécessaires. Avec ce script, j’ai pu faire en sorte d’utiliser mon certificat existant en modifiant toutes les URL. Merci Anthony!

  1. 02/12/2010 à 22:40 | #1