Professional Documents
Culture Documents
P a s c a l G a c h e t –E I V D
pascal.gachet@eivd.ch
décembre 2002
Intégration d’une PKI tiers dans un domaine Windows 2000 - 2 –
Résumé
Ce document décrit de manière générale, les différentes étapes permettant l’intégration d’une
PKI non-Microsoft dans un domaine Windows 2000, en vue d’une authentification smart
card logon basée sur pkinit.
De manière spécifique, la PKI réellement intégrée dans le domaine Windows 2000 est le
produit OpenCA qui utilise largement les fonctionnalités cryptographies d’OpenSSL.
Résumé..................................................................................... 2
1 Introduction......................................................................... 3
2 Pré-requis............................................................................ 4
2.1 Publication du certificat root dans le fichier Ntauth ......................... 4
2.2 Ajout de la CA root à la liste Entrepri se trust list ............................. 7
2.3 Génération du certificat pour le contrôleur de domaine. ................... 8
2.4 Création d’un nouveau rôle « kdc » ................................................ 10
2.4.1 Définition d’une politique de certificat pour le rôle kdc ........... 11
2.4.2 Ajout des extensions spécifiques à un contrôleur de domaine
microsoft. 11
2.5 Prise en charge de la requête depuis OpenCA ................................. 12
2.6 Installation du certificat contrôleur de domaine ............................. 14
2.7 Publication du certificat dans Active Directory .............................. 14
2.8 Création d’un nouveau rôle « clientMS » ........................................ 15
2.9 Création puis installation du certificat utilisateur sur le support
hardware .................................................................................................... 16
3 Annexe (extensions) ............................................................. 18
3.1 Kdc.ext ......................................................................................... 18
3.2 UserMs.ext .................................................................................... 18
4 Annexe (policy) ................................................................... 19
4.1 Kdc.conf....................................................................................... 19
4.2 UserMs.conf ................................................................................. 21
Intégration d’une PKI tiers dans un domaine Windows 2000 - 3 –
1 Introduction
Dans un scénario de login traditionnel, l’utilisateur introduit son nom d’utilisateur et un mot
de passe. En réalité, une empreinte du mot de passe est transférée par le réseau. Le contrôleur
de domaine Windows 2000 vérifiera les informations utilisateurs en comparent l’empreinte du
mot de passe utilisateur contenu localement sur le contrôleur avec l’empreinte passée par
l’utilisateur lors du login.
Microsoft fournit différents outils permettant de mettre sur pied une autorité de certification
privée « Microsoft CA » l’intégration de cet élément au cœur d’active directory comme
mécanisme d’authentification supplémentaire permet également d’adapter le protocole
Kerberos aux nouveaux mécanismes PKI.
De façon incontestable, l’ajout des mécanismes PKI dans un domaine W2K accroît la sécurité
globale de tout le système. Mais de nombreuses cont roverses concernant la sécurité ou la non
sécurité des équipements Microsoft, notamment sur un accort secret entre la NSA et
Microsoft, ont mis en évidence le besoin de remplacer toutes applications Microsoft sensées
garantir la confidentialité par des applications développées par d’autres constructeurs, jugés
plus sûr, ce qui s’applique particulièrement à la CA de Microsoft.
Malgré cet état des lieux, il est nécessaire d’installer la CA Microsoft en premier lieu pour
bénéficier des mécanismes additionnels apportés à Kerberos lors de cette installation. En
second lieu, la CA Microsoft proprement dite sera remplacée par notre propre autorité de
certification OpenCA dont nous contrôlons parfaitement l’intégrité.
Intégration d’une PKI tiers dans un domaine Windows 2000 - 4 –
2 Pré-requis
La procédure de smart card logon décrite dans ce document ne peut être mise en œuvre
uniquement si les composants suivants ont été préalablement installés
Pour intégrer une PKI tiers dans le domaine Windows 2000, il est nécessaire d’utiliser au
préalable la CA Microsoft. En analysant les éléments spécifiques générés par la CA Microsoft
dans le système, il est possible de substituer la CA Microsoft par la CA tiers en dupliquant
tous les éléments nécessaires au système Microsoft.
De façon plus précise, le contrôleur de domaine, comme les clients smart card logon
requièrent des certificats au profil bien particulier pour être reconnus mutuellement lors de
l’authentification Kerberos.
Pour que le contrôleur de domaine autorise une ouverture de connexion smart card logon, il
est nécessaire qu’il reconnaisse le certificat root. Le contrôleur de domaine ne reconnaît que
les autorités contenues dans Ntauth (et non pas la liste contenue dans Entreprise trust list). A
ce stade le fichier Ntauth ne contient que le certificat de la CA microsoft.
Dans cette étape il s’agira d’ajouter par le protocole LDAP le nom de la CA tiers et le
certificat proprement dit.
Intégration d’une PKI tiers dans un domaine Windows 2000 - 5 –
CN=NTAuthCertificates,CN=PublicKey
Services,CN=Services,CN=Configuration ;DC=MyDomain,DC=com
Pour ajouter le certificat root à l’objet Ntauth, la stratégie proposée par Microsoft consiste à
générer un fichier ldif contenant le DN de la CA et son certificat, puis de modifier l’objet à
l’aide des utilitaires ldap fournis par Microsoft, ce qui aura pour but d’ajouter le certificat à
l’annuaire Ldap.
L’utilitaire certutil installé avec les outils Windows 2000 Certification Service
permettra d’effectuer cette conversion de type.
La façon la plus simple de créer un fichier ldif aussi trivial, consiste à introduire les
données suivantes avec le Notepad de Microsoft.
dn :CN=NTAuthCertificates,CN=PublicKey
Services,CN=Services,CN=Configuration ;DC=MyDomain,DC=com
Changetype: modify
Add: cACertificate
CAcertificate::
<encoded certificate>
-
Le certificat au format base-64 créé précédemment doit être introduit dans le champ
<encoded certificate>, il ne doit pas contenir les rubriques begin
Certificate et end certificate.
Chaque ligne du certificat doit débuter par un espace et le certificat doit
impérativement se terminer par un retour de chariot et le caractère trait d’union.
Intégration d’une PKI tiers dans un domaine Windows 2000 - 6 –
dn:CN=NTAuthCertificates,CN=PublicKey
Services,CN=Services,CN=Configuration,DC=MyDomain,DC=com
changetype: modify
add: cACertificate
cACertificate::
MIIDkjCCAzygAwIBAgIQUGI7+cbSDadN3AcuClPjEjANBgkqhkiG9w0BAQUFADC
BkTEcMBoGCSqGSIb3DQEJARYNYWRtaW5Aai5sb2NhbDELMAkGA1UEBhMCVVMxFz
AVBgNVBAgTDk5vcnRoIENhcm9saW5hMRIwEAYDVQQHEwlDaGFybG90dGUxEjAQB
gNVBAoTCU1pY3Jvc29mdDEMMAoGA1UECxMDTVBTMRUwEwYDVQQDEwxFbnRlcnBy
aXNlQ0EwHhcNMDEwNDA1MjM1ODE3WhcNMjEwNDA2MDAwNDQyWjCBkTEcMBoGCSq
GSIb3DQEJARYNYWRtaW5Aai5sb2NhbDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk
5vcnRoIENhcm9saW5hMRIwEAYDVQQHEwlDaGFybG90dGUxEjAQBgNVBAoTCU1pY
3Jvc29mdDEMMAoGA1UECxMDTVBMRUwEwYDVQQDEwxFbnRlcnByaXNlQ0EwXDANB
gkqhkiG9w0BAQEFAANLADBIAkEA3M8E1gV1vgo8UnGuTT/g6JFJS3IxzTqDV3yF
pxtcXN9kUZhHT1xa0xf1L7Dx/7t7qzwUBytkeLLmHoCiyEnd/wIDAQABo4IBbDC
CAWgwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgFGMA8GA1UdEwEB/w
QFMAMBAf8wHQYDVR0OBBYEFLAFj6XPYTQjNzPuJFYGIeHKpxlCMIIBAAYDVR0fB
IH4MIH1MIG4oIG1oIGyhoGvbGRhcDovLy9DTj1FbnRlcnByaXNlQ0EsQ049ai1k
Yy0wMSxDTj1DRFAsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2Vydml
jZXMsQ0492Q9uZmlndXJhdGlvbixEQz1qLERDPWxvY2FsP2NlcnRpZmljYXRlUm
V2b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RjbGFzcz1jUkxEaXN0cmlidXRpb25Qb
2ludDA4oDagNIYyaHR0cDovL2otZGMtMDEuai5sb2NhbC9DZXJ0RW5yb2xsL0Vu
dGVycHJpc2VDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQA
DQQDC1vPF7ZpnovlZMU8hTCKK8VNpexCOX0dpuQ6cy7VnpTsCehxM/fJkcGOwNY
AiSjTf9QfxK1yR/yhVnE7iMxHn
-
4. Utiliser l’utilitaire ldifde.exe pour importer le fichier dans Active Directory. Cet
utilitaire est installé par défaut avec Windows 2000 Server.
ldifde –i –f ntauth.ldf
5. Mettre à jour la GPO de domaine afin que la nouvelle CA soit connue de tous les
clients du domaine. Cette mise à jour s’effectue par l’outil dsstore contenu dans
Windows 2000 resource kit
dsstore –pulse
6. Il est souhaitable de vérifier que le certificat a bien été intégré au fichier Ntauth en
utilisant l’utilitaire certmgr.
Le résultat de cette commande affiche les données contenues dans le fichier ntauth.
==============Certificate # 1 ==========
Subject::
Intégration d’une PKI tiers dans un domaine Windows 2000 - 7 –
Bien que cette étape ne soit pas indispensable pour la procédure de smart card logon, il
est toutefois pertinent d’ajouter le certificat root de la CA à la liste des certificats de confiance
du domaine
Le certificat peut être introduit au format PEM par la commande suivante
De cette manière tous les utilisateurs du domaine reconnaîtront par défaut le certificat root de
la CA lors de leur prochain login.
Intégration d’une PKI tiers dans un domaine Windows 2000 - 8 –
La manière la plus simple pour générer ce certificat, consiste à effectuer une requête de
certificat (PKCS#10) spécifique depuis la CA Microsoft, puis de transférer cette requête à la
PKI tiers (OpenCA) qui se chargera de signer la requête en ajoutant les extensions et les
contraintes stipulées dans le document Q291919.
La requête qui devra être faite par la CA Microsoft sera du type server request
pkcs#10, il est donc nécessaire d’ajouter ce template à la liste des certificates
template reconnue par la CA microsoft.
http://<controlleur>.<domaine>.com/certsrv/
• Puis introduire les informations concernant le contrôleur de domaine, seul le nom est
nécessaire.
Remarque : La clé privée est stockée provisoirement dans le CSP, Il est donc absolument
nécessaire d’effectuer les étapes qui suivront sur le même poste avec le même naviga teur
WEB.
Le CSP Schannel permet de générer une paire de clés localement puis de les intégrer sur un
poste distant à travers un canal sécurisé.
Pour que le certificat du contrôleur de domaine soit conforme aux exigences Microsoft, il est
nécessaire d’ajouter de nouvelles extensions à introduire dans le certificat du contrôleur.
OpenCA permet de définir différents rôles suivant le profile que l’on désire ajouter aux
certificats.
Depuis le serveur de la CA choisir Certification->Roles
Puis add a new role.
Ce scripte générera un fichier kdc.conf qui contient la politique de certification à utiliser sur
ce type de rôle et un fichier kdc.ext qui contient les extensions à ajouter aux certificats dont
le rôle et KDC.
Avant de modifier ces fichiers il est nécessaire d’exporter ce nouveau rôle sur le serveur
public afin qu’il soit disponible lors de l’enrôlement.
Les champs contenus dans une requête pkcs#10 n’ont pas pu être contrôlés lors de
l’enrôlement étant donné que cette dernière a été effectuée sur la PKI Microsoft.
[ policy_match ]
countryName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
Une politique de certificat raisonnable pour des certificats de type pkcs#10 consiste à n’exiger
que le champ CN dans la requête.
Microsoft utilise des extensions propriétaires qu’il est nécessaire d’ajouter au certificat
contrôleur de domaine.
• Le certificat doit contenir une extension disposant d’un lien sur une CRL valide de
type ldap ou http
• De manière optionnelle le CN contenu dans le certificat contrôleur de domaine doit
contenir le DN complet du contrôleur.
• L’extension certificate Key Usage section doit contenir les champs
suivants :
Digital signature, Key Encipherment.
• Le certificat doit contenir l’extension enhanced key Usage section avec les
deux champs suivants :
Client authentication(1.3.6.1.5.5.7.3.2)
Server Authentication(1.3.6.1.5.5.7.3.1)
• L’extension Certificate Subject Alternative Name section doit contenir
le champ other name (1.3.6.1.4.1.311.25.1)=GUID, tel que le GUID et
l’identificateur ldap unique du contrôleur de domaine. Cette extension doit également
contenir le champ DNS Name=<controlleur>.<domaine>
• L’extension spécifique certificate template doit contenir le champ
domainController en données BMP.
Intégration d’une PKI tiers dans un domaine Windows 2000 - 12 –
Etant donné que certaines de ces extensions sont propriétaires, et bien évidement pas connues
d’OpenSSL(version 0.9.6e), la solution pour les intégrer malgré tout au certificat du
contrôleur de domaine, consiste à ajouter l’extension manuellement à l’aide de son OID
ASN1, puis d’introduire les données sous forme de données brutes au format DER. (la
configuration à apporter au fichier kdc.ext est disponible en annexe)
Remarque : Il ne s’agit peut être pas la de la technique la plus élégante, mais étant donné que
parmi les extensions à ajouter, certaines ne respectent pas l’ ASN1, seule cette possibilité est
envisageable.
La requête effectuée précédemment à été sauvegardée sur un fichier, le format n’est toutefois
pas conforme au standard pkcs#10 d’OpenSSL.
Il s’agit d’ajouter les entêtes BEGIN CERTIFICATE REQUEST et END CERTIFICATE REQUEST
Fig u r e 2 P K C S # 1 1 r e q u e s t
Puis Continue...
SET_REQUEST_SERIAL_IN_DN "N"
######################
## support for PKIX ##
######################
SET_REQUEST_SERIAL_IN_DN "N"
REQUEST_SERIAL_NAME "sn"
SET_CERTIFICATE_SERIAL_IN_DN "N"
CERTIFICATE_SERIAL_NAME "serialNumber"
DN_WITHOUT_EMAIL "Y"
AUTOMATIC_SUBJECT_ALT_NAME "Y"
DEFAULT_SUBJECT_ALT_NAME "Email"
Intégration d’une PKI tiers dans un domaine Windows 2000 - 14 –
A ce stade, le certificat peut être signé par la CA puis transféré au serveur public de façon
traditionnelle.
Remarque : Etant donné que les clés ont été créées avec le CSP SChannel, le certificat sera
automatiquement installé non pas sur le poste local, mais sur le localMachine du poste
contrôleur de domaine, et cela à travers un canal sécurisé.
Cette publication à été faite à l’aide du browser LDAP ldapbrowser\Editor v2.8.2. (Figure 3)
Intégration d’une PKI tiers dans un domaine Windows 2000 - 15 –
Avant de modifier ces fichiers il est nécessaire d’exporter ce nouveau rôle au serveur public
afin qu’il soit disponible lors de l’enrôlement.
Il s’agit à ce point de configurer les extensions qui devront être ajoutées à tous les certificats
clientMS .
Remarque : Il n’existe pas de définition précise fournie par Microsoft sur les contraintes à
imposer aux certificats utilisateurs smart card logon, ces contraintes ont été déduites en
étudiant précisément les extensions d’un certificat similaire généré par la CA Microsoft.
• Le certificat doit contenir une extension contenant un lien sur une CRL valide de type
ldap ou http.
• L’extension certificate Key Usage section doit contenir les champs suivants
Digital signature, Key Encipherment.
• Le certificat doit contenir l’extension enhanced key Usage section avec les
deux champs suivant :
Client authentication(1.3.6.1.5.5.7.3.2)
Smart Card Logon(1.3.6.1.4.1.311.20.2.2)
Ces extensions doivent être spécifiées dans le fichier d’extension correspondant au rôle
clientMS , c’est-à-dire le fichier clientMS.ext .
Remarque : Etant donné que la plupart de ces extensions sont propriétaires, la technique pour
les intégrer dans un certificat OpenCA, consiste à extraire l’extension en donnée brute dans le
certificat Microsoft CA puis à l’introduire en format DER dans le certificat OpenCA.
Le détail de cette intégration d’extension est disponible dans le document en annexe.
ClientMS.ext.
A ce stade, un rôle spécifique aux clients Microsoft smart card logon à été crée. Ce rôle
contient toutes les extensions requisses par le contrôleur de domaine Microsoft pour accepter
un login par smart card.
Il ne reste plus qu’à générer des certificats pour les clients Microsoft à l’aide d’OpenCA, puis
de les intégrer dans un support hardware de type etoken.
Il s’agit alors de remplir le formulaire avec les informations spécifiques à un client Microsoft
smart card logon.
Dans le champ Role, il est important de préciser le rôle UserMs créé précédemment. Les clés
doivent être générées ensuite dans le support hardware etoken, en spécifiant le CSP
correspondant à etoken alladin.
La suite de la procédure de certification est standard. Une fois le certificat signé, il peut être
récupérer de façon conventionnelle depuis la page principale de la PKI.
Remarque : Pour que le CSP puisse installer le certificat, il est nécessaire d’utiliser le même
poste avec le même browser.
Intégration d’une PKI tiers dans un domaine Windows 2000 - 18 –
3 Annexe (extensions)
3.1 Kdc.ext
# nsCertType = client, email
# nsComment= "User Certificate of tcomca"
# subject KeyIdentifier=hash
# authorityKeyIdentifier=keyid,issuer:always
# subjectAltName=${ENV::subjectAltName}
# issuerAltName=issuer:copy
# nsCaRevocationUrl
=http://pki.vpn.tcomvpn/crl/cacrl.crl
# nsRevocationUrl =
http://pki.vpn.tcomvpn/cr l/cacrl.crl
keyUsage=digitalSignature,keyEncipherment
crlDistributionPoints =
URI:http://pki.vpn.tcomvpn/crl/cacrl.crl
3.2 UserMs.ext
# nsCertType = objsign
keyUsage = digitalSignature, keyEncipherment
#nsCommen:1e:1a:00:53:00:6d:00:61:00:72:00:74:00:63:00:61:00:72
:00:64:00:55:00:73:00:65:00:72
# PK I X r e c o m m e n d a t i o n s
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
#subjectAltName=${ENV::subjectAltName}
#issuerAltName=issuer:copy
# n s C a R e v o c a t i o n U r l = h t t p s : / / p k i . v p n . t c o m v p n / c g i-
bin/pub/crl/cacrl.crl
#nsRevocationUrl = https://pki.vpn.tcomvpn/cgi -
bin/pub/crl/cacrl.crl
crlDistributionPoints =
URI:https://pki.vpn.tcomvpn/crl/cacrl.crl
Intégration d’une PKI tiers dans un domaine Windows 2000 - 19 –
2.5.29.37=DER:30:20:06:08:2b:06:01:05:05:07:03:04:06:08:2b:06:0
1:05:05:07:03:02:06:0a:2b:06:01:04:01:82:37:14:02:02
4 Annexe (policy)
4.1 Kdc.conf
# To use this configuration file with the " -extfile" option of the
# "openssl x509" utility, name here the section containing the
# X.509v3 extensions to use:
# extensions =
# (Alternatively, use a configuration file that has only
# X.509v3 extensions in its main [= default] section.)
[ new_oids ]
## used by ISIS -M T T
#pseudonym=2.5.4.65
#################################################
###################
[ ca ]
default_ca = CA_default # The default ca section
#################################################
###################
[ CA_default ]
name_opt = ca_default
cert_opt = ca_default # keep passed DN ordering
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = p olicy_match
organizationName = optional
organizationalUnitName = optional
commonName = optional
emailAddress = optional
#################################################
###################
countryName_max = 2
[ req_attributes ]
## challengePassword = A challenge password
4.2 UserMs.conf
# To use this configuration file with the " -extfile" option of the
# "openssl x509" utility, name here the section containing the
# X.509v3 extensions to use:
# extensions =
# (Alternatively, use a configuration file that has only
# X.509v3 extensions in its main [= default] section.)
[ new_oids ]
# We can add new OIDs in here for use by 'ca' and 'req'.
# Add a simple OID like this:
# testoid1=1.2.3.4
Intégration d’une PKI tiers dans un domaine Windows 2000 - 22 –
## used by ISIS -M T T
#pseudonym=2.5.4.65
#################################################
###################
[ ca ]
default_ca = CA_default # The default ca section
#################################################
###################
[ CA_default ]
name_opt = ca_default
cert_opt = ca_default # keep passed DN ordering
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_match
[ policy_match ]
countryName = optional
organizationName = optional
organizationalUnitName = optional
commonName = optional
emailAddress = optional
#################################################
###################
countryName_max = 2
[ req_attributes ]
## challengePassword = A challenge password