Gerencie a expiração dos certificados de SSL

GGerencie a expiração dos certificados de SSLGerencie os seus certificados de SSL e verifique as expirações através de um simples e inteligente script, evitando assim que os navegadores impeçam o acesso ao seu site.
Primeiramente, temos que lembrar que a grande de maioria dos certificados de SSL (HTTPs) tem validade de 1 (um) ano, ocorre que muitas vezes a área de tecnologia não se atenta ao vencimento e o certificado de SSL expira. Isso acontece o tempo todo, na maioria das empresas.
Gerencie a expiração dos certificados de SSL

Automatizar verificações de expiração de SSL

USO: SSLexpiryPredictions.sh – [cdewh]
DESCRIÇÃO: Este script prevê os certificados SSL expirados com base na data final.
OPÇÕES:
-c define o valor para o arquivo de configuração que possui detalhes server: port ou host: port.
-d define o valor do diretório que contém os arquivos de certificado no formato crt ou pem.
-e define o valor da extensão do certificado, por exemplo, crt, pem, cert. Por padrão o script utiliza a extensão .crt [a ser usado com -d, se a extensão do arquivo de certificado for diferente de .crt]
-w define o valor para gravar a saída do script em um arquivo.
-h imprime essa ajuda e sai.
Exemplos:
Para criar um arquivo com uma lista de todos os servidores e seus números de porta para fazer um handshake SSL, use:

cat> servers.listserver1: porta1server2: porta2server3: porta3(ctrl + d)

$ ./SSLexpiryPredictions.sh -c server.list
Execute o script fornecendo o local e a extensão do certificado (caso não seja .crt):

$ ./SSLexpiryPredictions.sh -d /path/to/certificates/dir -e pem
Espero que esta contribuição ajude o administrador gerencie de forma mais eficiente os seus certificados de SSL.
Abaixo, está disponível o código do script.

SCRIPT

#!/bin/bash####       PURPOSE: The script to predict expiring SSL certificates.##       AUTHOR: ‘Abhishek.Tamrakar’##       VERSION: 0.0.1##       COMPANY: Self##       EMAIL: abhishek.tamrakar08@gmail.com##       GENERATED: on 2018-05-20##       LICENSE: Copyright (C) 2018 Abhishek Tamrakar##  Licensed under the Apache License, Version 2.0 (the “License”);#  you may not use this file except in compliance with the License.#  You may obtain a copy of the License at##       http://www.apache.org/licenses/LICENSE-2.0##   Unless required by applicable law or agreed to in writing, software#   distributed under the License is distributed on an “AS IS” BASIS,#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.#   See the License for the specific language governing permissions and#   limitations under the License.## #your Variables go herescript=${0##/}exitcode=”WRITEFILE=0CONFIG=0DIR=0# functions hereusage(){cat <<EOF USAGE: $script -[cdewh]” DESCRIPTION: This script predicts the expiring SSL certificates based on the end date. OPTIONS: -c|   sets the value for configuration file which has server:port or host:port details. -d|   sets the value of directory containing the certificate files in crt or pem format. -e|   sets the value of certificate extention, e.g crt, pem, cert.crt: default -w|   sets the value for writing the script output to a file. -h|   prints this help and exit. EOFexit 1}# print info messagesinfo(){printf ‘\n%s: %6s\n’ “INFO” “$@”}# print error messageserror(){printf ‘\n%s: %6s\n’ “ERROR” “$@”exit 1}# print warning messageswarn(){printf ‘\n%s: %6s\n’ “WARN” “$@”}# get expiry for the certificatesgetExpiry(){local expdate=$1local certname=$2today=$(date +%s)timetoexpire=$(( ($expdate — $today)/(60*60*24) )) expcerts=( ${expcerts[@]} “${certname}:$timetoexpire” )} # print all expiry that was found, typically if there is any.printExpiry(){local args=$#i=0if [[ $args -ne 0 ]]; then#statementsprintf ‘%s\n’ “———————————————”printf ‘%s\n’ “List of expiring SSL certificates”printf ‘%s\n’ “———————————————”printf ‘%s\n’ “$@”  | \sort -t’:’ -g -k2 | \column -s: -t     | \awk ‘{printf “%d.\t%s\n”, NR, $0}’printf ‘%s\n’ “———————————————”fi} # calculate the end date for the certificates first, finally to compare and predict when they are going to expire.calcEndDate(){sslcmd=$(which openssl)if [[ x$sslcmd = x ]]; then#statementserror “$sslcmd command not found!”fi# when cert dir is givenif [[ $DIR -eq 1 ]]; then#statementscheckcertexists=$(ls -A $TARGETDIR| egrep “*.$EXT$”)if [[ -z ${checkcertexists} ]]; then#statementserror “no certificate files at $TARGETDIR with extention $EXT”fifor file in $TARGETDIR/*.${EXT:-crt}doexpdate=$($sslcmd x509 -in $file -noout -enddate)expepoch=$(date -d “${expdate##*=}” +%s)certificatename=${file##*/}getExpiry $expepoch ${certificatename%.*}doneelif [[ $CONFIG -eq 1 ]]; then#statementswhile read linedoif echo “$line” | \egrep -q ‘^[a-zA-Z0-9.]+:[0-9]+|^[a-zA-Z0-9]+_.*:[0-9]+’;thenexpdate=$(echo | \openssl s_client -connect $line 2>/dev/null | \openssl x509 -noout -enddate 2>/dev/null);if [[ $expdate = ” ]]; then#statementswarn “[error:0906D06C] Cannot fetch certificates for $line”elseexpepoch=$(date -d “${expdate##*=}” +%s);certificatename=${line%:*};getExpiry $expepoch ${certificatename};fielsewarn “[format error] $line is not in required format!”fidone < $CONFIGFILEfi}# your script goes herewhile getopts “:c:d:w:e:h” optionsdocase $options inc )CONFIG=1CONFIGFILE=”$OPTARG”if [[ ! -e $CONFIGFILE ]] || [[ ! -s $CONFIGFILE ]]; then#statementserror “$CONFIGFILE does not exist or empty!”fi;;e )EXT=”$OPTARG”case $EXT incrt|pem|cert )info “Extention check complete.”;;* )error “invalid certificate extention $EXT!”;;esac;;d )DIR=1TARGETDIR=”$OPTARG”[ $TARGETDIR = ” ] && error “$TARGETDIR empty variable!”;;w )WRITEFILE=1OUTFILE=”$OPTARG”;;h )usage;;\? )usage;;: )fatal “Argument required !!! see \’-h\’ for help”;;esacdoneshift $(($OPTIND — 1))#calcEndDate#finally print the listif [[ $WRITEFILE -eq 0 ]]; then#statementsprintExpiry ${expcerts[@]}elseprintExpiry ${expcerts[@]} > $OUTFILEfiEND #
O script irá auxiliar a muitos administradores de segurança  gerencie a lista de certificados ssl à serem renovados.
Abaixo segue mais alguns artigos sobre o assunto.
Os principais navegadores poderão bloquear sites HTTPs/TLS
Mozilla adiciona segundo provedor de DNS sobre HTTPS (DoH) no Firefox
 
Fonte: https://opensource.com

FONTE: Blog SempreUpdate
Agradecimentos aos autores originais desta publicação! Até a próxima!