e-Szignó Hitelesítő Szerver

Verzió: 1.5

Jelen dokumentáció leírja az e-Szignó Hitelesítő szerver működését és kapcsolódási felületeit. A dokumentum a kialakítandó üzleti folyamatok, objektumok, konfigurációk, adatbázisok leírása, leképezése egy a fejlesztők számára használható, rendszerszemléletű, megvalósítás központú és kellő mélységű rendszertervé, bemutatva a kialakítandó aláíró rendszer hardver és szoftver architektúráját.

Fizikai rendszerterv

Architektúra

A teljes rendszer négyféle felületet biztosít különböző felhasználók, programok számára, hogy PKI műveleteket végezhessenek:

  • Automatizálható rendszerek számára a PKI kliensek nyújtanak MQ2File interfészen keresztül PKI szolgáltatásokat.
  • Ugyancsak programok számára MQ-s felülettel rendelkező interfésszel is rendelkezik a rendszer.
  • Egyéni felhasználók számára opcionálisan a web-Szignó biztosít webes felületet az aláíráshoz és ellenőrzéshez.
  • Az e-Szignó Hitelesítő szerver közvetlenül is megszólítható egy REST alapú interfész segítségével.

A rendszer része még az adminisztrációs és monitorozó funkciókat ellátó modul. Ezen modul webes felületén keresztül adminisztrálható a többi rendszerkomponens. Itt lehet lekérdezéseket és statisztikákat készíteni.

A teljes rendszer (szerver, két kliens, adatbázis, monitorozó modul) egy virtuális gépen fut, így nincs szükség load balancerre.

e-Szignó Hitelesítő szerver minta konfigurációja

Operációs rendszer Red Hat Enterprise Linux 6.4 x64, alap telepítés
Java virtuális gép Java 7, Linux x64
Java EE6 minősítésű applikációs szerver JBoss Application Server 7.1
Adatbázis kezelő PostgreSQL v9.2

Környezet a Web-Szignó számára (Opcionális modul):

Operációs rendszer Red Hat Enterprise Linux 6.4 x64, alap telepítés
Webszerver Apache
Futató környezet Perl

Architektúra terv

Az e-Szignó Hitelesítő szerver gépen fut egy java alkalmazás szerver (JBOSS, Glassfish), melyben futnak az aláírási szolgáltatásokat ellátó e-Szignó Hitelesítő szerver, PKI kliens és monitorozó rendszer komponensek. A monitorozó rendszer része a PostgreSQL alapú napló adatbázis is.

Ezen a gépen kaphat helyet egy opcionális a web-Szignó is, melyet egy Apache webszerver futtat.

Teljes e-Szignó Hitelesítő szerver belső felépítése

Belépés a rendszerbe

A Hitelesítő Szerver elérését a java alkalmazás szerver elé telepített Apache webszerveren vagy magán az alkalmazás szerveren kell beállítani. Lehetséges HTTP Basic vagy TLS Cert alapú authentikáció. A Hitelesítő Szerver gép adminisztrálása SSH-n keresztül történik.

Hitelesítő modul architektúra leírás

A rendszer hitelesítést végző komponense. Az e-Szignó Hitelesítő szerver egyszerre több szálon képes különböző dokumentumok hitelesítésére, vagy más PKI műveletek végrehajtására. A Hitelesítő szerver MQ alapú interfészen keresztül vagy REST alapú web szolgáltatás interfészen keresztül tartja a kapcsolatot a többi rendszerrel. Az e-Szignó Hitelesítő szerver a PKI Kliensek, a web-Szignó és egyéb külső rendszerek látják el feladatokkal.

Az e-Szignó Hitelesítő szerver a következő szolgáltatásokat nyújtja:

  • PAdES, XAdES aláírási,
  • titkosítási és titkosítás visszafejtési,
  • validálási szolgáltatások,
  • összetett PKI funkciók, mint például VHKIR folyamatok kerülhetnek beépítésre.

Az e-Szignó Hitelesítő szerver azon szabály alapján működik, hogy a kapott dokumentumon a megszólított szolgáltatás felhasználói profiljához tartozó helyi konfigurációja alapján elvégzi a feladatát és az eredményként mindig visszaadja annak a rendszernek, vagy felhasználónak, aki küldte. Hiba esetén hibakódot ad vissza válaszként a küldő kliens számára.

A Hitelesítő szerver a JBoss, Glassfish vagy egyéb applikációs szerverben futó webes alkalmazás.

Hitelesítő szerver modul belső leírás

Hitelesítő szerver felépítése

A monitorozó és adminisztrációs modul opcionális. Az aláíró szerver ezen modulok nélkül is képes ellátni a szükséges PKI funkciókat.

Webservice interfész

Ezen a REST alapú webszolgáltatás felületen keresztül kapja a Hitelesítő szerver a feladatokat és ezen keresztül küldi vissza az eredményt a hívó rendszernek szinkron módon.

Az interfészt jellemzően a PKI kliens hívja és látja el feladatokkal. Mivel a webservice felülete általános PKI funkciókat valósít meg, így a későbbiekben bármilyen másik rendszer is illeszthető hozzá.

Az interfész funkciók logikailag két csoportra oszthatók:

  • PKI funkciók: Ezek az aláírással, aláírás ellenőrzéssel, titkosítással kapcsolatos funkciók.
  • Üzemeltetési funkciók: A Hitelesítő szerver adminisztrálásával és monitorozásával kapcsolatos funkciók. Ilyen funkciók pl.: a szerver újraindítása, a tanúsítványok állapotának lekérdezése. Ezen funkiók opcionálisan részei a szervernek.

MQ interfész

A webszolgáltatás felülethez hasonló – funkcionalitásában megegyező interfészről van szó.

Az interfészt jellemzően a MQ2File PKI kliens hívja és látja el feladatokkal. Mivel a webservice felülete általános PKI funkciókat valósít meg, így a későbbiekben bármilyen másik rendszer is illeszthető hozzá.

Az interface részletes leírása a következő fejezetekben található.

PKI kliensek

A PKI kliensek olyan java web alkalmazások, melyek a Hitelesítő szerver számára végeznek elő- vagy utófeldolgozást. Ilyen funkcionalitás lehet, pl. az aláírt fájlok archívumba küldése vagy akár egy küldő rendszerhez való csatoló interfész megvalósítása is.

A kliensek feladata lehet továbbá, hogy a rajtuk átmenő forgalmat naplózzák és hiba esetén értesítsék a hívó rendszereket. Ehhez a funkcionalitáshoz a lentebb leírt adatkapcsolati interfészeket kell implementálniuk.

Ilyen kliensek a lenti specifikáció alapján könnyen készíthetők a Hitelesítő szerverhez.

Adatmodell és entitás Specifikáció

A naplóbejegyzések mentése egy adatbázisba történik. A mintakonfiguráció és a telepítő scriptek PostgreSQL v9.2 adatbázishoz készültek, de a naplózás természetesen más adatbázissal is működik.

Az adatbázisba a PKI kliens és a Hitelesítő szerver által végzett műveletek sikerességéről szóló státusz üzenetek kerülnek. Így tranzakciónként –aláírás, ellenőrzés, titkosítás, … - 2-3 bejegyzés kerül az adatbázisba.

Adatszerkezet

PKI kliensek naplóját tartalmazó tábla:

CREATE TABLE hsz.client_operation_log
(
  client_name character varying(50),
  profile_name character varying(50),
  package_name character varying(50),
  total_file_count integer,
  processed_file_count integer,
  priority integer,
  status_code integer,
  creation_date timestamp without time zone,
  last_update_date timestamp without time zone,
  CONSTRAINT pk_client_operation_log PRIMARY KEY (client_name, package_name)
)

A client_operation_log tábla minden rekordja egy-egy csomagra vonatkozik. A csomagot alkotó fájlokat a kliens elküldött a szervernek műveletvégzésre. A tábla oszlopainak magyarázata:

  • client_name – a műveletet végző kliens neve.
  • profile_name – a művelethez tartozó profil neve és beállításai
  • package_name – a csomag azonosítója, egyúttal a könyvtár neve ami a csomagot alkotó fájlokat tartalmazza
  • total_file_count – ennyi feldolgozandó fájl volt a csomagban
  • processed_file_count – a sikeresen feldolgozott fájlok darabszáma
  • priority – prioritás érték, amivel a fájl bekerült a műveleti sorba
  • status_code – a művelet sikerességét vagy hiba esetén a hiba okát jelzi
  • creation_date – a rekord keletkezésének, a művelet kezdetének időpontja
  • last_update_date – a rekordon végzett legutolsó update művelet, egybeesik a csomag feldolgozásának végével.

Hitelesítő szerver naplóját tartalmazó tábla:

CREATE TABLE hsz.server_operation_log
(
  profile_name character varying(50),
  function_name character varying(50),
  file_name character varying(256),
  parameters character varying(1000),
  status_code integer,
  creation_date timestamp without time zone
)

A server_operation_log tábla minden rekordja egy-egy fájlon végzett pki műveletet jelent. A tábla oszlopainak magyarázata:

Adatbázis létrehozás

Master SQL
DROP TABLE IF EXISTS hsz.server_operation_log;
DROP TABLE IF EXISTS hsz.client_operation_log;
DROP TABLE IF EXISTS hsz.message_log;

DROP SCHEMA IF EXISTS hsz;

CREATE SCHEMA hsz
  AUTHORIZATION signer;


CREATE TABLE hsz.client_operation_log
(
  client_name character varying(50),
  profile_name character varying(50),
  package_name character varying(50),
  total_file_count integer,
  processed_file_count integer,
  priority integer,
  status_code integer,
  creation_date timestamp without time zone,
  last_update_date timestamp without time zone,
  CONSTRAINT pk_client_operation_log PRIMARY KEY (client_name, package_name)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE hsz.client_operation_log
  OWNER TO signer;


CREATE TABLE hsz.server_operation_log
(
  profile_name character varying(50),
  function_name character varying(50),
  file_name character varying(256),
  parameters character varying(1000),
  status_code integer,
  creation_date timestamp without time zone
)
WITH (
  OIDS=FALSE
);
ALTER TABLE hsz.server_operation_log
  OWNER TO signer;

CREATE TABLE hsz.message_log
(
  message_id character varying(24),
  correlation_id character varying(24),
  business_message_type character varying(50),
  status character varying(1000),
  creation_date timestamp without time zone
)
WITH (
  OIDS=FALSE
);
ALTER TABLE hsz.message_log
  OWNER TO postgres;

Részletes interfész leírás

Szerver PKI webservice interfész funkciók

Átalánosságban elmondható, hogy az alábbi bemeneti információk szükségesek egy PKI funkció meghívásához:

  • Funkció neve – Ez határozza meg a bemeneti adaton elvégzendő műveletet.
  • Profil – A PKI környezet beállításait meghatározó profinak a neve. Részletesebb leírás a „Profil leírása” című fejezetben található
  • Bemeneti adatok – Ezen az adat(ok)on végzi el a szerver a műveletet.

A szerver http csatornán keresztül érhető el. Mivel a PKI rendszert csak más belső rendszerek használhatják, így felhasználó azonosítást nem követel meg a szerver.

A PKI rendszer interfész és a leíró WADL fájlok:

Teljes interfész application.wadl
XAdES_sign applicationxadessign.wadl
Add_archive_timestamp applicationaddarchivetimestamp.wadl
XAdES_validate applicationxadesvalidate.wadl
Info applicationinfo.wadl
Encrypt applicationencrypt.wadl
Decrypt applicationdecrypt.wadl
Pades_sign applicationpadessign.wadl
Pades_validate applicationpadesvalidate.wadl
Create_acknowledgement applicationcreateack.wadl
Check_acknowledgement applicationcheckack.wadl

XAdES_sign

A bemeneti fájl lista tartalmát elhelyezi egy e-aktában és a megadott profil alapján aláírja őket. A HTTP POST formátumban érkezik a kérés, a profil azonosítót a profileId mezőben kell szerepeltetni. Amennyiben a megadott profil azonosító nem szerepel a szerveren a program hibára fut. A feltöltött aláírandó fájloknak tetszőleges a neve. A program a feltöltött névvel fogja beilleszteni a fájt az elektronikus aktába. Az aktának a dossierTitle paraméterben megadott nevet fogja adni. A válasz az elkészült e-akta. Amennyiben isDetached értéke true, akkor nem elektronikus akta készül, hanem különálló aláírás.

Bemeneti adatok:
  • profileId – Szerver profil megnevezés
  • dossierTitle – Az elkészülő e-akta címe
  • isDetached – Különálló aláírás készüljön-e. Opcionális, alapértelmezett értéke false.
  • Aláírandó fájlok listája
Visszatérő adatok:

Az aláírt elektronikus akta, vagy a különálló aláírást tartalmazó XML, hiba esetén a Hibakezelés fejezetben meghatározott hibakódok egyike.

URL:

<server>/microsec-pki-service-server-web/PKIServlet/pki/xadessign

Példa form:
<form method="post" action="http://localhost:8080/microsec-pki-service-server-web/PKIServlet/pki/xadessign" enctype="multipart/form-data" id="formid" name="formname">
	<input type="text" id="profileid" name="profileId" value="client2"/>
	<input type="text" id="dossierTitle" name="dossierTitle" value="Cím"/>
	<input type="file" id="tobesigned1" name="tobesigned1" />
	<input type="file" id="tobesigned2" name="tobesigned2" />
	<input type="submit" id="sbmt_btn" name="sbmt_btn"/>
</form>

Add_archive_timestamp

A feltöltött aláírást ellenőrzi az alkalmazás és kiegészíti még egy időbélyeggel.

Bemeneti adatok:
  • profileId – Szerver profil megnevezés
  • es3ToBeValidated – Az aláírást tartalmazó e-akta, vagy a különálló aláírást tartalmazó XML.
  • inFileX – Különálló aláírás esetén az aláírt fájok.
  • isDetached – Különálló aláírás készüljön-e. Opcionális, alapértelmezett értéke false.
Visszatérő adatok:

Az aláírt elektronikus akta, vagy a különálló aláírást tartalmazó XML, hiba esetén a Hibakezelés fejezetben meghatározott hibakódok egyike.

URL:

<server>/microsec-pki-service-server-web/PKIServlet/pki/addarchivetimestamp

Példa form:
<form method="post" action="http://localhost:8080/microsec-pki-service-server-web/PKIServlet/pki/addarchivetimestamp" enctype="multipart/form-data" id="formid" name="formname">
	<input type="text" id="profileid" name="profileId" value="client2"/>
	<input type="file" id="es3ToBeValidated" name="es3ToBeValidated" />
	<input type="file" id="inFile1" name="inFileX1" />
	<input type="submit" id="sbmt_btn" name="sbmt_btn"/>
</form>

XAdES_validate

A bemeneti e-aktát megnyitja és ellenőrzi a benne található összes aláírást és időbélyeget. A HTTP POST formátumban érkezik a kérés, a profil azonosítót a profileId mezőben kell szerepeltetni. Amennyiben a megadott profil azonosító nem szerepel a szerveren a program hibára fut. Az ellenőrzés végén a program egy XML formátumú választ ad.

Bemeneti adatok:
  • profileId – Szerver profil megnevezés
  • es3ToBeValidated – Az aláírást tartalmazó e-akta
  • minXadesType <bes/t/c/x/x-l/a> – Elfogadott minimális XAdES típsu. Opcionális paraméter.
  • inFileX – Különálló aláírásnál azon fájlok, melyekre hivatkozik az aláírás fájl. Az X 0-tól kezdődő folyamatosan növekvő számot jelöl. A name attribútumba az aláírásban meghivatkozott eredeti fájl nevet kell megadni.
Visszatérő adatok:

Az aláírás ellenőrzés eredményét jelző validációs XMLt ad. Az XML formátuma a Szerver XML válasz formátumának leírása fejezetben található

URL:

<server>/microsec-pki-service-server-web/PKIServlet/pki/xadesvalidate

Példa form:
<form method="post" action="http://localhost:8080/microsec-pki-service-server-web/PKIServlet/pki/xadesvalidate" enctype="multipart/form-data" id="formid" name="formname">
	<input type="text" id="profileid" name="profileId" value="client1"/>
	<input type="text" id="minXadesType" name="minXadesType" value="t"/>
	<input type="file" id="es3ToBeValidated" name="es3ToBeValidated" />
	<input type="submit" id="sbmt_btn" name="sbmt_btn"/>
</form>

Info

A bemeneti e-aktát megnyitja és a tartalmát listázza. A listát XML formában állítja elő. A lista tartalmazza a dokumentumok, az aláírások részleteit is.
A HTTP POST formátumban érkezik a kérés. A listázandó fájlt az inFile paraméterben kell feltölteni.

Bemeneti adatok:
  • inFile – Elektronikus akta
Visszatérő adatok:

A dosszié tartalom XML. Az XML formátuma a Szerver XML válasz formátumának leírása fejezetben található

URL:

<server>/microsec-pki-service-server-web/PKIServlet/pki/info

Példa form:
<form method="post" action="http://localhost:8080/microsec-pki-service-server-web/PKIServlet/pki/info" enctype="multipart/form-data" id="formid" name="formname">
	<input type="file" id="inFile" name="inFile" />
	<input type="submit" id="sbmt_btn" name="sbmt_btn"/>
</form>

Encrypt

A bemenetben szereplő elektronikus aktát betitkosítja a megadott címzettek számára. A címzett tanúsítvány fájlokat bármilyen néven föl lehet tölteni, kivéve az inFile paramétert. A HTTP POST formátumban érkezik a kérés, a profil azonosítót a profileId mezőben kell szerepeltetni. Amennyiben a megadott profil azonosító nem szerepel a szerveren, a program hibára fut.

Bemeneti adatok:
  • profileId – Szerver profil megnevezése
  • inFile – A titkosítani kívánt e-akta
  • Címzett tanúsítványok listája
Visszatérő adatok:

A titkosított e-akta

URL:

<server>/microsec-pki-service-server-web/PKIServlet/pki/encrypt

Példa form:
<form method="post" action="http://localhost:8080/microsec-pki-service-server-web/PKIServlet/pki/encrypt" enctype="multipart/form-data" id="formid" name="formname">
	<input type="text" id="profileid" name="profileId" value="client1"/>
	<input type="file" id="inFile" name="inFile" />
	<input type="file" id="enc1" name="enc1" />
	<input type="file" id="enc2" name="enc2" />
	<input type="file" id="enc3" name="enc3" />
	<input type="submit" id="sbmt_btn" name="sbmt_btn"/>
</form>

Decrypt

A bemeneti e-aktán lévő titkosítást feloldja a profilban szereplő kulccsal.

Bemeneti adatok:
  • profileId – Szerver profil megnevezése
  • inFile – Titkosított e-akta
Visszatérő adatok:

A kititkosított e-akta tartalma.

URL:

<server>/microsec-pki-service-server-web/PKIServlet/pki/decrypt

Példa form:
<form method="post" action="http://localhost:8080/microsec-pki-service-server-web/PKIServlet/pki/decrypt" enctype="multipart/form-data" id="formid" name="formname">
	<input type="text" id="profileid" name="profileId" value="client1"/>
	<input type="file" id="inFile" name="inFile" />
	<input type="submit" id="sbmt_btn" name="sbmt_btn"/>
</form>

Pades_sign

A bejövő pdf dokumentumot aláírja a meghivatkozott profil alapján. A HTTP POST formátumban érkezik a kérés, a profil azonosítót a profileId mezőben kell szerepeltetni. Amennyiben a megadott profil azonosító nem szerepel a szerveren, a program hibára fut.

Bemeneti adatok:
  • profileId – Szerver profil megnevezése
  • inFile – Az aláírandó PDF dokumentum
Visszatérő adatok:

Az aláírás ellenőrzés eredményét jelző hibakód (validációs XML)

URL:

<server>/microsec-pki-service-server-web/PKIServlet/pki/padessign

Példa form:
<form method="post" action="http://localhost:8080/microsec-pki-service-server-web/PKIServlet/pki/padessign" enctype="multipart/form-data" id="formid" name="formname">
	<input type="text" id="profileid" name="profileId" value="client2"/>
	<input type="file" id="inFile" name="inFile" />
</form>

Pades_validate

A bemeneti pdf dokumentumot megnyitja és ellenőrzi a benne található összes aláírást és időbélyeget. A HTTP POST formátumban érkezik a kérés, a profil azonosítót a profileId mezőben kell szerepeltetni. Amennyiben a megadott profil azonosító nem szerepel a szerveren a program hibára fut.

Bemeneti adatok:
  • profileId – Szerver profil megnevezése
  • inFile – Az aláírást tartalmazó PDF fájl
Visszatérő adatok:

Az aláírás ellenőrzés eredményét jelző hibakód (validációs XML)

URL:

<server>/microsec-pki-service-server-web/PKIServlet/pki/padessign

Példa form:
<form method="post" action="http://localhost:8080/microsec-pki-service-server-web/PKIServlet/pki/padesvalidate" enctype="multipart/form-data" id="formid" name="formname">
	<input type="text" id="profileid" name="profileId" value="client2"/>
	<input type="file" id="inFile" name="inFile" />
</form>

Create_acknowledgement

Az inFile paraméterben feltöltött bemeneti fájlra készít tértivevényt a kiválasztott szerver profil alapján. A HTTP POST formátumban érkezik a kérés, a profil azonosítót a profileId mezőben kell szerepeltetni. Amennyiben a megadott profil azonosító nem szerepel a szerveren a program hibára fut.

Bemeneti adatok:
  • profileId – Szerver profil megnevezése
  • inFile – A tértivevényezni kívánt dokumentum
Visszatérő adatok:

Az elkészült tértivevény

URL:

<server>/microsec-pki-service-server-web/PKIServlet/pki/createack

Példa form:
<form method="post" action="http://localhost:8080/microsec-pki-service-server-web/PKIServlet/pki/createack" enctype="multipart/form-data" id="formid" name="formname">
	<input type="text" id="profileid" name="profileId" value="client1"/>
	<input type="file" id="inFile" name="inFile" />
	<input type="submit" id="sbmt_btn" name="sbmt_btn"/>
</form>

Check_acknowledgement

Az inEt3 paraméterben feltöltött tértivevényt ellenőrzi az originalFile paraméterben feltöltött fájl alapján. A HTTP POST formátumban érkezik a kérés, a profil azonosítót a profileId mezőben kell szerepeltetni. Amennyiben a megadott profil azonosító nem szerepel a szerveren a program hibára fut.

Bemeneti adatok:
  • profileId – Szerver profil megnevezése
  • inEt3 – Az ellenőrizni kívánt tértivevény
  • originalFile – Az eredeti fájl amiről a tértivevény készült
Visszatérő adatok:

Az ellenőrzésről készült validációs XML. Az XML formátuma a a Szerver XML válasz formátumának leírása fejezetben található

URL:

<server>/microsec-pki-service-server-web/PKIServlet/pki/checkack

Példa form:
<form method="post" action="http://localhost:8080/microsec-pki-service-server-web/PKIServlet/pki/checkack" enctype="multipart/form-data" id="formid" name="formname">
	<input type="text" id="profileid" name="profileId" value="client1"/>
	<input type="file" id="inEt3" name="inEt3" />
	<input type="file" id="originalFile" name="originalFile" />
	<input type="submit" id="sbmt_btn" name="sbmt_btn"/>
</form>

Szerver PKI MQ interfész funkciók

Az MQ üzenetek adat részében az alábbi xml sémadefinícióknak megfelelő xml-t kell elhelyezni. Egy ilyen kérésre az ugyancsak sémával leírt xml válasz érkezik.

request response
XAdES_sign xadessignreq.xsd xadessignres.xsd
XAdES_validate xadesvalidatereq.xsd xadesvalidateres.xsd
Info inforeq.xsd infores.xsd
Encrypt encryptreq.xsd encryptres.xsd
Decrypt decryptreq.xsd decryptres.xsd
Pades_sign padessignreq.xsd padessignres.xsd
Pades_validate padesvalidatereq.xsd padesvalidateres.xsd
Create_acknowledgement createackreq.xsd createackres.xsd
Check_acknowledgement checkackreq.xsd checkackres.xsd

Szerver XML válasz formátumának leírása

Az egyes funkciók jellemzően vagy az aláírt fájlal térnek vissza, vagy az adott aláírt állományról készített XML fomátumú reporttal.

Amennyiben XAdES aláírásról van szó, úgy az xml formátuma megfelel az érvényben lévő szabványnak:
ETSI EN 319 132-1

Ha e-akta fomrátumú a visszatérési érték, akkor a következő linken található a formátum leírás:
https://e-szigno.hu/tudasbazis/e-akta-formatum-specifikacioja.html

Az XML formátumú reportok leírását az e-Szignó fejlesztő csomagban is megtalálható parancssori e-Szignó intefész dokuemtációban találja:
eszigno3 használati útmutató

Monitor funkciók

PKI klienssekkel kapcsolatos funkciók

A forgalmi adatok egy-egy táblázatos formában tekinthetők meg: (példa)

Prioritás Kliens profil Összesen Feldolgozatlan
5 kivonat 10 5
6 szerződés 14 3

Hitelesítő szerverrel kapcsolatos funkciók

Konfiguráció

A konfigurációs fájlok helyét a Java futtató környezet tulajdonságaiban kell beállítani. A JVM indításakor a –D<propName>=<value> paraméterekkel állíthatjuk be az elérési utakat.

Szerver konfiguráció

A szerver két property fájl alapján végzi a működését:

Konfigurációs paraméterek:

Szerver tulajdonságok

A szerver tulajdonságok határozzák meg a különböző PKI folyamatok alap beállításait. Ezek a beállítások lassan változó paraméterek. A szerver tulajdonságok elérési helyét a JVM microsec.pki.server.propertyFile paraméterben kell megadni.

A szerver tulajdonságok a következők lehetnek:

Név Érték Leírás
eszigno_digest_algorithm sha1 vagy sha256 a használandó lenyomatképző algoritmus az aláírás létrehozása esetén. Alapértelmezett értéke "sha256".
eszigno_dir Könyvtár elérési út Azt a könyvtárat kell beállítani, amiben az e-Szignó található. Ebből a könyvtárból származtatja az futtatható állomány helyét a jar fájlok helyét. pl.:
<eszigno_dir>/bin/
<eszigno_dir>/bin/eszigno3
eszigno_work_dir Könyvtár elérési út Egy munkakönyvtárat kell megadni, melybe a szerver átmeneti fájlokat helyez el a futás során.
eszigno_log_dir Könyvtár elérési út Az e-Szignó ebbe a könyvtárba helyezi el a log fájlokat. A naplózásról a Naplózás fejezetben olvashatnak részletesen.
eszigno_intermediate_cert_dir Könyvtár elérési út A tanúsítványok ellenőrzéséhez használható köztes HSZ tanúsítványokat tartalmazó könyvtár(ak). Több könyvtár is megadható ";" karakterrel elválasztva. Nincs alapértelmezett értéke
eszigno_proxy_host szerver cím A HTTP kapcsolódáskor igénybe veendő HTTP/1.1 proxy szerver elérési címe. Nincs alapértelmezett értéke
eszigno_proxy_user felhasználó név Proxy eléréshez tartozó felhasználónév
eszigno_proxy_password jelszó Proxy eléréshez tartozó jelszó
eszigno_proxy_port port szám A HTTP kapcsolódáskor igénybe veendő HTTP/1.1 proxy szerver elérési címének portja. Nincs alapértelmezett értéke
eszigno_reg_file_path Fájl elérési út A regisztrációs fájl elérési útja. Alapértelmezett értéke "server_reg.xml"
eszigno_decryptor_key_form <pfx/pem> A titkosító kulcs formátuma
eszigno_time_out_millisec szám miliszekundumokban A kapcsolódási time-out érték milliszekundum egységben. Alapértelmezett értéke "0", ami azt jelenti, hogy egyáltalán nincs time-out!
eszigno_trusted_cert_dir Könyvtár elérési út az eszigno3 által megbízhatónak elfogadandó tanúsítványokat tartalmazó könyvtár(ak) (a tanúsítványok PEM vagy DER formátumban, .cer vagy .crt kiterjesztéssel a megadott könyvtárban találhatók). Több könyvtár is megadható szóköz karakterrel elválasztva. Nincs alapértelmezett értéke.
eszigno_ocsp_trusted_cert_dir Könyvtár elérési út az eszigno3 által az OCSP válaszadó tanúsítványok ellenőrzésekor megbízhatónak elfogadandó tanúsítványokat tartalmazó könyvtár(ak) (a tanúsítványok PEM vagy DER formátumban, .cer vagy .crt kiterjesztéssel a megadott könyvtárban találhatók). Több könyvtár is megadható szóköz karakterrel elválasztva. Alapértelmezett értéke a trusted_cert_dir értéke.
eszigno_xades_version Lehetséges értékei "1.2.2" "1.3.2" vagy "1.4.2" Az újonnan létrehozandó aláírások XAdES verzióját állítja be. Alapértelmezett értéke "1.3.2"
eszigno_test "yes" vagy "no" Amennyiben a programhoz tartozó regisztrációs fájl csak a program tesztelési célból történő használatát engedélyezi, ezen opciónak "yes" értéket kell adni, különben az e-Szignó 1-es hibakóddal leáll. Alapértelmezett értéke "no"
server_upload_dir Könyvtár elérési út A szerverre feltöltött fájlok ebbe a könyvtárba kerülnek ideiglenesen. A rendszer automatikusan törli ezeket a fájlokat.
daemon_port Port szám A port, amelyen az e-Szignó démon folyamat fogadja a beérkező kéréseket.
daemon_children_number Szám Az e-Szignó fő démon folyamat általlétrehozandó gyermekfolyamatok száma
eszigno_run_mode "cmd", "daemon", "daemon+soap", "winservice" Az e-Szignó futás módját állítja be. A "cmd" érték a parancssori e-Szignó futtatását jelenti. A "daemon" és a "daemon+soap" daemon módban futtatja az e-Szignó, ezek windows operációs rendszeren nem értelmezettek. Használatukkal nagyobb performancia érhető el. A "winservice" csak windows operációs rendszeren használható.
db_resource_jndi_name Alkalmazás szerverben beállított JNDI név. Opcionális paraméter. Ha meg van adva, akkor a Hitelesítő szerver kapcsolódik a JNDI névvel megjelölt adatforráshoz, és minden műveletről készít egy naplóbejegyzést a hsz.server_operation_log táblába. Ha nincs megadva, akkor a bejegyzések az alkalmazás naplófájlba kerülnek.

A következő beállítások minden online mq feldogozó szálra volantkoznak:

Név Érték Leírás
mq_messageid_prefix 4 karakterből álló string Az mq üzenet azonosítól első 4 bájtja. A program ISO 8859-1 (819) kódolással értelmezi. Ha 4 karakternél rövidebbet adunk meg, akkor a program az online mq kommunikáció funkció ki lesz kapcsolva. Ha 4 karakternél hosszabbat, akkor pedig csak az első 4-et fogja használni a program.
mq_max_message_length Egész szám Opcionális. A program által készített mq válasz üzenetek maximális mérete bájtban. Alapértelmezés: 3 000 000
mq_stop_timeout_sec Egész szám Opcionális. A program leállításkor maximum ennyi másodpercig vár egy MQ feldogozó szál leállítására.

A következő paraméterek az online mq feldogozó szálak egy-egy csoportjára vonatkoznak.
A csoportokat az "mq" pefix utáni egész számmal azonosítjuk.

Név Érték Leírás
mq<csoport_azonosító>_qmgr Queue manager neve Azon queue manager neve amihez a feldolgozó szálak ezen csoportja kapcsolódik.
mq<csoport_azonosító>_ host gépnév vagy ip cím Host gép, amin a queue manager található.
mq<csoport_azonosító>_port port szám MQ kommunikációs port.
mq<csoport_azonosító>_channel Kommunikációs csatorna neve. Azon csatorna neve amin a feldogozó szálak ezen csoportja kapcsolódik.
mq<csoport_azonosító>_input_queue Queue neve A feldolgozó szálak ezen csoportja erről a queue-ról fogja fogadni az üzenetek.
mq<csoport_azonosító>_input_timeout_sec Egész szám A feldolgozó szálak ezen csoportja üzenet olvasásakor maximum ennyi másodpercig várakozik arra, hogy beérkezzen egy üzenet. Ha ez az idő letelik, a program újrapróbálkozik az üzenetolvasással.
mq<csoport_azonosító>_output_queue Queue neve A feldolgozó szálak ezen csoportja erre a queue-ra írja a válaszüzeneteket.
mq<csoport_azonosító>_reconnect_wait_sec Egész szám A feldolgozó szálak ezen csoportja kapcsolati hiba esetén ennyi másodpercig várakozik, majd újra kiépíti a kapcsolatot a queue managerrel és megnyitja az input és output queue-kat.
mq<csoport_azonosító>_reconn_count Egész szám A feldolgozó szálak ezen csoportja kapcsolati hiba esetén ennyiszer próbálja meg újraépíteni a kapcsolatot a queue managerrel.
mq<csoport_azonosító>_workers_count Egész szám A feldolgozó szálak száma ezen a csoporton belül.

Példa server.properties:

eszigno_digest_algorithm = sha256
eszigno_dir = /msc/opt/eszigno3/product/current
eszigno_work_dir = /msc/srv/signer/var/eszigno
eszigno_intermediate_cert_dir = /msc/srv/signer/truststore/intermediate_certs
eszigno_signer_trusted_cert_dir = /msc/srv/signer/truststore/signer_trusted_certs_teszt
eszigno_ocsp_trusted_cert_dir = /msc/srv/signer/truststore/ocsp_trusted_certs_teszt
eszigno_tsa_trusted_cert_dir = /msc/srv/signer/truststore/tsa_trusted_certs_teszt
eszigno_trusted_cert_dir = /msc/srv/signer/truststore/crypter_trusted_certs_teszt
eszigno_ssl_trusted_cert_dir = /msc/srv/signer/truststore/ssl_trusted_certs

eszigno_log_dir = /msc/logs/SIGNER-LOGS/eszigno
eszigno_reg_file_path = /msc/opt/eszigno3/server_reg.xml
eszigno_signer_key_form = pfx

eszigno_time_out_millisec = 10000
eszigno_xades_version = 1.3.2

daemon_port = 8888
daemon_children_number = 10

server_upload_dir = /msc/srv/signer/var/server/uploaded
eszigno_run_mode = cmd

#db_resource_jndi_name=java:jboss/datasources/SignerDS

mq_messageid_prefix=ESIG
mq_max_message_length=3000000
mq_stop_timeout_sec=5

mq0_qmgr=ESIG_DV
mq0_host=127.0.0.1
mq0_port=1414
mq0_channel=ESIG_DV_CH_01
mq0_input_queue=ESIGMAIN_IN_P
mq0_input_timeout_sec=5
mq0_output_queue=ESIGMAIN_OUT_A
mq0_reconnect_wait_sec=30
mq0_reconn_count=2
mq0_workers_count=2

Profilok

Profilok segítségével lehet többféle aláírást készíteni. Ezek a beállítások lassan változó paraméterek. A profilokat egy könyvtárban kell elhelyezni. A könyvtár elérési helyét a JVM microsec.pki.server.userProfilesDir paraméterben kell megadni.

Név Érték Leírás
eszigno_timestamp_provider_host host név Az szerver host neve, ahová azonosítani szeretnénk magunkat, pl.: időbélyeg kérés esetén.
eszigno_timestamp_url_list URL lista Használandó időbélyeg szolgáltatók listája, az URL-ek szóközzel elválasztva.
eszigno_auth_key Fájl elérési út Felhasználó azonosításra szolgáló kulcs.
eszigno_auth_key_password jelszó Az eszigno_auth_key paraméterben megadott kulcshoz tartozó jelszó
eszigno_auth_http_username Felhasználó név Basic autentikációhoz tartozó felhasználó név
eszigno_auth_http_password jelszó Az eszigno_auth_http_username paraméterben megadott felhasználó névhez tartozó jelszó
decryptor_key pfx elérési útja A rejtjelező magánkulcsa, PFX formátumú kulcsnál az elérési út.
decryptor_password jelszó A decryptor_key paraméterben megadott rejtjelező magánkulcs jelszava. Nincs alapértelmezett értéke.
signer_key pfx elérési útja Az aláíró magánkulcsa, az aláírás egy menetben történő létrehozásához szükséges megadni. PFX formátumú kulcsnál az elérési út.
signer_password jelszó Az aláírói magánkulcs jelszava. Nincs alapértelmezett értéke.
eszigno_signer_key_form "pfx", "pem", "pkcs11" Az aláírói magánkulcs konténer formátuma, az alapértelmezett formátum PFX
xades_type "bes", "t", "c", "x", "x-l", "a" az aláíráskor, ill. ellenőrzéskor létrehozandó XAdES-típus. Amennyiben a -sig_policy paraméter megadásra kerül, a létrejövő aláírás BES (Basic Electronic Signature) helyett EPES (Explicit Policy ES). Jelenleg az "x" és "x-l" beállítás ekvivalens, mindkettő XAdES-XL típusú aláírást eredményez. A "bes" feletti típusok esetén, amennyiben az adott típus nem hozható létre (pl. "t" került megadásra, de nem elérhető az időbélyeg szolgáltató), az e-Szignó egy "gyengébb" aláírást hoz létre és hibakóddal figyelmeztet. Az opció alapértelmezett értéke "bes".
revocation_checking_mode "off", "crl", "ocsp" vagy "ocsp/crl" a tanúsítványok visszavonási állapota ellenőrzésének módja. Amennyiben az ellenőrizendő aláírás már tartalmaz magában csatolt visszavonási információkat, akkor az alkalmazás azok alapján ellenőriz, ha az egyezik a beállított visszavonási móddal. Azaz, ha például az archív aláírás OCSP válaszokat tartalmaz magában, és a visszavonás ellenőrzés is OCSP-re van állítva, akkor a tárolt válasz alapján ellenőriz az alkalmazás. Az archív aláírás ellenőrzése függetlenül ettől a beállítástól kikapcsolható. Alapértelmezett értéke "off".
eszigno_ocsp_url_list Szóközökkel elválasztott URL lista az AIA kiterjesztésben talált URL-en kívül használandó OCSP szolgáltató URL-ek.
acknowledgement_version "v1" vagy "v2" Ezzel az opcióval a létrehozandó átvételi elismervények formátumát lehet beállítani. A "V1" az e-akta alapú, régi típusú tértivevényt jelenti, a "V2" a különálló aláírás alapú, egyszerű XAdES tértivevény. Az alapértelmezett érték "V1"
wait_for_grace_period "yes" vagy "no" Ha ezen opció értéke "yes", az e-Szignó csak az aláírás (megbízható) időpontja után kibocsátott CRL-eket vagy OCSP válaszokat fogadja el.
validate_ocsp_responder "yes" vagy "no" Az opció segítségével beállíthatjuk, hogy az e-Szignó ellenőrizze-e az OCSP válaszadó visszavonási állapotát. Alapértelmezett értéke "yes"

Példa profil:

eszigno_timestamp_url_list = https://btsa.e-szigno.hu/tsa
eszigno_auth_http_username = teszt
eszigno_auth_http_password = teszt
eszigno_timestamp_provider_host = e-szigno.hu
signer_key = /msc/opt/eszigno3/product/current/pfx/peterke.pfx
signer_password = 12345
eszigno_signer_key_form = pfx
xades_type = a
revocation_checking_mode = ocsp
wait_for_grace_period = yes
ocsp_url_list = http://rootocsp2009.e-szigno.hu

Monitorozó rendszer konfiguráció

A monitorozó rendszer két konfigurációs fájlt használ melyek elérési útját JVM opciókban kell megadni:

  • -Dmicrosec.pki.monitor.propertyFile – A pki kliensek és a Hitelesítő szerver elérésének beállításai
  • -Dmicrosec.pki.monitor.log4j.propertyFile – naplózással kapcsolatos beállítások

A pki kliensek és a Hitelesítő szerver elérésének beállításait tartalmazó konfigurációs fájl mezői:

Név Érték Leírás
pki_client<i>_url http://<gépnév vagy ip cím>/microsec-pki-service-client-web/pkiclientfolderworker Az i-edik PKI kliens url-je
pki_server_url http://<gépnév vagy ip cím>/microsec-pki-service-server-web/PKIServlet A Hitelesítő szerver url-je
db_resource_jndi_name Alkalmazás szerverben beállított JDBC resource neve A PKI kliens és szerver logokat tartalmazó adatbázis elérhetősége.
notification_email_recipients e-mail címek ; -vel elválaszva A rendszer által küldött e-mail üzenetek címzettjei. A rendszer akkor is elindul, ha nincs megadva, de az e-mail értesítések funkció ki lesz kapcsolva.
notification_email_sender e-mail cím A rendszer által küldött e-mail üzenetek feladója. Ha nincs megadva, akkor pki_service_monitor@microsec.hu
notification_cert_days_till_expiration 0 vagy pozitív egész szám A tanúsítványok lejáratáról ennyi nappal a lejárat előtt értesít. Ha nincs megadva, akkor 0, tehát csak a lejárat napján értesít.
notification_cert_start_time időpont. Formátuma: hh:mi:ss A tanúsítványok lejáratáról minden nap ebben az időpontban ellenőrzi. Ha nincs megadva, akkor 10:00:00

A konfigurációs fájl tartalmazhat a Java mail api-nak szóló beállításokat. Ilyenek például:

Név Érték Leírás
mail.smtp.host gépnév vagy ip cím Az smtp szerver címe. Ha nincs megadva, akkor az e-mail értesítések funkció ki lesz kapcsolva.
mail.smtp.port pozitív egész szám Az smtp szerver portja. Ha nincs megadva, akkor 25

Példa konfigurációs fájl:

pki_server_url=http://pkiserver/microsec-pki-service-server-web/PKIServlet
db_resource_jndi_name=java:jboss/datasources/SignerDS
notification_email_recipients = tesztelo.peterke@microsec.hu
notification_email_sender = pki_monitor.teszt@microsec.hu
notification_cert_days_till_expiration = 30
notification_cert_start_time = 10:30:00
mail.smtp.host = teszt.smtp.hu
mail.smtp.port = 25

Hibakezelés

A Hitelesítő Szerver HTTP státusz kódokkal tudatja a klienssel a hiba tényét. MQ esetében pedig maga a szerver kommunikál az MQ-val.

Hibakezelés REST-es felület esetén

Hibakód Jelentése
200 Minden rendben A kliensnek a szokásos normál folyamaton kell végigmennie és az elkészült és visszakapott dokumentumot a specifikált módon átadnia a Megrendelő belső core rendszerei számára.
471 Dokumentum hiba Ebben az esetben a kliensnek el kell mentenie a dokumentumot egy kivételeket tartalmazó könyvtárba további szakértői vizsgálat céljából. Ezt a dokumentumot nem szabad újraküldenie.
400-499 Kliens hiba A kliens hibájából hiúsul meg a művelet a szerver oldalon. Tipikusan hibásak a szervernek átadott adatok, Pl.: nem létező profilra hivatkozik a kliens. Ekkor a klienst le kell állítani és elhárítani a hibát.
500-599 Szerver hiba Szerver hibát akkor dob a rendszer, ha maga a szerver hibásan működik, vagy külső szolgáltatók nem érhetőek el. A kliensnek ekkor át kell kapcsolni várakozásra, majd a specifikált idő elteltével újra kell próbálkoznia.

Hibakezelés MQ felület esetén

Az MQ felület RuntimeExceptiont dob hiba esetében és naplóban rögzíti a hiba tényét és a tranzakciót visszavonja (rollback).

Naplózás

A rendszerek kétféle naplózást használnak: műszaki és dokumentum-auditnaplózás. A műszaki csak fájl alapú, míg az audit napló lehet fáj, vagy adatbázis alapú naplózás.

A fájl alapú naplózáshoz a log4j rendszert alkalmazzuk.

Műszaki naplózás

A rendszer működési folyamatainak idő- és térbeli követésére és a hibák pontos feltérképezésére való. A naplók alapján az üzemeltetőknek esélyük van a hibák okainak kiderítésére, a szoftverfejlesztőknek pedig a forráskódokban a hibás működést előidéző-, vagy nem megfelelően kezelő részek beazonosítására és kijavítására.

A naplózási szintek a naplózott adatok tartamát és részletességét befolyásolják. Teszteletlen rendszernél a legrészletesebb naplózás szükséges, míg üzemszerű működésnél elegendő a hibák okainak kiírása.

Naplózási szint
DEBUG Lépésről lépésre nyomon követi a folyamatokat. Minden egyes lépésről érdemi információkat ír ki. Azaz mely dokumentumnak, mikor és hol kezdte meg a feldolgozását, ez milyen lépéseken keresztül zajlott le, és mi lett a végeredmény.
INFO A rendszeren áthaladó dokumentumok feldolgozásainak mérföldköveit írja ki. Ezek általában tartalmazzák a könyvtár és a dokumentum nevét és a feldolgozás sikerességét.
WARNING Rendellenes működésre vagy dokumentumra utaló jelek esetén használjuk, amikor éppen a rendszer helyes működése miatt derül fény egy rendellenességre. Pl.: üres bemenő könyvtárat kellene feldolgozni, vagy dokumentumot ellenőrzésre kapott a rendszer és ezen ez elbukott. Tehát a megkezdett folyamat végigvihető csak rendellenesnek ítélt végeredménnyel zárult le.
ERROR Amennyiben egyértelműen hiba következett be a rendszer működésében és a megkezdett feldolgozási ágon a folyamat nem folytatható tovább.

Auditnaplózás

A feldolgozási folyamatban résztvevő dokumentumokról és könyvtárakról ad egyértelműen pozitív vagy negatív feldolgozási státuszt egyetlen egyszer. A naplózott adatokból egyértelműen beazonosítható a dokumentum vagy könyvtár, helye, profilja, prioritása, időpontja és státusza.

Ebből a naplóból deríthető ki legkönnyebben, hogy egy dokumentum vagy könyvtár feldolgozása el sem volt kezdhető, vagy nem volt továbbküldhető vagy sikeres volt.

Az audit napló alapértelmezésben fájl alapú és a műszaki naplóba íródik a feldolgozási lépések közé INFO szinten. Konfigurációs fájlban azonban előírható az adatbázis alapú naplózás, ekkor megszűnik a fájl alapú kiírás. Az adatbázisba naplózásnál nincs lehetőség naplózási szintet állítani, azaz minden esetben a pozitív vagy negatív besorolás kiírásra kerül.

Az adatbázis alapú naplót a PKI Monitorozó rendszerrel lehet legkönnyebben kezelni.

A PKI rendszer működéséhez szükséges URL-ek a tűzfal konfigurációs beállításokhoz

Éles szolgáltatás Teszt szolgáltatás
Időbélyegzés https://btsa.e-szigno.hu/* https://bteszt.e-szigno.hu/*
Tanúsítványok http://www.e-szigno.hu/*
http://www.netlock.hu/index.cgi
http://nqca.mavinformatika.hu/cer/*
http://qca.mavinformatika.hu/cer/*
http://hiteles.mavinformatika.hu/cer/*
https://srv.e-szigno.hu/*
OCSP kérés http://rootocsp2009.e-szigno.hu
http://qocsp2009.e-szigno.hu
http://a3ocsp2009.e-szigno.hu
http://a2ocsp2009.e-szigno.hu
http://sslocsp.e-szigno.hu
http://www.netlock.hu/ocsp.cgi
http://teszt.e-szigno.hu/*
http://bteszt.e-szigno.hu/*
CRL letöltés http://crl.e-szigno.hu/*
http://www.e-szigno.hu/*
http://www.netlock.hu/index.cgi
http://trust-sign.mavinformatika.hu/CA/*
http://qca.mavinformatika.hu/crl/*
http://nqca.mavinformatika.hu/crl/*
http://www.trust-sign.hu/CA/*
http://teszt.e-szigno.hu/*
http://bteszt.e-szigno.hu/*
http://tesztca.mavinformatika.hu/crl/*
VIEKR rendszer https://viekr.mbvk.hu/viekr/ https://teszt.viekr.mbvk.hu/

IP címek (Ezek változhatnak)

Éles szolgáltatás Teszt szolgáltatás
a2ocsp2009.e-szigno.hu 193.42.222.125
a3ocsp2009.e-szigno.hu 193.42.222.125
btsa.e-szigno.hu 193.42.222.109
crl.e-szigno.hu 193.42.222.125
hiteles.mavinformatika.hu 193.68.41.238
nqca.mavinformatika.hu 193.68.41.42
qca.mavinformatika.hu 193.68.41.50
qocsp2009.e-szigno.hu 193.42.222.125
rootocsp2009.e-szigno.hu 193.42.222.125
sslocsp.e-szigno.hu 193.42.222.125
trust-sign.mavinformatika.hu 193.68.41.42
www.e-szigno.hu 193.42.222.99
www.netlock.hu 194.149.14.22
www.trust-sign.hu 193.68.41.143
bteszt.e-szigno.hu 193.42.222.29
srv.e-szigno.hu 193.42.222.22
teszt.e-szigno.hu 193.42.222.26
tesztca.mavinformatika.hu 193.68.41.62