Guide pratique des certificats SSL: Version fran�aise du SSL Certificates HOWTO | ||
---|---|---|
Pr�c�dent | Chapitre 2. Gestion des certificats | Suivant |
De nos jours l'installation d'OpenSSL ne soul�ve gu�re de difficult�s. Les distributions incluent des gestionnaires de paquets. Reportez-vous � la documentation de votre distribution ou aux fichiers README et INSTALL qu'inclut l'archive tar d'OpenSSL. Ce guide pratique n'a pas pour objectif de traiter de l'installation mais de l'utilisation.
Je d�cris quelques options d'installation standard dont la connaissance est n�cessaire pour les exemples qui suivent. Votre installation peut diff�rer.
Les certificats OpenSSL sont stock�s dans /var/ssl. Toutes les commandes et r�pertoires de ce document partent de /var/ssl. Ce n'est pas indispensable mais les exemples en sont facilit�.
OpenSSL cherche par d�faut son fichier de configuration dans /usr/lib/ssl/openssl.cnf. Ajoutez donc syst�matiquement -config /etc/openssl.cnf aux commandes telles openssl ca et openssl req (par exemple). Je me sers de /etc/openssl.cnf pour maintenir l'ensemble des fichiers de configuration dans /etc.
Les utilitaires et diverses biblioth�ques se trouvent dans /usr/lib/ssl
V�rifiez que CA.pl se trouve dans un r�pertoire qui figure dans le chemin d'acc�s par d�faut aux programmes. Il peut se trouver dans le r�pertoire /usr/lib/ssl. CA.pl permet de masquer la complexit� des commandes openssl. Je l'utilise dans tous les exemples en indiquant entre crochets l'�quivalent openssl.
Modifiez CA.pl de fa�on � ce que les appels � openssl ca et openssl req incluent l'option -config /etc/openssl.cnf.
#$SSLEAY_CONFIG=$ENV{"SSLEAY_CONFIG"}; $SSLEAY_CONFIG="-config /etc/openssl.cnf"; #$CATOP="./demoCA"; $CATOP="/var/ssl"; |
/etc/openssl.cnf doit �tre configur� de fa�on � minimiser les donn�es � renseigner � chaque invocation des utilitaires.
#---Begin--- # # Fichier de configuration pour OpenSSL. # S'emploie surtout pour les demandes de certificats. # # NdT: autre chose que de l'ASCII dans les fichiers de # configuration me rend nerveux. Il y a donc un zest de triche # dans ce qui suit. Vous ne voudriez pas me rendre nerveux, non ? :o) # RANDFILE = $ENV::HOME/.rnd oid_file = $ENV::HOME/.oid oid_section = new_oids # Section des extension X.509v3 pour se servir du # fichier avec l'option -extfile de la commande # "openssl x509" # extensions = # (Variante: employer un fichier de configuration qui # n'a que des extensions X.509v3 dans sa section # principale [= default]) [ new_oids ] # On ajoute des OID pour les commandes 'ca' et 'req'. # Par exemple: # testoid1=1.2.3.4 # L'emploi de substitutions est possible: # testoid2=${testoid1}.5.6 #################################################################### [ ca ] default_ca = CA_default # Section de la CA standard #################################################################### [ CA_default ] dir = /var/ssl # Emplacement de base certs = $dir/certs # Emplacement de stockage des nouveaux certificats crl_dir = $dir/crl # Emplacement des nouvelles CRL database = $dir/index.txt # Fichier d'index new_certs_dir = $dir/newcerts # Emplacement des nouveaux certificats certificate = $dir/cacert.pem # Certificat de la CA serial = $dir/serial # Numero de serie en cours crl = $dir/crl.pem # CRL en cours private_key = $dir/private/cakey.pem # Clef privee RANDFILE = $dir/private/.rand # Fichier d'alea x509_extensions = usr_cert # Extensions pour les certificats # Extensions pour la CRL. Remarque: Netscape communicator n'aime pas les CRL de version 2, # on commente donc pour avoir une CRL version 1 # crl_extensions = crl_ext default_days = 365 # Duree de vie d'un certificat default_crl_days= 7 # Intervalle entre CRLs default_md = sha1 # Algorithme de hachage preserve = no # Conserve-t-on l'ordre du DN ? # Diverses facons de specifier l'allure des requetes # Pour une requete de type CA, les attributs doivent etre les memes # Les champs 'optional' et 'supplied' correspondent respectivement # a des champs optionnels et fournis :o) policy = policy_match # Typage CA [ policy_match ] countryName = match stateOrProvinceName = optional localityName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional # Typage tout-venant # Tous les types d'objets acceptables doivent etre enumeres [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional #################################################################### [ req ] default_bits = 1024 default_keyfile = privkey.pem distinguished_name = req_distinguished_name attributes = req_attributes default_md = sha1 x509_extensions = v3_ca # Extensions pour un certificat auto-signant # Mot de passe pour les clefs privees (l'application le demande s'il est vide). # input_password = secret # output_password = secret # Masque pour les types de chaines valides. Plusieurs choix sont possibles. # default: PrintableString, T61String, BMPString. # pkix : PrintableString, BMPString. # utf8only: only UTF8Strings. # nombstr : PrintableString, T61String (pas de BMPStrings ni de UTF8Strings). # MASK:XXXX valeur litterale. # Attention: certaines versions de Netscape plantent sur les BMPStrings ou les UTF8Strings. # A utiliser avec prudence! string_mask = nombstr # req_extensions = v3_req # Extensions pour une demande de certificat [ req_distinguished_name ] countryName = Nom du pays (code sur 2 lettres) countryName_default = FJ countryName_min = 2 countryName_max = 2 stateOrProvinceName = Etat ou province (nom complet) stateOrProvinceName_default = Fiji localityName = Ville localityName_default = Suva 0.organizationName = Organisation (nom de l'entreprise par exemple) 0.organizationName_default = SOPAC # Possible mais pas normalement pas necessaire :-) #1.organizationName = Second nom de l'organization #1.organizationName_default = World Wide Web SARL organizationalUnitName = Nom du departement dans l'organisation organizationalUnitName_default = ITU commonName = Nom d'usage commonName_max = 64 emailAddress = Addresse e-mail emailAddress_max = 40 # SET-ex3 = SET extension number 3 [ req_attributes ] challengePassword = Un mot de passe de challenge challengePassword_min = 4 challengePassword_max = 20 unstructuredName = Nom optionnel [ usr_cert ] # Extensions ajoutees quand 'ca' signe une requete. # Contraire aux suggestions PKIX mais des CA le font et certains # logiciels le demandent pour ne pas confondre un certificat # utilisateur avec un certificat de CA basicConstraints=CA:FALSE # Examples d'utilisation de nsCertType. En cas d'omission, # le certificat peut servir a tout sauf a signer des objets # Serveur SSL # nsCertType = server # Certificat promis a signer des objets. # nsCertType = objsign # Client normal. # nsCertType = client, email # Tout. # nsCertType = client, email, objsign # Classique pour un certificat client. # keyUsage = nonRepudiation, digitalSignature, keyEncipherment # Pour la boiboite de commentaire de Netscape. nsComment = "Certificate issued by https://www.sopac.org/ssl/" # Recommandations PKIX sans effets secondaires facheux. subjectKeyIdentifier=hash authorityKeyIdentifier=keyid,issuer:always # On importe l'adresse e-mail # pour les attributs subjectAltName et issuerAltname. # subjectAltName=email:copy # Informations relatives au sujet. # issuerAltName=issuer:copy # Adresse de base des autres URL si on n'en donne pas # au cas par cas. nsBaseUrl = https://www.sopac.org/ssl/ # Adresse de la CRL du moment. nsCaRevocationUrl = https://www.sopac.org/ssl/sopac-ca.crl # Adresse pour revoquer un certificat. nsRevocationUrl = https://www.sopac.org/ssl/revocation.html? # Adresse pour renouveller un certificat. nsRenewalUrl = https://www.sopac.org/ssl/renewal.html? # Adresse des pratiques de la CA. nsCaPolicyUrl = https://www.sopac.org/ssl/policy.html. # Adresse du certificat du signataire. issuerAltName = URI:https://www.sopac.org/ssl/sopac.crt. # Adresse de la CRL du moment. crlDistributionPoints = URI:https://www.sopac.org/ssl/sopac-ca.crl [ v3_ca ] # Extensions d'une CA standard # Recommandation PKIX subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer:always # Recommandation PKIX que certains bugware n'aiment pas # basicConstraints = critical,CA:true # On utilise donc plutot ceci basicConstraints = CA:true # Emploi de la clef: typique d'un certificat de CA. # On le laisse inactif pour prevenir l'emploi d'un # certificat auto-signant de test. # keyUsage = cRLSign, keyCertSign # En fonction des besoins. # nsCertType = sslCA, emailCA # On inclut l'adresse e-mail dans le nom alternatif du sujet (recommendation PKIX) # subjectAltName=email:copy # On copie les informations du signataire # issuerAltName=issuer:copy # Encodage DER en base 16 d'une extension: licence de pilotage requise! # 1.2.3.5=RAW:02:03 # On peut surcharger une extension standard: # basicConstraints= critical, RAW:30:03:01:01:FF # Message pour la boite d'affichage de Netscape. nsComment = "Certificat en provenance de https://www.sopac.org/ssl/" # Adresse de base des autres URL si on n'en donne pas # au cas par cas. nsBaseUrl = https://www.sopac.org/ssl/ # Adresse de la CRL du moment. nsCaRevocationUrl = https://www.sopac.org/ssl/sopac-ca.crl # Adresse pour revoquer un certificat. nsRevocationUrl = https://www.sopac.org/ssl/revocation.html? # Adresse pour renouveller un certificat. nsRenewalUrl = https://www.sopac.org/ssl/renewal.html? # Adresse des pratiques de la CA. nsCaPolicyUrl = https://www.sopac.org/ssl/policy.html # Adresse du certificat du signataire. issuerAltName = URI:https://www.sopac.org/ssl/sopac.crt # Adresse de la CRL du moment. crlDistributionPoints = URI:https://www.sopac.org/ssl/sopac-ca.crl [ crl_ext ] # Extensions de CRL # Seuls issuerAltName et authorityKeyIdentifier se justifient dans une CRL. # issuerAltName=issuer:copy authorityKeyIdentifier=keyid:always,issuer:always #----End---- |
Quelques remarques au sujet du fichier openssl.cnf
Plusieurs variables se pr�sentent avec les suffixes _default, _min et _max pour leurs valeurs minimales ou leurs nombres minimaux et maximaux de caract�res respectivement.
Le fichier est bas� sur des [Sections] de variables.
r�pertoire de base.
d�signe la section des variables pour un certificat dont le type n'est pas sp�cifi�.
d�finit l'usage du certificat. CA:TRUE d�signe un certificat de CA racine par exemple.
Utilisez la commande suivante apr�s avoir modifi� de fa�on ad�quate le fichier openssl.cnf�:
CA.pl -newca |
L'utilitaire demande de choisir un fichier contenant le certificat de l'AC ou bien il propose d'en cr�er un. A titre d'exercice, laissez vous guider dans la cr�ation d'une AC. La partie suivante remplace cette AC par une AC de dur�e de vie plus importante. CA.pl ne g�n�re que des certificats valables 365 jours.
Pr�c�dent | Sommaire | Suivant |
Gestion des certificats | Niveau sup�rieur | Cr�ation d'une autorit� de certification racine |
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:21