#!/bin/bash
# Shrypt generujący certyfikat SSL dla WWW
# Autor Radek Bursztynowski
# 19 czerwca 2011 r.

if [ $# = 0 ] || [ $1 = '-h' ];
  then echo 
       echo "Generowanie certyfikatu CA"
       echo "Wywołanie skryptu:"
       echo
       echo "         generowanie_CA par_1 par_2"
       echo
       echo "gdzie: par_1 oznacza nazwę certyfikatu; np. może być to nazwa serwera"
       echo "       par_2 oznacza długośc obowiązywania certyfikatu w dniach (np: 365)"
       echo
  else echo
       mkdir /root/generowanie_certyfikatow_dla_www
       cd /root/generowanie_certyfikatow_dla_www
       echo "Certyfikaty generowane są tu: /root/generowanie_certyfikatow_dla_www"
       echo
       openssl genrsa -des3 -out $1.key 1024
       openssl req -new -key $1.key -out $1.csr
       cp $1.key $1.key.org
       openssl rsa -in $1.key.org -out $1.key
       openssl x509 -req -days $2 -in $1.csr -signkey $1.key -out $1.crt
       cp $1.key /etc/pki/tls/private
       cp $1.crt /etc/pki/tls/certs
       echo 
       echo "Pamiętaj aby w w pliku httpd.conf (lub apache.conf) lub ssl.conf (CentOS)"
       echo "(w zależności od dystrybucji) ustawiamy ścieżki dostepu do certyfikatów:"
       echo "Dla CentOS w pliku /etc/httpd/conf.d/ssl.conf"
       echo
       echo "     SSLCertificateKeyFile /etc/pki/tls/private/"$1".key"
       echo "     SSLCertificateFile /etc/pki/tls/certs/"$1".crt"
       echo
       echo "Generowanie certyfikatu CA"
       openssl genrsa -out ca.key 1024
       openssl req -new -key ca.key -out ca.csr
       openssl x509 -req -days $2 -in ca.csr -signkey ca.key -out ca.crt
       echo "Generowanie Certyfikatu dla klienta:"
       openssl genrsa -out client.key 1024
       openssl req -new -key client.key -out client.csr
       echo "Podpisywanie Certyfikatu Clienta certyfikatem CA:"
       openssl x509 -req -days $2 -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out public_client.crt
       echo "Generowanie certyfikatu końcowego podpisanego przez nasze ca i zabezpieczonego hasłem:"
       openssl pkcs12 -export -clcerts -in public_client.crt -inkey client.key -out client.p12
       cp public_client.crt /etc/pki/tls/certs/public_client.crt
       echo "W pliku konfiguracyjmym ssl wskazujemy gdzie leży nasze CA."
fi
