.. _cam_settings:

===================
Nastavení pro CAM
===================

Integraci na systém CAM je nutné vždy samostatně nastavit. Integrace se využívá pro 
napojení na systém CAM a další obdobné systémy se shodným typem rozhraní. Při tvorbě 
nastavení je nutné zvolit typ napojení. Typ napojení není možné později jednoduše změnit.

Typy napojení:
#. CAM - standardní rozhraní pro CAM, jako párovací znak se používá CAM ID (číselný identifikátor).
#. CAM kompletní - standardní rozhraní pro CAM, odlišnost je v tom, že jsou automaticky
staženy všechny entity uložené v CAM a vytvořena jejich lokální kopie.
#. CAM UUID - napojení určené pro jiné informační systémy využívající rozhraní CAM a jako primární
identifikátor využívají UUID. Obvykle využíváno pro napojení na specializované informační systémy.

Dodatečná nastavení
--------------------------

Vyjma základních nastavení napojení v uživatelském rozhraní je možné některá další nastavení provést v konfiguračním
souboru. Primárně se jedná o nastavení časovačů pro automatickou synchronizaci. Způsob těchto dodatečných nastavení a 
zda je uplatnit by měl vycházet z dokumentace daného externího systému.

Nastavení se provádí v konfiguračním YAML souboru v části ``elza.accesspoints``. Nastavení je vázáno na konkrétní
napojení a to pomocí kódu externího systému.

Příklad nastavení:

.. code-block:: yaml

   elza:      
     accesspoints:
       sync:
        # Nastavení pro každý systém je v samostatném bloku
        # Povinně se uvede jeho kód
        - code: CAM
          # Nastavení prodlevy v sekundách mezi kontrolami 
          # stavu.   
          syncDelay: 60
          # CRON výraz pro určení okamžiku reset transakce
          resetAt: "0 0 6 * * Sun"



Doporučení pro CAM (testovací)
-------------------------------

#. Nastavení synchronizace každých 5 minut
#. Nastavení restartu synchronizační transakce každou sobotu. Po synchronizaci testovací instance CAM s produkční

.. code-block:: yaml

   elza:      
     accesspoints:
       sync:
        # Nastavení pro každý systém je v samostatném bloku
        # Povinně se uvede jeho kód
        - code: CAM
          # Nastavení prodlevy v sekundách mezi kontrolami 
          # stavu.   
          syncDelay: 300
          # CRON výraz pro určení okamžiku reset transakce
          resetAt: "0 0 6 * * Sun"


Doporučení pro CAM (produkční)
-------------------------------

#. Nastavení synchronizace každých 5 minut

.. code-block:: yaml

   elza:      
     accesspoints:
       sync:
        # Nastavení pro každý systém je v samostatném bloku
        # Povinně se uvede jeho kód
        - code: CAM
          # Nastavení prodlevy v sekundách mezi kontrolami 
          # stavu.   
          syncDelay: 300


Nastavení Java
-------------------

V současných distribucích Java jsou zakázány ve výchozím nastavení starší způsoby
šifrování HTTPS přenosu, které mohou být využívány pro připojení k systému CAM na straně NA ČR.

Zakázaný algorismus: SHA1withRSA
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: 

  Caused by: java.security.cert.CertPathValidatorException: Algorithm constraints check failed on signature algorithm: SHA1withRSA


V případě výskytu uvedené chyby je nutné příslušnou metody/algoritmus povolit v nastavení Java, konkrétně 
v souboru :file:`java.security`, případně zadat při spuštění aplikace cestu k jeho lokální kopii s upraveným 
nastavením (parametr: ''-Djava.security.properties=<URL>'').

V mnoha distribucích (RedHat a jeho klony, OpenSuse, ...) je přidán balík :token:`crypto-policies` a v rámci 
jeho nastavení jsou definována výchozí nastavení požadavků na šifrování. Přítomnost tohoto systému lze ověřit 
existencí souboru :file:`/etc/crypto-policies/back-ends/`. V takovém případě je obvykle možné aktivovat SHA1withRSA
pomocí příkazu (nutno ověřit v dokumentaci systému): 


.. code-block:: bash

   update-crypto-policies --set DEFAULT:SHA1

