Architecte et expert technique freelance

Il aura fallu un peu plus de 3 ans pour que la solution de la « serrure connectée » soit autonome, et je la laisse entre de bonnes mains.

Il est temps pour moi de proposer mes services à de nouvelles structures. Avec 10 d’expériences de conception et de développement et 10 ans d’architecture applicative et système ; mes connaissances couvrent un spectre assez large : analyse et conception (IAF), développement backend (Java, PHP), développement mobile (Android et IOS), définition et mise en œuvre d’infrastructure cloud (AWS, python), sécurisation (TLS, X509…), expertise système linux (debian, ubuntu), cryptographie (AES, RSA), conception de protocole et contrat d’interface (M2M), customisation d’Android (AOSP), amélioration des performances des systèmes existants (Mysql, MariaDB, nginx, analyse de complexité…).

 

Je suis joignable par email : chrystophe.vergnaud [at] gmail.com pour discuter de votre futur projet ou d’une problématique en production.

Ajouter un certificat de serveur dans AWS IAM

La console IAM ne permet pas de gérer les certificats de serveur qui ont été insérés à la volée dans IAM via l’ELB. Il faut donc passer par l’API :

(une fois les pré-requis de l’API installés), exécutez:

aws iam upload-server-certificate --server-certificate-name mon.serveur.com.2017 --certificate-body file:///home/cve/ssl/serveur_crt.pem --certificate-chain file:///home/cve/ssl/cert_chain.pem --private-key file:///home/cve/ssl/serveur_key.pem

Ensuite vous retrouvez votre nouveau certificat dans la liste des certificats IAM sur la page de mise à jour du certificat de l’ELB.

Créer un keystore BKS pour Android et inclure un CA proprietaire

creer le keystore BKS
keytool -genkeypair -v -alias app_zzz -keyalg RSA -keysize 1024 -dname "CN=zzz, OU=zzz, O=zzz, L=zzz,S=00, C=FR" -validity 3600 -keypass zzz -keystore zzz.bks -storepass zzz -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath C:\Users\zzz\BouncyCastle\bcprov-jdk16-146.jar
importer le CA
keytool -importcert -trustcacerts -alias CA_zzz -file CA_zzz.crt -keypass zzz -keystore zzz.bks -storepass zzzz -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath C:\Users\zzz\BouncyCastle\bcprov-jdk16-146.jar
verifier le keystore
keytool -list -keypass zzz -keystore zzz.bks -storepass zzz -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath C:\Users\zzz\BouncyCastle\bcprov-jdk16-146.jar

ps : Cet exemple se base sur le keytool de la jdk 1.6 (les options sont un peu différentes sur la jdk 1.5)

x509 avec openssl

! Créer un ca de test

$ openssl req -x509 -newkey rsa:2048 -keyout’ ca.key -out ca.crt

! Créer la clé privé du serveur (ici RSA)

$ openssl genrsa -out client.key 2048

! Créer la csr du serveur
$ openssl req’ -new -key client.key -out client.csr

! Signer la csr :

$ openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out’ client.crt

Le fichier client.crt est signé par le ca, that’s it !

cf le man openssl pour plus d’info

Mémo sur la gestion/signature de clés RSA depuis un keystore java

créer la clé privée du ca et le certificat autosigné du ca
 openssl req -x509 -newkey rsa:1024 -keyout ca.key -out ca.crt
créer la paire de clé du user
 $JAVA_HOME/bin/keytool -genkey -alias "Chrystophe Vergnaud" -keyalg RSA -dname "CN=Chrystophe Vergnaud, OU=ICI, O=MY_HOME, L=HOME,S=31, C=FR" -storepass "change_moi" -keypass "un_truc_secret" -keystore cve.jks -storetype jks
faire la demande de certif du user
 ${JAVA_HOME}/bin/keytool -certreq -file cve.csr -storepass "change_moi" -alias "Chrystophe Vergnaud" -keystore cve.jks -storetype jks
signer la demande
 openssl x509 -req -days 1200 -in cve.csr -CA ../ca/ca.crt -CAkey ../ca/ca.key -CAcreateserial -out cve.crt
importer le certificat du CA dans le kstore
 ${JAVA_HOME}/bin/keytool -importcert -trustcacerts -alias "mon_ca" -file ../ca/ca.crt -keystore cve.jks -storepass "change_moi" -storetype jks
 repondre oui a la question
importer le certificat signé dans le kstore
 ${JAVA_HOME}/bin/keytool -importcert -alias "Chrystophe Vergnaud" -file cve.crt -keystore cve.jks -storepass "change_moi" -storetype jks
afficher le contenu du keystore
 ${JAVA_HOME}/bin/keytool -list -v -keystore cve.jks -storepass "change_moi" -storetype jks
exporter en pkcs12
 keytool -importkeystore -srckeystore cve.jks -destkeystore cve.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass "change_moi" -deststorepass "change_moi_mieux"

ps : l’option storepass est à éviter en production mais en phase de test elle évite de choper une crampe.

creer un ca de test et creer son propre certificat

‘# creer un ca de test : generation de la cle priv du ca et de son certificat autosigné.

openssl req -x509 -newkey rsa:1024 -keyout ca.key -out ca.crt

# creer la paire de clé du user

$JAVA_HOME/bin/keytool -genkey -alias MonAlias » -keyalg RSA -dname  »CN=MonIdentite’