View previous topic :: View next topic |
Author |
Message |
niolou n00b
Joined: 06 Jul 2004 Posts: 42 Location: Clermont Fd (63) - Choisy le Roi (94) / France
|
Posted: Thu Apr 14, 2005 9:40 am Post subject: [Script]Générateur de certifcat SSL |
|
|
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 |
|
|
broly Guru
Joined: 21 Feb 2003 Posts: 345 Location: cachan 94
|
Posted: Thu Apr 14, 2005 11:08 am Post subject: |
|
|
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 |
|
|
spider312 Veteran
Joined: 02 Oct 2004 Posts: 1274 Location: France > Savoie > Chambery
|
Posted: Thu Apr 14, 2005 11:47 am Post subject: |
|
|
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 )
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 |
|
|
spider312 Veteran
Joined: 02 Oct 2004 Posts: 1274 Location: France > Savoie > Chambery
|
Posted: Thu Apr 14, 2005 12:21 pm Post subject: |
|
|
ouais c'est pire que ce que je pensais
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 |
|
|
Pachacamac Veteran
Joined: 22 Nov 2003 Posts: 1264 Location: Paris - France
|
Posted: Thu Apr 14, 2005 1:01 pm Post subject: |
|
|
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 |
|
|
niolou n00b
Joined: 06 Jul 2004 Posts: 42 Location: Clermont Fd (63) - Choisy le Roi (94) / France
|
Posted: Thu Apr 14, 2005 1:53 pm Post subject: |
|
|
spider312 wrote: | ouais c'est pire que ce que je pensais
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
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 |
|
|
|