Outils pour utilisateurs

Outils du site


creer_un_certificat_importable_dans_firefox

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

creer_un_certificat_importable_dans_firefox [19/04/2009 15:42] (Version actuelle)
Ligne 1: Ligne 1:
 +{{tag>​certificat firefox https ssl}}
 +====== Créer un certificat importable dans Firefox ======
  
 +Il est possible de créer des certificats,​ et ensuite de les importer dans Firefox pour les utiliser sur un site. Quel interêt ? Tout simplement d'​identifier une personne sans qu'​elle n'ai besoin d'​entrer un mot de passe. La connexion reste sécurisé grâce à l'​https d'​Apache,​ et seul l'​unique certificat généré sera le passe pour entrer.
 +
 +Voici comment procéder sous Linux.
 +
 +Créez un répertoire afin d'y placer tous les fichiers de certificat qui seront créés.
 +
 +<​code>​
 +mkdir ~/certif
 +cd ~/certif
 +</​code>​
 +
 +Ensuite, il faut créer 2 sous-répertoires pour les certificats racines.
 +
 +<​code>​
 +mkdir certs private
 +</​code>​
 +
 +Il nous faut ensuite créer un fichier serial, et un fichier certindex.txt pour indexer les certificats au fur et à mesure.
 +
 +<​code>​
 +echo '​100001'​ >serial
 +touch certindex.txt
 +</​code>​
 +
 +Pour finir, nous allons créer un fichier de configuration pour openssl que nous nommerons « openssl.cnf ». En nommant le fichier de cette façon, vous n'​aurez plus qu'à faire un copier coller des commandes qui suivent dans ce tutoriel. Voici un exemple de fichier de configuration pour openssl qui peut être ajusté à votre guise.
 +
 +<​code>​
 +#
 +# OpenSSL configuration file.
 +#
 +
 +# Establish working directory.
 +
 +dir = .
 +
 +[ ca ]
 +default_ca = CA_default
 +
 +[ CA_default ]
 +serial = $dir/serial
 +database = $dir/​certindex.txt
 +new_certs_dir = $dir/certs
 +certificate = $dir/​cacert.pem
 +private_key = $dir/​private/​cakey.pem
 +default_days = 365
 +default_md = md5
 +preserve = no
 +email_in_dn = no
 +nameopt = default_ca
 +certopt = default_ca
 +policy = policy_match
 +
 +[ policy_match ]
 +countryName = match
 +stateOrProvinceName = match
 +organizationName = match
 +organizationalUnitName = optional
 +commonName = supplied
 +emailAddress = optional
 +
 +[ req ]
 +default_bits = 1024 # Size of keys
 +default_keyfile = key.pem # name of generated keys
 +default_md = md5 # message digest algorithm
 +string_mask = nombstr # permitted characters
 +distinguished_name = req_distinguished_name
 +req_extensions = v3_req
 +
 +[ req_distinguished_name ]
 +# Variable name Prompt string
 +#​-------------------------  ​ ----------------------------------
 +0.organizationName = Organization Name (company)
 +organizationalUnitName = Organizational Unit Name (department,​ division)
 +emailAddress = Email Address
 +emailAddress_max = 40
 +localityName = Locality Name (city, district)
 +stateOrProvinceName = State or Province Name (full name)
 +countryName = Country Name (2 letter code)
 +countryName_min = 2
 +countryName_max = 2
 +commonName = Common Name (hostname, IP, or your name)
 +commonName_max = 64
 +
 +# Default values for the above, for consistency and less typing.
 +# Variable name Value
 +#​------------------------  ​ ------------------------------
 +0.organizationName_default = My Company
 +localityName_default = My Town
 +stateOrProvinceName_default = State or Providence
 +countryName_default = US
 +
 +[ v3_ca ]
 +basicConstraints = CA:TRUE
 +subjectKeyIdentifier = hash
 +authorityKeyIdentifier = keyid:​always,​issuer:​always
 +
 +[ v3_req ]
 +basicConstraints = CA:FALSE
 +subjectKeyIdentifier = hash
 +</​code>​
 +
 +Maintenant, on fabrique le certicat racine.
 +
 +<​code>​
 +openssl req -new -x509 -extensions v3_ca -keyout private/​cakey.pem -out cacert.pem -days 3650 -config ./​openssl.cnf
 +</​code>​
 +
 +Il vous sera demandé une passe phrase qu'il faut retenir et protéger. Vu qu'il s'agit d'un certificat global, j'ai préféré mettre 10 ans de validité.
 +
 +Voici une étape de faites, maintenant il faut créer le certificat PKCS12 qui pourra être importé dans Firefox.
 +
 +Tapez la commande suivante :
 +
 +<​code>​
 +openssl req -new -nodes -out name-req.pem -keyout private/​name-key.pem -days 365 -config ./​openssl.cnf
 +</​code>​
 +
 +Entrez les informations qui vous sont demandés comme vous le souhaitez, mais faites attention pour le paramètre « Common Name », indiquez-y l'URL du site sur lequel sera utilisé le certificat (par exemple, admin.domaine.fr,​ si le site est https://​admin.domaine.fr/​).
 +
 +Tapez maintenant cette commande :
 +
 +<​code>​
 +openssl ca -out name-cert.pem -days 365 -config ./​openssl.cnf -infiles name-req.pem
 +</​code>​
 +
 +Et enfin celle-ci :
 +
 +<​code>​
 +openssl pkcs12 -export -in name-cert.pem -inkey private/​name-key.pem -certfile cacert.pem -name "​[friendly name]" -out name-cert.p12
 +</​code>​
 +
 +Entrez un « export password » pour protéger l'​importation de la clé. Firefox vous demandera ce mot de passe lors de l'​importation de la clé, cela sécurise d'​autant plus la clé.
 +
 +Voilà, maintenant en vous rendant sur le site, vous allez avoir dans la variable PHP « $_SERVER['​SSL_CLIENT_CERT'​] » le certificat que vous venez de créer. Il vous suffit de faire une comparaison avec une base de données de clé pour authentifier l'​utilisateur.
creer_un_certificat_importable_dans_firefox.txt · Dernière modification: 19/04/2009 15:42 (modification externe)