summaryrefslogtreecommitdiffstats
path: root/skripti/sigenca
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--skripti/sigenca/berime.txt16
-rwxr-xr-xskripti/sigenca/generiraj.sh31
-rwxr-xr-xskripti/sigenca/zahtevaj.sh24
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-----