Skip to content

Commit

Permalink
.functions: Add getcertnames
Browse files Browse the repository at this point in the history
This function shows all the names (CNs and SANs) listed in the SSL certificate for a given domain.

As always, improvements and other feedback is welcome!
  • Loading branch information
mathiasbynens committed Mar 8, 2013
1 parent 6383a3f commit 12bb9da
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions .functions
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,40 @@ function codepoint() {
echo # newline
}

# Show all the names (CNs and SANs) listed in the SSL certificate
# for a given domain
function getcertnames() {
if [ -z "${1}" ]; then
echo "ERROR: No domain specified."
return 1
fi

domain="${1}"
echo "Testing ${domain}…"
echo # newline

tmp=$(echo -e "GET / HTTP/1.0\nEOT" \
| openssl s_client -connect "${domain}:443" 2>&1);

if [[ "${tmp}" = *"-----BEGIN CERTIFICATE-----"* ]]; then
certText=$(echo "${tmp}" \
| openssl x509 -text -certopt "no_header, no_serial, no_version, \
no_signame, no_validity, no_issuer, no_pubkey, no_sigdump, no_aux");
echo "Common Name:"
echo # newline
echo "${certText}" | grep "Subject:" | sed -e "s/^.*CN=//";
echo # newline
echo "Subject Alternative Name(s):"
echo # newline
echo "${certText}" | grep -A 1 "Subject Alternative Name:" \
| head -2 | tail -1 | sed "s/DNS://g" | sed "s/ //g" | tr "," "\n"
return 0
else
echo "ERROR: Certificate not found.";
return 1
fi
}

# Add note to Notes.app (OS X 10.8)
# Usage: `note 'foo'` or `echo 'foo' | note`
function note() {
Expand Down

0 comments on commit 12bb9da

Please sign in to comment.