Chrome/ium und selbst generierte SSL Zertifikate
Posted by hyper_ch on 11 Feb 2012 | Tagged as: CLI, hyper_ch
Ich habe mal wieder von FF zu Chromium gewechselt und es gibt immer noch ein paar Dinge die mir nicht passen. Hingegen ist Chromium aber bedeutend schneller…
Eines der Hauptprobleme die ich habe, ist das manage von SSL Zertifikaten. Chromium bietet keine einfache Lösung an, selbst-generierten SSL Zertifikaten zu vertrauen. Ich habe mich da ein bisschen umgesehen und dann nachfolgendes Script gebastelt.
Das nachfolgende Script einfach irgendwo hin kopieren und ausführbar machen. Es kann dann einfach mit
./chrome-ssl.sh
aufgerufen werden und es erscheinen die ganzen Möglichkeiten.
Die derzeitige Funktionalität besteht aus:
- leere Zert Datenbank kreieren oder Backup machen und neue erstellen
- Zertifikate von Server domain.com herunterladen und hinzufügen
- Installierte Zertifikate anzeigen
- Zertifikat von domain.com löschen
- CACert Zertifikate hinzufügen. Chromium traut denen standardmässig nicht
#!/bin/bash
Action=$1
Host=$2
Port=${3:-443}
function addSSL {
Temp="$(mktemp)"
Host=$1
Port=$2
exec 6>&1
exec > $Temp
echo | openssl s_client -connect ${Host}:${Port} 2>&1 |sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "$Host" -i $Temp
exec 1>&6 6>&-
}
function listSSL {
certutil -L -d sql:$HOME/.pki/nssdb
}
function delSSL {
certutil -D -n "$1" -d sql:$HOME/.pki/nssdb
}
function addCACert {
Temp1="$(mktemp)"
Temp2="$(mktemp)"
curl -k -o $Temp1 "http://www.cacert.org/certs/root.crt"
curl -k -o $Temp2 "http://www.cacert.org/certs/class3.crt"
certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "CAcert.org" -i $Temp1
certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "CAcert.org Class 3" -i $Temp2
}
function newDB {
Dir="$HOME/.pki/nssdb"
if [ -e $Dir ]
then
echo "Making backup of old nssdb"
Now="_"`date '+%Y-%m'-%d_%H:%M`
mv $Dir $Dir$Now
fi
mkdir -p $Dir
certutil -d sql:$Dir -N
chmod 700 $Dir
}
# Check Prerequisites
hash curl 2>&- || { echo >&2 "I require curl but it's not installed. Aborting."; exit 1; }
hash certutil 2>&- || { echo >&2 "I require certutil (libnss3-tools) but it's not installed. Aborting."; exit 1; }
hash openssl 2>&- || { echo >&2 "I require openssl but it's not installed. Aborting."; exit 1; }
# Check if database exists
if [ ! -d $HOME/.pki/nssdb ]
then
echo "No existing nssdb found. Creating new one"
newDB
fi
case "$Action" in
'add')
echo "Adding $Host"
addSSL $Host $Port
;;
'list')
echo "Listing ceritifcates"
listSSL
;;
'del')
echo "Deleting $Host"
delSSL $Host
;;
'CACert')
echo "Adding CACert"
addCACert
;;
'newDB')
echo "Creating new nssdb"
newDB
;;
*)
echo "Usage: $0 { add HOST [PORT] | list | delete HOST | CACert | newDB }" 1>&2
exit 1;
;;
esac
No Comments »