Génération de certificats et de keystore

Présentation

Nous avons besoins de certificats & keystore pour la procédure d’authentification client-serveur. Ce document présente comment nous les crééons

  1. Pour rappel, nous avons besoins de différents keystore:
  • keystore.jks : contient le certificat de la clé privé du serveur
  • truststore.jks : contient la chaîne des CAs qui génère ce certificat de clients & serveurs
  • granted_certs.jks : list de certificats du client qui sont autorisés à faire des requêtes vers le serveur
  • le client qui doit présenter sa clé privée & le certificat,lors d’une requête d’authentification.

2.Création des certificats Comme il n’y a pas de PKI, nous utilisons le xca pour générer des certificats et pour les tests. Nous créons l’ensemble des certificats suivants en utilisant le xca.

  • VitamRootCA : certificat auto-signé, modèle de certificat : CA, X509v3 Basic Constraints Extensions : Autorité de Certification
  • VitamIntermediateCA : certificat signé par VitamRootCA, modèle de certificat : CA, X509v3 Basic Constraints Extensions : Autorité de Certification
  • IngestExtServer : certificat signé par VitamIntermediateCA , modèle de certificat : https_server, X509v3 Basic Constraints Extensions : Entité Finale
  • client : certificat signé par VitamIntermediateCA , modèle de certificat : https_client, X509v3 Basic Constraints Extensions : Entité Finale
  • client_expired : certificat signé par VitamIntermediateCA , modèle de certificat : https_client, X509v3 Basic Constraints Extensions : Entité Finale
  • client_notgranted : certificat signé par VitamIntermediateCA , modèle de certificat : https_client, X509v3 Basic Constraints Extensions : Entité Finale

Une fois qu’on a créé ces certificats, nous exportons ces certificats soit en format crt, pem ou p12 pour des utilisations différentes

3. Création des keystores vides Nous utilisons le keytool pour créer les keystores

keytool -genkey -alias mydomain -keystore keystore.jks keytool -delete -alias mydomain -keystore keystore.jks

keytool -genkey -alias mydomain -keystore truststore.jks keytool -delete -alias mydomain -keystore truststore.jks

keytool -genkey -alias mydomain -keystore granted_certs.jks keytool -delete -alias mydomain -keystore granted_certs.jks

  1. Import des certificats
  • truststore.jks : importer VitamIntermediateCA.crt, VitamRootCA.crt
    keytool -import -trustcacerts -alias VitamRootCA -file VitamRootCA.crt -keystore truststore.jks keytool -import -trustcacerts -alias VitamIntermediateCA -file VitamIntermediateCA.crt -keystore truststore.jks
  • keystore.jks
    importer la clé privée et le certificat du serveur keytool -v -importkeystore -srckeystore IngestExtServer.p12 -srcstoretype PKCS12 -destkeystore keystore.jks -deststoretype JKS keytool -import -trustcacerts -alias IngestExtServer -file IngestExtServer.crt -keystore truststore.jks
  • granted_certs.jks
    importer des certificats client.crt et client_expired.crt
  1. Utilisation des certificats client. exporter en format p12 ou pem selon des buts d’utilisations.