====== Howto - certificats SSL ======
===== Extensions / filetypes =====
==== .DER ====
The DER extension is used for binary DER encoded certificates. These files may also bear the CER or the CRT extension. Proper English usage would be “I have a DER encoded certificate” not “I have a DER certificate”.
==== .PEM ====
The PEM extension is used for different types of X.509v3 files which contain ASCII (Base64) armored data prefixed with a “—– BEGIN …” line.
==== .CRT ====
The CRT extension is used for certificates. The certificates may be encoded as binary DER or as ASCII PEM. The CER and CRT extensions are nearly synonymous. Most common among *nix systems
==== .CER ====
Alternate form of .crt (Microsoft Convention) You can use MS to convert .crt to .cer (.both DER encoded .cer, or base64[PEM] encoded .cer) The .cer file extension is also recognized by IE as a command to run a MS cryptoAPI command (specifically rundll32.exe cryptext.dll,CryptExtOpenCER) which displays a dialogue for importing and/or viewing certificate contents.
==== .KEY ====
The KEY extension is used both for public and private PKCS#8 keys. The keys may be encoded as binary DER or as ASCII PEM.
The only time CRT and CER can safely be interchanged is when the encoding type can be identical. (ie PEM encoded CRT = PEM encoded CER)
===== Display certificate content =====
Use the command that has the extension of your certificate replacing cert.xxx with the name of your certificate
openssl x509 -in cert.pem -text -noout
openssl x509 -in cert.cer -text -noout
openssl x509 -in cert.crt -text -noout
If you get the folowing error it means that you are trying to view a DER encoded certifciate and need to use the commands in the "View DER encoded certificate below".
unable to load certificate
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE
===== View DER encoded Certificate =====
openssl x509 -in certificate.der -inform der -text -noout
If you get the following error it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certs. Use a command in the "View PEM encoded certificate above".
unable to load certificate
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:380:Type=X509
===== Transform =====
==== PEM to DER ====
openssl x509 -in cert.crt -outform der -out cert.der
==== DER to PEM ====
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
===== Combination/Extraction =====
In some cases it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certs keys and chains is to convert each to a PEM encoded certificate then simple copy the contents of each file into a new file. This is suitable for combining files to use in applications lie Apache. Some certs will come in a combined form. Where one file can contain any one of: Certificate, Private Key, Public Key, Signed Certificate, Certificate Authority (CA), and/or Authority Chain.
==== Chained certificate ====
cat mycert.crt > chainedcert.crt
cat subauth.crt >> chainedcert.crt
cat auth.crt >> chainedcert.crt
Pour les certificats une adresse, la meilleure solution pour configurer votre certificat afin de sécuriser votre nom de domaine avec et sans www (ex : exemple.com et www.exemple.com) est de générer votre CSR avec le domaine seulement et non avec le sous domaine www. En effet, lorsque vous générez votre CSR pour le domaine seul, cela implique également l'adresse avec www.
Pour les certificats multidomaines; il faut déclarer explicitement chaque domaine ou sous domaine à couvrir.
===== Processus de demande de certificat =====
* générer la clef SSL (sans mot de passe) :
openssl genrsa -out monsite.dom-key.pem 2048
openssl req -new -key monsite.dom-key.pem -out monsite.dom-req.pem
Lors de cette étape, différentes questions vous seront posées afin de compléter la creation de la CSR et qui apparaîtront dans le certificat SSL. Les caractères suivants ne sont pas acceptés : < > ~! @ # $ % ^ * / \ ( ) ? . , &
* **Common Name/Nom commun/CN :** secure.monsite.com
Le nom de domaine pleinement qualifié. Si vous avez l'intention d'acheter un certificat SSL pour l'URL https://www.monsite.com, votre Common Name sera www.monsite.com. www.monsite.com
* **Organization/Organisation :** Ma Société SARL
Le nom légal et exact de votre organisation / entreprise.
Ne pas utiliser d'abréviation sauf pour les dénominations SA, SARL, EURL etc...
* **Organization Unit/Departement :** Marketing
Département au sein de l'entrepise qui va utiliser le certificat SSL.
* **City/Ville : **Lorient
La ville où votre entreprise est légalement établi.
* **State/Région :** Bretagne
La région où votre entreprise est légalement établie.
* **Country/Pays :** FR
Le code pays à 2 lettres où votre entreprise est légalement établie FR pour France.
**Attention :** ne pas saisir les attributs supplémentaires.
**Attention :** ne pas rentrer de mot de passe pour le challenge (appuyez simplement sur entrée)
**Exemple :**
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Bretagne
Locality Name (eg, city) []:Lorient
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ma Societe SARL
Organizational Unit Name (eg, section) []:marketing
Common Name (eg, YOUR name) []:www.monsite.com
Email Address []:contact@monsite.com
===== Déchiffer une clef =====
openssl rsa mail.mssante.cgm.net_clear.key
openssl dsa mail.mssante.cgm.net_clear.key
==== key et crt => PKCS12/PFX ====
openssl pkcs12 -export -out out_cert.pfx -inkey private.key -in domain.crt -certfile ca-bundle.crt
==== pcks12 => pem + key pour openssl (import de certificat depuis win) ====
openssl pkcs12 -in infile.pfx -nocerts -nodes -out outfile.key
openssl pkcs12 -in infile.pfx -nokeys -out outfile_fullchain.pem
==== pcks7 => pem + hash pour openssl (import de root CA local pki AD) ====
for CERTIF in $(find -name "*.p7b"); do
FILEBN=$(basename --suffix .p7b $CERTIF)
openssl pkcs7 -in $FILEBN.p7b -inform DER -print_certs -out $FILEBN.pem
echo "================================================================================="
echo "= Converted $FILEBN.p7b to $FILEBN.pem, contend hereunder :"
echo "================================================================================="
openssl x509 -in $FILEBN.pem -text -noout
done
for CERTFILE in $(find \( -name "*.crt" -o -name "*.pem" \)); do
# make sure file exists and is a valid cert
test -f "$CERTFILE" || continue
HASH=$(openssl x509 -noout -hash -in "$CERTFILE")
echo $HASH
test -n "$HASH" || continue
# use lowest available iterator for symlink
for ITER in 0 1 2 3 4 5 6 7 8 9; do
test -f "${HASH}.${ITER}" && continue
ln -s "$CERTFILE" "${HASH}.${ITER}"
test -L "${HASH}.${ITER}" && break
done
done