#!/bin/bash # info: list mail ssl certificate # options: [FORMAT] # # The function of obtaining mail ssl files. #----------------------------------------------------------# # Variable&Function # #----------------------------------------------------------# # Argument definition format=${1-shell} # Includes source $VESTA/func/main.sh # JSON list function json_list() { echo '{' echo -e "\t\"MAIL\": {" echo " \"CRT\": \"$crt\"," echo " \"KEY\": \"$key\"," echo " \"CA\": \"$ca\"," echo " \"SUBJECT\": \"$subj\"," echo " \"ALIASES\": \"$alt_dns\"," echo " \"NOT_BEFORE\": \"$before\"," echo " \"NOT_AFTER\": \"$after\"," echo " \"SIGNATURE\": \"$signature\"," echo " \"PUB_KEY\": \"$pub_key\"," echo " \"ISSUER\": \"$issuer\"" echo -e "\t}\n}" } # SHELL list function shell_list() { if [ ! -z "$crt" ]; then echo -e "$crt" fi if [ ! -z "$key" ]; then echo -e "\n$key" fi if [ ! -z "$crt" ]; then echo echo echo "SUBJECT: $subj" if [ ! -z "$alt_dns" ]; then echo "ALIASES: ${alt_dns//,/ }" fi echo "VALID FROM: $before" echo "VALID TIL: $after" echo "SIGNATURE: $signature" echo "PUB_KEY: $pub_key" echo "ISSUER: $issuer" fi } # PLAIN list function plain_list() { if [ ! -z "$crt" ]; then echo -e "$crt" fi if [ ! -z "$key" ]; then echo -e "\n$key" fi if [ ! -z "$ca" ]; then echo -e "\n$ca" fi if [ ! -z "$crt" ]; then echo "$subj" echo "${alt_dns//,/ }" echo "$before" echo "$after" echo "$signature" echo "$pub_key" echo "$issuer" fi } # CSV list function csv_list() { echo -n "CRT,KEY,CA,SUBJECT,ALIASES,NOT_BEFORE,NOT_AFTER,SIGNATURE," echo "PUB_KEY,ISSUER" echo -n "\"$crt\",\"$key\",\"$ca\",\"$subj\",\"${alt_dns//,/ }\"," echo "\"$before\",\"$after\",\"$signature\",\"$pub_key\",\"$issuer\"" } #----------------------------------------------------------# # Verifications # #----------------------------------------------------------# #----------------------------------------------------------# # Action # #----------------------------------------------------------# # Parsing SSL certificate if [ ! -e "$VESTA/ssl/mail.crt" ] || [ ! -e "$VESTA/ssl/mail.key" ]; then exit fi crt=$(cat $VESTA/ssl/mail.crt |sed ':a;N;$!ba;s/\n/\\n/g') key=$(cat $VESTA/ssl/mail.key |sed ':a;N;$!ba;s/\n/\\n/g') # Parsing SSL certificate details without CA info=$(openssl x509 -text -in $VESTA/ssl/mail.crt) subj=$(echo "$info" |grep Subject: |cut -f 2 -d =) before=$(echo "$info" |grep Before: |sed -e "s/.*Before: //") after=$(echo "$info" |grep "After :" |sed -e "s/.*After : //") signature=$(echo "$info" |grep "Algorithm:" |head -n1 ) signature=$(echo "$signature"| sed -e "s/.*Algorithm: //") pub_key=$(echo "$info" |grep Public-Key: |cut -f2 -d \( | tr -d \)) issuer=$(echo "$info" |grep Issuer: |sed -e "s/.*Issuer: //") alt_dns=$(echo "$info" |grep DNS |sed -e 's/DNS:/\n/g' |tr -d ',') alt_dns=$(echo "$alt_dns" |tr -d ' ' |sed -e "/^$/d") alt_dns=$(echo "$alt_dns" |sed -e ':a;N;$!ba;s/\n/,/g') # Listing data case $format in json) json_list ;; plain) plain_list ;; csv) csv_list ;; shell) shell_list ;; esac #----------------------------------------------------------# # Vesta # #----------------------------------------------------------# exit