Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Script]Générateur de certifcat SSL
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
niolou
n00b
n00b


Joined: 06 Jul 2004
Posts: 42
Location: Clermont Fd (63) - Choisy le Roi (94) / France

PostPosted: Thu Apr 14, 2005 9:40 am    Post subject: [Script]Générateur de certifcat SSL Reply with quote

Bonjour à tous voila je me permet de vous présenter un petit script de ma confection :) Je suis d'ailleurs ouvert à toute les propositions sur les parties manquantes, incompletes ou celle qui n'ont pas trouvé de solution dans mon petit cerveau.

Code:

# This Script is under GNU license (www.gnu.org). Vous pouvez modifer ce script selon les termes de la license GNU. Script modifié le 26 02 2005 dans le but de permettre le choix des algorithme de cryptage.Fait par NiolyEoFWooD (Alexandre VERNIOL).
#
#A FAIRE :
#-Trouver l'emplacement de apache.conf ainsi que de proftpd.conf afin de pouvoir intégrer directement les certif générés. Voir ligne 179


# !/bin/bash


nom_de_clef="$1"

while [ -z "$nom_de_clef" ]
do
   read -p "Entrer un nom pour la clef SSL : " nom_de_clef
done

echo
echo "La clef se nommera : $nom_de_clef "
echo

while [ -z "$puissance" ]
do
   read -p "Entrer le nombre de bits de codage :" puissance

done

if [ $puissance -gt 4096 ]
then

read -p "Attention la création de la clef peut prendre quelques instants êtes-vous sur de vouloir continuer [o/n] : " reponse

   
   case $reponse in
   [oO])
   continue
   ;;   
   [nN])
   exit 1
   ;;
   esac
fi

while [ -z "$algo" ]
do
read -p "Quel algorithme souhaitez-vous utiliser ? (GENRSA ou GENDSA)" algo
   
   case $algo in
   [genrsaGENRSA]*)
   echo
   echo "Utilisation de RSA"
   echo
   ;;
   [gendsaGENDSA]*)
   echo
   echo "Utilisation de DSA"
   echo
   ;;   
   *)
   echo
   echo "Merci de choisir RSA ou DSA"
   echo
   ;;
   esac
done   

while [ -z "$type_algo" ]
do
read -p "Choix du type d'algorithme utilisé : (des, des3, aes128, aes192, aes256)" type_algo
   case $type_algo in
   [desDES]*)
   echo
   echo "Le type d'algorithme sera DES"
   echo
   ;;
   [des3DES3]*)
   echo
   echo "Le type d'algorithme sera DES3"
   echo
   ;;
   [aes128AES128]*)
   echo
   echo "Le type d'algorithme sera AES128"
   echo
   ;;
   [aes192AES192]*)
   echo
   echo "Le type d'algorithme sera AES192"
   echo
   ;;
   [aes256AES256]*)
   echo
   echo "Le type d'algorithme sera AES256"
   echo
   ;;
   esac
done

   
echo
echo "Génération de la clef " $nom_de_clef "avec une puissance de" $puissance "avec l'algorithme" $algo "et le type d'algorithme" $type_algo
echo
openssl $algo -"$type_algo" -out "$nom_de_clef.key" $puissance


# openssl genrsa -des3 -out "$nom_de_clef.key" $puissance

echo
read -p "Souhaitez-vous retirez le mot de passe de la clef (permet le lancement d'Apache sans intervention humaine par exemple) [o/n] :" reponse2


   case $reponse2 in
   [oO]*)
   echo "Retrait du mot de passe dans la clef" $nom_de_clef
   openssl rsa -in "$nom_de_clef.key" -out "$nom_de_clef.key.ssmdp"
   mv "$nom_de_clef.key.ssmdp" "$nom_de_clef.key"
   echo "Mot de passe retiré"
   ;;
   [nN]*)
   continue
   ;;
   esac
   

echo "Information sur la clef : "
openssl rsa -noout -text -in "$nom_de_clef.key"

echo

echo
echo "Creation de certifcat :"

openssl req -new -key "$nom_de_clef.key" -out "$nom_de_clef.key.csr"

echo

echo "Informations :"

openssl req -noout -text -in "$nom_de_clef.key.csr"

echo

echo "Certificat X.509 autosigné de l'autorité de certification (CA)"

echo
while [ -z $jour ]
do
   read -p "Nombre de jour de validité du certificat :" jour
done

echo "Le certificat aura une validité de:" $jour
echo

openssl x509 -req -days $jour -in "$nom_de_clef.key.csr" -signkey "$nom_de_clef.key" -out "$nom_de_clef.cert"

echo
echo
read -p "Souhaitez-vous intégrer ces certificats dans Apache ? [o/n]" reponse3
   case $reponse3 in
   
   [oO]*)
   # Il reste a trouver une solution afin de pouvoir determiner l'emplacement du fichier .conf d'apache locate peut etre la solution
   echo "Insertion du certificats, de la clef etc ... "
   echo "SSLCertificateFile" $PWD/$nom_de_clef.cert >> blabla
   echo "SSLCertificateKeyFile" $PWD/$nom_de_clef.key >> blabla
   echo "SSLCertificateChainFile" $PWD/$nom_de_clef.key.csr >> blabla
   echo
   echo "Intégration terminé"
   echo
   ;;
   [nN]*)
   echo "Bonne journée" $USER
   echo
   exit 1
   ;;
   esac

echo

# intégration à proftpd basique ne permet ni la selection de l'algo ni sa puissance ni son nom dernier modif du 26/02/05
read -p "Souhaitez-vous sécurisez Proftpd (simpliste) ? [o/n]" reponse4
   case $reponse4 in
   
   [oO]*)
   echo
   echo "Création de la clef privé RSA"
   openssl genrsa 1024 > host.key && chmod 400 host.key
   echo
   echo "Création du certificat public"
   openssl req -new -x509 -nodes -sha1 -days 365 -key host.key > host.cert
   echo
   echo "Création du .pem utile à proftpd"
   cat host.cert host.key > host.pem && chmod 400 host.pem
   echo
   
   read -p "Souhaitez-vous modifier que je modifie votre proftpd.conf ? [o/n]" modif
      case $modif in
      [oO]*)
      echo
      echo "Modification de /etc/proftpd/proftpd.conf"
      echo "TLSEngine                       on
            TLSLog                          /var/log/proftpd/proftpdtls.log
            TLSRequired                     off
            TLSOptions                      NoCertRequest
            TLSVerifyClient                 off
            TLSProtocol                     TLSv1
            TLSProtocol                     SSLv23
            TLSRSACertificateFile       "$PWD/"host.cert
            TLSRSACertificateKeyFile       "$PWD/"host.key
            TLSRSACertificateFile              "$PWD/"host.pem" >> /etc/proftpd.conf
      echo
      ;;
      [nN]*)
      echo
      echo "Bonne journée" $USER
      exit 1
      ;;
      esac
   ;;
   [nN]*)
   echo
   echo "Bonne journée" $USER
   ;;
   esac


[EDIT] Je serais également ravis d'avoir votre avis ce celui-ci (utilité, fonctionnalité ... )[/EDIT]
Back to top
View user's profile Send private message
broly
Guru
Guru


Joined: 21 Feb 2003
Posts: 345
Location: cachan 94

PostPosted: Thu Apr 14, 2005 11:08 am    Post subject: Reply with quote

Déjà tu peux faire un test sur l'emplacement par defaut voir si les fichiers existent, puis apres faire un test pour voir si locate existe puis voir si une entrée ds la crontab existe afin de s'assurer qu'il ai eu le maximum de chance que ca a deja tourné puis pour finir faire un locate de tes fichiers.


sinon en ce qui concerne l'utilité si toi tu en a besoin c'est deja ca ...
Back to top
View user's profile Send private message
spider312
Veteran
Veteran


Joined: 02 Oct 2004
Posts: 1274
Location: France > Savoie > Chambery

PostPosted: Thu Apr 14, 2005 11:47 am    Post subject: Reply with quote

Je pense que ton script est pas mal, mais pas très didactique, quelqu'un qui a besoin de ce script est quelqu'un (comme moi) qui ne comprends rien à SSLt a juste envie de générer un certificat, dans ce cas, je ne suis pas sur que le script suffise (enfin j'essayerais quand même :P)
Il doit surtout être utile pour quelqu'un qui génère 50 certificats par jour, mais à ce que j'ai compris des certificats, ça ne doi pas arriver bien souvent

En parlant de ça, tu n'aurais pas une doc simple concernant les certificats ? puisqu'à priori, le plus dur n'est pas de les générer mais de comprendre comment ils marchent et à quoi ils servent
Back to top
View user's profile Send private message
spider312
Veteran
Veteran


Joined: 02 Oct 2004
Posts: 1274
Location: France > Savoie > Chambery

PostPosted: Thu Apr 14, 2005 12:21 pm    Post subject: Reply with quote

ouais c'est pire que ce que je pensais :lol:

Donc petite remarque sur la forme : le #!/bin/bash ne devrait-il pas être sur la première ligne ?

Et puis sur le fond : il pose vraiment des questions de malade, faut maitriser le sujet avant de lancer ce script, ce qui diminue son interet

Et pour finir, j'ai pleins d'erreurs, et bien sur ça ne marche pas (enfin j'ai un peu répondu au pif pour voir ce que ça allait donner aussi), ça commence comme ça :
Code:
Génération de la clef  columbia avec une puissance de 128 avec l'algorithme GENRSA et le type
d'algorithme des

openssl:Error: 'GENRSA' is an invalid command.
Back to top
View user's profile Send private message
Pachacamac
Veteran
Veteran


Joined: 22 Nov 2003
Posts: 1264
Location: Paris - France

PostPosted: Thu Apr 14, 2005 1:01 pm    Post subject: Reply with quote

Il me semble que l'on peux donner directement à openssl les fichiers dans lesquels il va chercher ses infos.
Je ne l'ai pas utilisé depuis longtemps alors peut être que ma mémoire me joue des tours.
Back to top
View user's profile Send private message
niolou
n00b
n00b


Joined: 06 Jul 2004
Posts: 42
Location: Clermont Fd (63) - Choisy le Roi (94) / France

PostPosted: Thu Apr 14, 2005 1:53 pm    Post subject: Reply with quote

spider312 wrote:
ouais c'est pire que ce que je pensais :lol:

Donc petite remarque sur la forme : le #!/bin/bash ne devrait-il pas être sur la première ligne ?

Et puis sur le fond : il pose vraiment des questions de malade, faut maitriser le sujet avant de lancer ce script, ce qui diminue son interet

Et pour finir, j'ai pleins d'erreurs, et bien sur ça ne marche pas (enfin j'ai un peu répondu au pif pour voir ce que ça allait donner aussi), ça commence comme ça :
Code:
Génération de la clef  columbia avec une puissance de 128 avec l'algorithme GENRSA et le type
d'algorithme des

openssl:Error: 'GENRSA' is an invalid command.


genrsa en miniscule c'est unerreur de ma part de l'avoir mis en majuscule :oops:

De plus il est vrai que certaine question son plutot tres orienté je pense le modifie ds les prochaines minutes afin qu'il soit plus accessible. De plus il est possible que celui-ci soit bogué avec certain cypher (des3, des aes256 etc ... ) Donc je corrige tt ca et je repost ca ds les plus bref delais ...
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum