Un monde d'octets

Aller au contenu | Aller au menu | Aller à la recherche

vendredi, septembre 30 2022

Obtenir aisement la validité d'un certificat ssl

echo | openssl s_client --connect ldapserver:636 2>/dev/null | openssl x509 -noout -dates

vendredi, janvier 28 2022

OpenSSL : Selft signed certificate, erreur 19, extration de CA

Il arrive qu'une connexion SSL échoue pour cause de certificats self signed ou untrusted CA. Si vous avez la certitude de la validité d la chain authority, vous pouvez la récupérer ainsi :

echo -n | \
  openssl s_client -showcerts -connect www.test.fr:443 -debug | \
  sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ca.cert 

Vous récupérez le CA du serveur dans le fichier ca.cert que vous pouvez ensuite mettre dans votre trousseau de certificats valides.

mercredi, janvier 26 2022

OpenSSL : établir une connection starttls

openssl s_client -starttls smtp \
                 -crlf -CAfile ca-certificates.crt \
                 -connect smtp.server.fr:25

ca-certificates.crt est l'autorité de certification du serveur distant, en cas de self-signed.

mardi, janvier 11 2022

Java et tls1.0

TLS1.0 est déprécié, certes mais il existe encore des sites l'utilisant et pour lequel java n'y peut plus accéder. Pour rétablir TLS1.0 en client java, il faut réactiver les policies historiques :

update-crypto-policies --set LEGACY

vendredi, août 6 2021

GPG : Transférer ses clefs d'un ordinateur à un autre

gpg --export --armor pascal.valois@free.fr > ~/cle-publique.asc
gpg --export-secret-keys --armor --output cle-privee.asc

scp *.asc target: 
ssh target 

gpg --import ~/cle-publique.asc 
gpg --import ~/cle-privee.asc 

mardi, janvier 28 2020

Installer une chain autority sur un client

mkdir /usr/local/share/ca-certificates/issuer
cp *.crt /usr/local/share/ca-certificates/issuer
sudo update-ca-certificates

jeudi, juillet 26 2018

Trois certificats SSL, trois niveaux de sécurité

Le certificat SSL à validation de domaine (DV)

C’est le niveau de sécurisation basique. Pratique, si vous voulez simplement passer votre site web en HTTPS sans fournir trop d’informations à l’Autorité de Certification ni puiser trop abondamment dans votre trésorerie. Rien de plus simple : pour obtenir un certificat SSL DV (domain validation), il suffit d’être propriétaire du nom de domaine.

L’AC s’assure que vous donniez votre accord en vue de l’émission d’un certificat SSL en tant que titulaire du nom de domaine. Cela fonctionne comme la validation d’une adresse mail lors d’une inscription sur un site web : l’Autorité vous envoie un mail d’approbation, vous cliquez sur le lien, et le tour est joué.

Avec ce type de certificat SSL, le cadenas apparaît suite à l’activation du protocole HTTPS. Mais votre identité n’est pas vérifiée, ni affichée dans la barre d’adresse.

Le certificat SSL à validation d’organisation (OV)

Le certificat SSL OV (organization validation) propose un niveau de sécurité plus poussé, puisqu’il oblige le propriétaire du nom de domaine à être également celui de l’entreprise qui fait la demande. Car, non, ce n’est pas toujours le cas !

Prenez l’exemple de l’entreprise Lambda. Quelqu’un peut demander un certificat SSL DV afin de sécuriser la connexion sur le nom de domaine « lambda.fr », sans pour autant être le propriétaire de la société idoine. Dans le cadre d’une certification à validation d’organisation, l’AC va s’assurer que le propriétaire de l’entreprise est bien celui qui fait la demande, en le contactant directement par le biais des coordonnées trouvées sur les plateformes officielles (Infogreffe, Insee…). La vérification prend environ deux jours.

Une fois le protocole HTTPS activé, l’affichage dans votre barre d’adresse est identique à celui d’une certification à validation de domaine. À une différence près : l’internaute peut consulter votre raison sociale à l’intérieur du certificat SSL.

Le certificat SSL à validation étendue (EV)

Si vous cherchez le niveau de certification le plus élevé, c’est du côté du certificat SSL EV (extended validation) qu’il faut regarder.

Ici, l’AC ne se contente pas de prendre contact avec le demandeur pour vérifier qu’il est bien propriétaire de l’entreprise affiliée au nom de domaine. Elle effectue des vérifications poussées quant à l’existence légale de l’entité et l’exactitude des informations exigées (celles-ci pouvant varier en fonction de l’Autorité contactée). Ce type de certificat est principalement utilisé par les plateformes souhaitant sécuriser des transactions à partir de données bancaires, comme les sites e-commerce, les banques ou les administrations.

Ce certificat numérique se porte garant de la fiabilité de l’entreprise. La raison sociale (voire le nom commercial) de celle-ci, ainsi que son pays d’origine, apparaissent dans la barre d’adresse, en vert. Ces informations viennent s’ajouter au cadenas de sécurité et à la mention HTTPS.

vendredi, juin 22 2018

Letsencrypt, authentification DNS, Wildcard

Letsencrypt permet de générer des certificats à durées limitée sur preuve simple : nous somme les propriétaires du comaine.

Voici comment générer un certificat wildcard pour votre domaine en utilisant la DNS comme preuve de propriété.

Installer Certbot-auto

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto --install-only

Validez votre installation :

/opt/eff.org/certbot/venv/bin/certbot --version

Générer votre certificat wildcard

./certbot certonly --server https://acme-v02.api.letsencrypt.org/directory --manual -d '*.domain.tld'

Vous pouvez spécifier plusieurs -d pour faire un certificat multidomaine.

Acceptez les choix, et à un moment il vous demandera de mettre en place une entrée DNS pour valider le domaine :

Please deploy a DNS TXT record under the name
_acme-challenge.domain.tld with the following value:
6CmoURMbv3F14hJdzR8zqXrhcYJeKWJEhT8xZcz4gUY

Mettez en place la clef, validez cell-ci :

host -t TXT _acme-challenge.domain.tld

Continuez de répondre aux question, dont l'adresse de notification de renouvellement de clef.

Et voila, vos certificats sont dans /etc/letsencrypt/live/'

Renouvellement automatique de votre certificat

Ajoutez cette ligne dans cron :

@monthly letsencrypt renew && service apache2 reload

vendredi, octobre 27 2017

Creation d'une autorité de certicification PKI et d'un certificat serveur pour mise en place d'un serveur OpenVPN

Création de l'arborescence et des fichiers nécessaires :

cd /etc/ssl
mkdir newcerts
touch index.txt index.txt.attr serial
echo 00 > crlnumber

Création du certificat d'autorité :

export SUBJ='/CN=vpn.domain.tld/ST=state/L=locality/O=organisation/C=AU'
openssl req -x509 -config /etc/ssl/openssl.cnf -newkey rsa:8192 -sha256 -days 3650 -keyout private/root_ca.key -out root_ca.pem -subj "$SUBJ"
openssl x509 -serial -noout -in root_ca.pem | cut -d= -f2 > serial
chmod -R 600 /etc/ssl/private

Mise a jour du serial :

openssl x509 -serial -noout -in root_ca.pem | cut -d= -f2 > serial

Nous pourrions déclarer une autorité de certification intermédiaire pour signer nos certificats serveurs et clients, mais cela n'est pas utile en soit.

Nous allons maintenant générer le certificat du serveur openvpn, puis le signer avec notre autorité root_ca :

export SUBJ='/CN=vpn.domain.tld/ST=state/L=locality/O=organisation/C=AU'
openssl req -nodes -newkey rsa:2048 -keyout $vpn.key -out $vpn.req -subj "$SUBJ"
openssl ca -keyfile private/root_ca.key -cert root_ca.pem -in $vpn.req -out $vpn.pem
openssl ca -keyfile private/root_ca.key -cert root_ca.pem -in $vpn.req -out $vpn.pem

Nous allons maintenant générer un certificat pour un client, puis le signer avec notre autorité root_ca :

export client='client.domain.tld'
export SUBJ='/CN=client.domain.tld/ST=state/L=locality/O=organisation/C=AU'
openssl req -nodes -newkey rsa:2048 -keyout $client.key -out $client.req -subj "$SUBJ"
openssl ca -keyfile private/root_ca.key -cert root_ca.pem -in $client.req -out $client.pem

Génération du certificat de révocation "keys.crl" :

openssl ca -config openssl.cnf -gencrl -out keys.crl -keyfile private/root_ca.key -cert root_ca.pem

Installation des fichiers générés dans /etc/openvpn/ssl :

mkdir /etc/openvpn/ssl
mv $vpn.* /etc/openvpn/ssl/
mkdir /etc/openvpn/keys/
cp /etc/ssl/keys.crl /etc/openvpn/keys/crl.pem
mv dh2048.pem /etc/openvpn/ssl/

Génération d'une clef Diffie-Hellman de 2048 bits:

openssl dhparam -out dh2048.pem 2048

Génération d'une clef TLS (afin de bloquer les attaques DoS ou le flood UDP)

openvpn --genkey --secret /etc/openvpn/ssl/ta.key

Création de la chaine de certification :

cat /etc/ssl/root_ca/root_ca.pem > /etc/openvpn/ssl/ca_chain.pem

Création du fichier de configuration :

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
gunzip /etc/openvpn/server.conf.gz

Cela vous donne un fichier avec les options principales que vous pouvez utiliser pour votre serveur. Mais pour faire plus simple, voici un fichier contenant les directives essentielles :

local 0.0.0.0
port 1194
proto tcp
dev tun

ca ssl/ca_chain.pem
cert ssl/$vpn.crt
key ssl/$vpn.key
crl-verify keys/crl.pem
dh server/dh2048.pem

# Configure server mode and supply a VPN subnet
server 192.168.90.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.0.0.0 255.255.0.0"
push "route 172.23.0.0 255.255.0.0"

keepalive 10 120

tls-auth server/ta.key 0 # This file is secret
cipher AES-256-CBC
max-clients 10
log-append /var/log/openvpn.log
verb 3

Enfin, révoquer un certificat (car il faut bien bannir un utilisateur parfois) :

openssl ca -revoke client.domain.tld.pem -config openssl.cnf -keyfile private/root_ca.key -cert root_ca.pem
openssl ca -config openssl.cnf -gencrl -out keys.crl -keyfile private/root_ca.key -cert root_ca.pem
cp keys.crl /etc/openvpn/keys/crl.pem
service openvpn@vpn restart

mercredi, février 23 2011

Self Signed Certificate 101

Post mnemotechnique sur la création de certificat self signed :

# Création d'une requête de certificat 
openssl req --new -nodes -subj "/CN=MyCertitifate"> cert.csr

# Création de la cléf serveur
openssl rsa -in privkey.pem -out key.pem

# Création du certificat serveur
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 1056