1. Home
  2. Tehniline
  3. ID-kaardi kasutamise meelespea virtuaalserveri rakendustes

ID-kaardi kasutamise meelespea virtuaalserveri rakendustes

Kuidas ID-kaardiga autentimine üldse toimib?

Eesti ID kaardi autentsuse kontroll on konfigureeritud veebiserveris toimuma klientide rakendustele nähtamatult ja see toimub sisuliselt nii:

1) Veebiserver nõuab külastajalt (s.t. tema brauserilt) sertifikaati
(kuidas külastaja brauser seda omakorda külastajalt nõuab, sõltub juba konkreetsest brauserist)

2) Saades kliendi brauserilt sertifikaadi, kontrollib veebiserver järgmist:

Alles nüüd, kui need 2 etappi on edukalt läbitud, näidatakse kaitstud kataloogi sisu või käivitatakse virtuaalserveris PHP rakendus.

Mis on tühistusnimekirjad ning kuidas nad uuenevad?

Tühistusnimekirjad on failid, kus on kirjas kõik Eesti ID-kaardi sertifikaadid, mille kehtivus on mingil ajahetkel peatatud.

Sertifitseerimiskeskuse andmetel võib tühistusnimekirjade uuendamine aega võtta maksimaalselt 12 tundi, seega võib tekkida olukord, kus sertifikaat on juba peatatud, kuid pole jõudnud tühistusnimekirjadesse. Seega on alati kõrgemat turvalisust nõudvate rakenduste puhul soovitav kasutada lisaks külastajalt ka parooli küsimist jne.

Zone virtuaalserveritesse laetakse uusi tühistusnimekirju alla igal täistunnil.

Mida on vaja ID-kaardi kasutamiseks virtuaalserveri rakendustes?

NB! ID kaardi kasutamiseks on vajalik privaatne IP-aadress. Privaatse IP-aadressi saab teenuspakettiga PRO ja selle aktiveerimiseks tuleb ühendust võtta klienditoega.

Lisatud IP tuleb siduda omalt poolt serveri haldusest sobiva hostiga (virtuaalserveri põhidomeen, või mõni selle alamdomeen).

Seejärel tuleb kataloogi, kuhu külastaja tohib saada vaid autentse ID kaardiga, lisada .htaccess fail, milles sisalduvad 2 järgmist rida:

SSLVerifyClient require
SSLVerifyDepth 2

Näiteks, et lisada ID kaardi tugi aadressile https://firmanimi.ee/minurakendus/, tuleb teha fail /secure/htdocs/minurakendus/.htaccess ning sinna sisse lisada ülalmainitud read.

Kuidas ma saan PHP-st infot külastaja ID-kaardi kohta?

Eeldades, et olete ID-kaardi toe soovitud kataloogis tööle saanud, oleks vaja nüüd rakendustes ka infot külastaja ID-kaardi kohta. Seda annab veebiserver PHP-le edasi keskkonnamuutujate (environment variables) kaudu.

Teemal “mis täpselt on keskkonnamuutujad” pikemalt ei peatuks, infoks vaid, et nende lugemiseks on PHP-s funktsioon getenv()

Kliendi identifitseerimiseks on muutuja SSL_CLIENT_S_DN, kus peituvad ka külastaja ees- ja perekonnanimi ning isikukood.

Kõiki muutujaid saate kergesti näha funktsiooniga phpinfo() ning ID-kaardi sertifikaadiga seonduvad on sektsioonis Apache Environment prefiksiga SSL_CLIENT_*

Sertifikaadil oleva isiku nimes olevate täpitähtede asemel on kodeeritud sümbolid: \\x01`\\x00 jne.

Isiku andmed sertifikaadil on kodeeritud UCS-2/UTF-16 kujule, et võimaldada näiteks täpitähtede, ‘š’ ja ‘ž’ kasutamist inimese nimes. Saadud jadas on seejärel kõik erimärgid asendatud kahe kaldkriipsu ja märgi koodiga HEX süsteemis.

Selliselt kodeeritud andmed saab laialtkasutatud UTF-8 kodeeringusse järgmise skripti abil:

<?php
function certstr2utf8 ($str) {
$str = preg_replace_callback("/\\\\x([0-9ABCDEF]{1,2})/", function ($s) { return chr(hexdec($s[1])); }, $str);

$result="";

$encoding=mb_detect_encoding($str,"ASCII, UCS2, UTF8");

if ($encoding=="ASCII") {

$result=mb_convert_encoding($str, "UTF-8", "ASCII");

} else {

if (substr_count($str,chr(0))>0) {
$result=mb_convert_encoding($str, "UTF-8", "UCS2");
} else {
$result=$str;
}
}

return $result;
}

header ("Content-Type: text/html; charset=UTF-8");

$s = getenv ('SSL_CLIENT_S_DN');
$l = preg_split ('|/|', $s, -1, PREG_SPLIT_NO_EMPTY);

foreach ($l as $e) {
list ($n, $v) = explode ('=', $e, 2);
echo $n . '=' . certstr2utf8 ($v) . "<br />";
}
?>
Updated on 28. jaan. 2023

Was this article helpful?

Related Articles