[howto] Creation d'une autorité de certification et signature de certificats

Rédigé par NaïLyK Aucun commentaire
Classé dans : howto Mots clés : ssl

Le but de ce howto et de:

Générer une autorité de certification auto signée (CA=Certificate Authority), et signature des demande de certificats
Disclamer: Cette procédure est faite en avril 2018. Il est nécessaire de vérifier les bonnes pratiques avant toute chose ! Les normes concernant SSL changent constamment, à cause de nouveaux périphériques, ou encore de failles comblées.


Les extensions


.key --> clef privée
.csr --> demande de certificat (Certificat Signing Request)
.crt --> le fichier certificat (clef publique)
.srl --> le fichier des numéros de séries pour l'autorité de certification (Certificate Authority)


L'autorité de certification:

Création de la clef privée et du certificat de la CA (pour 5ans1/2):

$ openssl req \
    -new \
    -x509 \
    -sha512 \
    -days 2000 \
    -newkey rsa:8192 \
    -keyout ca.key \
    -out ca.crt
Generating a 4096 bit RSA private key
....++
..........................................................................................................++
writing new private key to 'ca.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Un nom permettant de vous identifier en tant que gestionnaire de la ca
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:Le nom qui apparaîtra sur tous les certificats signés
Email Address []:utilisez un mail valide pour pouvoir être contacté
Lors de la signature de certificats, il peut être intéressant de générer un fichier de configuration permettant, notamment, les alternatives names. Par exemple, pour signer nailyk.fr mais que le certificat soit aussi valable pour blog.nailyk.fr ainsi que pour www.nailyk.fr il est nécessaire d'utiliser ce fichier de configuration:
[ req ]
distinguished_name 	= req_distinguished_name
req_extensions  	= v3_req
x509_extensions	= v3_ca

[ v3_req ]
basicConstraints 	= CA:FALSE
keyUsage 		= nonRepudiation, digitalSignature, keyEncipherment
subjectAltName 		= @alt_names

[ req_distinguished_name ]
country_name 		= Country Name (2 letter code)
countryName_default 	= FR
stateOrProvinceName 	= State or Province Name (full name)
stateOrProvinceName_default = France
localityName 		= Locality Name (eg, city)
localityName_default 	= 
organizationalUnitName	= Organizational Unit Name (eg, section)
organizationalUnitName_default	= nailyk
commonName 		= Common Name (eg, YOUR name, FQDN server)
commonName_default	= nailyk.fr
commonName_max		= 64

[ v3_ca ]
#nameConstraints	= permitted;DNS:*
#subjectAltName		= copy

[alt_names]
DNS.1 = blog.nailyk.fr
DNS.2 = www.nailyk.fr
DNS.3 = www.blog.nailyk.fr
#DNS.4 = blabla
#.....
C'est donc la CA qui va autoriser l'utilisation des alternatives names
La génération de la CSR pour le service est détaillée dans un autre article

Signature d'une CSR par la CA (pour un an):


Si c'est le premier certificat généré par la CA on génère également le fichier serial:
$ openssl x509 \
    -days 365 \
    -req -sha512 \
    -in foo.bar.csr \
    -out foo.bar.crt \
    -CA ca.crt \
    -CAkey ca.key \
    -CAserial ca.srl \
    -CAcreateserial \
    -extensions v3_req \
    -extfile ssl.conf
Si le fichier serial existe déjà:
$ openssl x509 \
    -days 365 \
    -req -sha512 \
    -in foo.bar.csr \
    -out foo.bar.crt \
    -CA ca.crt \
    -CAkey ca.key \
    -CAserial ca.srl \
    -extensions v3_req \
    -extfile ssl.conf
Résultat:
Signature ok
subject=/ST=France/OU=nailyk/CN=nailyk.fr
Getting CA Private Key
Enter pass phrase for ca.key:

Vérifier les fichiers générés:
$ openssl x509 \
    -in ca.crt \
    -text \
    -noout | less
Certificate:
  [...]
    Signature Algorithm: sha1WithRSAEncryption
  [...]
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
  [...]
    Signature Algorithm: sha1WithRSAEncryption
  [...]

Une procédure de la 'sécurisation' des fichiers sous windows viendra. Ou pas ;)

Fortement inspiré de / sources:

http://jeyg.info/des-certificats-signes-par-votre-autorite-de-certification-avec-openssl/
http://www.linux-france.org/prj/edu/archinet/systeme/ch24s03.html (obsolète)
http://techglimpse.com/sha256-hash-certificate-openssl/
Infos intéréssantes:
https://www.sslshopper.com/article-most-common-openssl-commands.html

Écrire un commentaire

Quelle est la deuxième lettre du mot rcvgs ?

Fil RSS des commentaires de cet article