Chrome/ium und selbst generierte SSL Zertifikate

Posted by 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

Comments are closed.