diff options
-rw-r--r-- | skripti/sigenca/berime.txt | 16 | ||||
-rwxr-xr-x | skripti/sigenca/generiraj.sh | 31 | ||||
-rwxr-xr-x | skripti/sigenca/zahtevaj.sh | 24 |
3 files changed, 71 insertions, 0 deletions
diff --git a/skripti/sigenca/berime.txt b/skripti/sigenca/berime.txt new file mode 100644 index 0000000..60a8643 --- /dev/null +++ b/skripti/sigenca/berime.txt @@ -0,0 +1,16 @@ +SAMO ZA NAPREDNE UPORABNIKE, NA LASTNO ODGOVORNOST! + +navodila za prevzem certifikata sigenca brez brskalnika: + +echo AAAA-AAAA-AAAA | ./zahtevaj.sh <(./generiraj.sh 12345678 ~/dok/sigenca.pem 2>/dev/null) 2>/dev/null | tee ~/dok/sigenca.crt + +AAAA-AAAA-AAAA zamenjajte z avtorizacijsko kodo +12345678 zamenjajte z referečno številko +~/dok/sigenca.pem zamenjajte s potjo, kamor naj se generira zasebni ključ +~/dok/sigenca.cer zamenjajte s potjo, kamor naj se shrani certifikat +odstranite 2>/dev/null za dodatni izhod iz programa + +izluščevanje cerifikata zares ni dobro preizkušeno, zato mi prosim pišite mejl, če izluščevanje uspe. +preverite, če izluščevanje v CER datoteko uspe! če ne uspe, SHRANITE začasno datoteko s HTML izhodom, saj se v njej najverjetneje nahaja certifikat, in mi pišite mejl. + +lp diff --git a/skripti/sigenca/generiraj.sh b/skripti/sigenca/generiraj.sh new file mode 100755 index 0000000..83e9260 --- /dev/null +++ b/skripti/sigenca/generiraj.sh @@ -0,0 +1,31 @@ +#!/bin/sh +set -xeuo pipefail +umask 0077 +if [ ! $# -eq 2 ] +then + cat <<EOF +kot prvi argument bi morali navesti referenčno številko +pošljejo jo po elektronski pošti +sestavljena je iz osmih številk + +kot drugi argument bi morali navesti pot do datoteke s privatnim ključem +če datoteka ne obstaja, bom ključ generiral in ga zapisal vanjo +če datoteka obstaja, bom uporabil ključ, zapisan v njej +EOF + exit 1 +fi +[ -f $2 ] || openssl genrsa -verbose -out $2 4097 +openssl req -new -verbose -config /dev/stdin -key $2 <<EOF +[ req ] +utf8 = yes +prompt = no +distinguished_name = req_distinguished_name + +[ req_distinguished_name ] +countryName = SI +stateOrProvinceName = Slovenija +localityName = Ljubljana +organizationName = http://ni.šijanec.eu/sijanec/r/tree/skripti/sigenca +organizationalUnitName = a +commonName = $1 +EOF diff --git a/skripti/sigenca/zahtevaj.sh b/skripti/sigenca/zahtevaj.sh new file mode 100755 index 0000000..8693084 --- /dev/null +++ b/skripti/sigenca/zahtevaj.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -xeuo pipefail +umask 0077 +if [ ! $# -eq 1 ] +then + cat <<EOF +kot prvi argument bi morali navesti pot do datoteke s CSR, ki ga generirate s skriptom generiraj.sh. +EOF + exit 1 +fi +read -p "vnesite avtorizacijsko kodo (poslana kot AAAA-AAAA-AAAA po fizični pošti): " avt +csr=`cat $1` +p=`rev <<<$0 | cut -d/ -f1 | rev` +t=`mktemp -p "" $p.XXX` # da se shrani odgovor s certom na disk +curl -i -X POST https://www.si-trust.gov.si/SigenCA2/cda-cgi/clientcgi --data-urlencode "reference_number=`openssl asn1parse <<<$csr | grep -A1 commonName | tail -n1 | rev | cut -d: -f1 | rev`" --data-urlencode authcode@<(echo -n $avt) --data-urlencode "retrievedAs=rawDER" --data-urlencode "action=getServerCert" --data-urlencode "pkcs10Request=$csr" --output $t +function napaka () { + echo mogoče se je zgodila napaka pri pridobivanju certifikata. če se je, verjetno zgoraj piše razlog ^^^ +} +grep -P '^\t*<b>' /tmp/zahtevaj.sh.k4O && napaka +[ ! `head -n1 < $t | cut -d\ -f2` = 200 ] && napaka +echo če se certifikat slučajno ni pravilno izluščil iz odziva na standardni izhod, sem izhod shranil v $t +echo -----BEGIN CERTIFICATE----- +grep certCopy $t | cut -d\" -f6 +echo -----END CERTIFICATE----- |