Arquivos mensais: fevereiro 2015

Como verificar em uma lista de domínios se algum possui certificado SSL válido | Shell Script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/bin/bash
#recebe o valor externo (passado por parâmetro na execução do script)
file=$1
#nome do arquivo HTTPS que será gerado após a listagem.
HTTPSvalidos="Meus_dominios_HTTPS-`date +%d-%m-%Y`.txt"
 
#verifica se a variável foi carregada (se o parâmetro foi passado na execução, então a variável será carregada)
if [ ! -z $file -a -f $file ]; then
	#percorre linha por linha da lista.
	for i in `cat $file`
	do
		#verifica se o domínio possui um certificado válido (ser for válido, retorna 0 e entra na condição)
		if [ $(curl --connect-timeout 7 -q --head https://$i > /dev/null 2>&1 ; echo $?) == 0 ];then
 
			#pega o IP do domínio
			ip=`ping -c 1 -t 3 $i |grep PING | awk '{print $3}' | sed -e 's/(//g' -e 's/)//g' -e 's/://g'`
			# cria uma nova lista com os domínios que possuem certificado válido e o IP correspondente de cada domínio.
			echo https://$i $ip >> ./$HTTPSvalidos
			#exibe o status da execução no console.
			echo https://$i $ip
 
		fi
	done
        echo
        	if [ -f `pwd`/$HTTPSvalidos ]; then
	        	echo Pronto! Sua lista de domínios HTTPS válidos estão em: `pwd`/$HTTPSvalidos
	        else
	        	echo Nenhum domínio foi encontrado com certificado HTTPS válido
	        fi
        echo
else
	echo 
		#apenas um help de utilização.
		echo "Lista não informada ou arquivo $file inexistente!"
                echo "Sintaxe:"
		echo "sh verificaHTTPS.sh MinhaListaDeDominios.txt"
	echo 
fi
 
	#A ideia da linha abaixo era pegar a data de expiração do certificado, mas o estranho que está retornando um data diferente.
#Ainda não conseguir resolver isso.
	#echo | openssl s_client -connect $i:443 2>/dev/null | openssl x509 -noout -dates
 
# saúde e paz.
# Salve Maria!

Este script foi testado no Linux na versão do comando “Curl 7.19.7”.
E no MAC OS X na versão do comando “curl 7.21.4”.

Obs.: A sua lista de domínios (MinhaListaDeDominios.txt) que será passada para o script, devem conter o seguinte formato:
email.exemplo.com.br
exemplo.com.br
www.exemplo.com.br
mobile.exemplo.com.br
login.exemplo.com.br
loja.exemplo.com.br