script pour générer des certifs autosignés
This commit is contained in:
parent
15db356544
commit
fda8ea4064
8
script/self_signed/conf/_conf.sh
Normal file
8
script/self_signed/conf/_conf.sh
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
CERTIFICATE_PATH="files"
|
||||||
|
ROOT_CA_KEY="${CERTIFICATE_PATH}/rootCA.key"
|
||||||
|
ROOT_CA_CRT="${CERTIFICATE_PATH}/rootCA.crt"
|
||||||
|
TRAEFIK_DEST_CERT="../../roles/traefik/files/etc/certs/"
|
||||||
|
LOCAL_KEY="${TRAEFIK_DEST_CERT}/local.fr.key"
|
||||||
|
LOCAL_CRT="${TRAEFIK_DEST_CERT}/local.fr.crt"
|
||||||
|
LOCAL_CSR="${TRAEFIK_DEST_CERT}/local.fr.csr"
|
12
script/self_signed/files/local.cnf
Normal file
12
script/self_signed/files/local.cnf
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[ req ]
|
||||||
|
prompt = no
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
|
||||||
|
[ req_distinguished_name ]
|
||||||
|
C = FR
|
||||||
|
ST = France
|
||||||
|
L = Toulouse
|
||||||
|
O = local.fr
|
||||||
|
OU = local
|
||||||
|
CN = local
|
||||||
|
emailAddress = local.fr
|
7
script/self_signed/files/local.fr.v3.ext
Normal file
7
script/self_signed/files/local.fr.v3.ext
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
authorityKeyIdentifier=keyid,issuer
|
||||||
|
basicConstraints=CA:FALSE
|
||||||
|
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
|
||||||
|
[alt_names]
|
||||||
|
DNS.1 = *.local.fr
|
31
script/self_signed/files/rootCA.crt
Normal file
31
script/self_signed/files/rootCA.crt
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
-----END CERTIFICATE-----
|
52
script/self_signed/files/rootCA.key
Normal file
52
script/self_signed/files/rootCA.key
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
lVPNis5NWoqUCgec9+i8AD/sLAcV
|
||||||
|
-----END PRIVATE KEY-----
|
127
script/self_signed/selfsigned.sh
Executable file
127
script/self_signed/selfsigned.sh
Executable file
@ -0,0 +1,127 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
IFS=$'\n\t'
|
||||||
|
|
||||||
|
#/ Usage: selfsigned.sh
|
||||||
|
#/ Version: 1.0
|
||||||
|
#/ Description: Script de génération automatique de certificat
|
||||||
|
#/ Examples:
|
||||||
|
#/ selfsigned.sh
|
||||||
|
|
||||||
|
#/
|
||||||
|
#/ Options:
|
||||||
|
#/ -h|--help : Display this help message
|
||||||
|
#/ -g|--generate-rootca : regenerate root ca, if present clean it
|
||||||
|
#/ -v|--verbose : verbose mode default: false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function usage() { grep '^#/' "$0" | cut -c4- ; exit 0 ; }
|
||||||
|
|
||||||
|
#######################################################
|
||||||
|
## LOGGING FRAMEWORK
|
||||||
|
readonly NORMAL="\\e[0m"
|
||||||
|
readonly RED="\\e[1;31m"
|
||||||
|
readonly BOLD="\\e[1m"
|
||||||
|
readonly YELLOW="\\e[1;33m"
|
||||||
|
readonly GREEN="\\e[32m"
|
||||||
|
readonly DIM="\\e[2m"
|
||||||
|
LOG_FILE="/tmp/$(basename "$0").log"; readonly LOG_FILE
|
||||||
|
function log() {
|
||||||
|
( flock -n 200
|
||||||
|
color="$1"; level="$2"; message="$3"
|
||||||
|
printf "${color}%-9s %s\\e[m\\n" "[${level}]" "$message" | tee -a "$LOG_FILE" >&2
|
||||||
|
) 200>"/var/lock/.$(basename "$0").log.lock"
|
||||||
|
}
|
||||||
|
function debug() { if [ "$verbose" = true ]; then log "$DIM" "DEBUG " "$*"; fi }
|
||||||
|
function info() { log "$NORMAL" "INFO " "$*"; }
|
||||||
|
function important() { log "$YELLOW" "IMPORTANT " "$*"; }
|
||||||
|
function warn() { log "$YELLOW" "WARNING" "$*"; }
|
||||||
|
function error() { log "$RED" "ERROR " "$*"; }
|
||||||
|
function fatal() { log "$RED" "FATAL " "$*"; exit 1 ; }
|
||||||
|
function source_defs {
|
||||||
|
resource=$1
|
||||||
|
if [ -f "$resource" ]; then
|
||||||
|
# shellcheck source=_functions.sh
|
||||||
|
# shellcheck disable=SC1091
|
||||||
|
source "$resource"
|
||||||
|
else
|
||||||
|
# shellcheck source=_functions.sh
|
||||||
|
# shellcheck disable=SC1091
|
||||||
|
source "${0%/*}/.irun-resources/$resource"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#######################################################
|
||||||
|
|
||||||
|
function cleanup() {
|
||||||
|
# Remove temporary files
|
||||||
|
# Restart services
|
||||||
|
# ...
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_prerequisites() {
|
||||||
|
if ! command -v openssl > /dev/null; then
|
||||||
|
echo "Missing openssl: install it "
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function cleaning_files() {
|
||||||
|
local files; files="$1"
|
||||||
|
if [[ -f "${files}" ]]; then
|
||||||
|
debug "${files} exists."
|
||||||
|
info "cleaning..${files}"
|
||||||
|
rm -f "${files}"
|
||||||
|
else
|
||||||
|
info "${files} doesn't exist no need clean"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "${BASH_SOURCE[0]}" = "$0" ]]; then
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
# Parse command line arguments
|
||||||
|
# All entry parameters quand be used globally
|
||||||
|
POSITIONAL=()
|
||||||
|
verbose=false
|
||||||
|
generate_root_ca=false
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
key="$1"
|
||||||
|
case $key in
|
||||||
|
-h|--help)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
-v|--verbose)
|
||||||
|
declare -r verbose=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-g|--generate-rootca)
|
||||||
|
declare -r generate_root_ca=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*) # unknown option
|
||||||
|
POSITIONAL+=("$1") # save it in an array for later
|
||||||
|
shift # past argument
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
set -- "${POSITIONAL[@]}" # restore positional parameters
|
||||||
|
|
||||||
|
source_defs conf/_conf.sh
|
||||||
|
check_prerequisites
|
||||||
|
if [ "${generate_root_ca}" = "true" ]; then
|
||||||
|
cleaning_files "${ROOT_CA_KEY}"
|
||||||
|
cleaning_files "${ROOT_CA_CRT}"
|
||||||
|
openssl genrsa -out "${ROOT_CA_KEY}" 4096
|
||||||
|
openssl req -x509 -new -nodes -key "${ROOT_CA_KEY}" -sha256 -days 1024 -out "${ROOT_CA_CRT}"
|
||||||
|
openssl genrsa -out "${LOCAL_KEY}"
|
||||||
|
fi
|
||||||
|
openssl genrsa -out "${LOCAL_KEY}"
|
||||||
|
openssl req -config "${CERTIFICATE_PATH}/local.cnf" -new -key "${LOCAL_KEY}" -out "${LOCAL_CSR}"
|
||||||
|
openssl x509 -req -in "${LOCAL_CSR}" \
|
||||||
|
-CA "${ROOT_CA_CRT}" -CAkey "${ROOT_CA_KEY}" -CAcreateserial \
|
||||||
|
-out "${LOCAL_CRT}" -extfile "${CERTIFICATE_PATH}/local.fr.v3.ext" -days 365 -sha256
|
||||||
|
fi
|
Loading…
Reference in New Issue
Block a user