Changes between Initial Version and Version 1 of Documentatie/Ontwikkelaar/Procedures/Zorgdomein/FenacClientCertificaten


Ignore:
Timestamp:
06/24/19 08:06:01 (7 years ago)
Author:
henk
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Documentatie/Ontwikkelaar/Procedures/Zorgdomein/FenacClientCertificaten

    v1 v1  
     1[[TOC(heading=Omgeving, sectionindex, compact, depth=3, allactive, Documentatie/Ontwikkelaar/Omgeving/Zorgdomein)]] 
     2[[TOC(heading=Omgeving, sectionindex, compact, depth=3, allactive, Documentatie/Ontwikkelaar/Omgeving/)]] 
     3[[TOC(heading=Procedures, sectionindex, compact, depth=3, allactive, Documentatie/Ontwikkelaar/Procedures/)]] 
     4[[TOC(heading=Documentatie, sectionindex, compact, depth=1, allactive, Documentatie/)]] 
     5 
     6= Zorgdomein Fenac client certificaten = 
     7 
     8Er is een script-tool gemaakt om het aanmaken en ondertekenen van de Fenac client certificaten te vergemakkelijken. 
     9Dit script zorgt er voor dat je op een luxe manier een nieuw certificaat kunt aanmaken en de bijbehorende administratie kunt laten bijwerken. De administratie heeft geheime gegevens welke dan gebruikt kunnen worden voor het tot stand brengen van een veilige verbinding tussen client en server. In het geval van de Fenac zorgdomein server, wanneer de client die verbinding zoekt met de server dan zal door de server de z.g.n. fingerprint van het client certificaat gecontroleerd worden. Verder staat in de administratie ook het serienummer, pem wachtwoord, pfx wachtwoord en de agblocatie(s) 
     10 
     11Voorbeeld van een input voor deze tool: 
     12{{{ 
     13[ 
     14    { 
     15          "openACdescription": "Introductie Fontys", 
     16          "openACTicketLink": "ticket url", 
     17          "openACpubDate": "", 
     18          "openACagbLocaties": [ "102948511", "1234045400" ], 
     19          "openACagbLocatienamen": [ "Sneek", "Heeg" ], 
     20          "openACRevokedDate": "", 
     21                   
     22          "countryName": "NL", 
     23          "stateOrProvinceName": "Noord Holland", 
     24          "localityName": "Hoorn", 
     25          "0.organizationName": "Fontys", 
     26          "organizationalUnitName": "Section zorgdomein koppeling", 
     27          "commonName": "www.WellingBloemen.nl", 
     28          "emailAddress": "wilbert@Email.nl", 
     29          "passwordClientCert": "abcdefg!", 
     30          "passwordPfx": "boorad!" 
     31    } 
     32] 
     33}}} 
     34 
     35De veldnamen(keys) moeten aanwezig zijn om het script te laten werken. Als de waarde voor een veld onbekend is kun je "" invullen. Zoals je hierboven ziet hebben de "eigen" administratie gerelateerde velden een prefix "openAC". De velden zonder prefix gaan het client certificaat in en zijn ook uit te lezen (indien men het wachtwoord weet).  
     36 
     37Wordt in het input bestand gegevens gebruikt welke ooit eerder zijn gebruikt om een certificaat aan te maken, dan zal het script vragen of je het vorige certificaat wilt laten verwijderen of dat je de input wilt overslaan. Zonder extra switch hanteert deze script "Organisatienaam" als unieke zoeksleutel. De zoeksleutel kan men optioneel zelf opgeven achter de switch -def_uniek_db_entry. Door de juiste combinatie mee te geven aan deze switch kun je bijvoorbeeld er voor zorgen, dat je voor een organisatie een tweede certificaat kunt aanmaken met een andere organisatorisch unitnaam of een andere commonname/domeinnaam. Je start het script dan op met -def_uniek_db_entry met daarachter combinatie van  /C,/ST,/L,/O,/OU,/CN  gescheiden met een comma zonder spatie!! 
     38{{{ 
     39De letters staat voor het volgende: 
     40/C  = countryName   
     41/ST = stateOrProvinceName 
     42/L  = localityName 
     43/O  = 0.organizationName 
     44/OU = organizationalUnitName 
     45/CN = commonName 
     46}}} 
     47Voorbeeld: Aanroep met de optie -def_uniek_db_entry /O,/OU  betekend: zoek in het eigen administratie voor een bestaande entry met de sleutel "Organisatienaam" + "Organisatorisch unitnaam". 
     48Op moment van schrijven kun je niet een /emailAddress opgeven om uniek sleutel door te geven. Dit script maakt onderwater gebruik van haar eigen database en dat is het bestand "administratie_ac_out_list.json". Dit bestand kun je ook tevens zien als je "eigen administratie". Nadat de tool succesvol gedraaid heeft is het "eigen administratie bestand" aangevuld met de gegevens van het nieuwe certificaat. Elke keer als je een nieuwe certificaat wilt aanmaken, vul je dus het input bestand in met de nodige gegevens en vervolgens run je het script. Hierna zal je eigen administratie bestand "administratie_ac_out_list.json" bijgewerkt worden en indien je dit hebt opgegeven zal een nieuwe agbsettings.json geproduceerd worden. 
     49Aan het einde commit je aantal bestanden waaronder zeker "administratie_ac_out_list.json" 
     50 
     51De stappen die je moet uitvoeren om aan de slag te gaan zijn als volgt: 
     52 
     53De tool is een python-code script "maak_signed_client_certifcaten.py" 
     54 
     551) Checkout SourceTree  OpenACTools\ssl-ca 
     56 
     572) De directory structuur die je dan hebt 
     58{{{ 
     59 
     60 \OpenACTools\ssl-ca\   Dit is de werkdirectory waar je naar toe gaat in Commandline of Linux Bash 
     61 
     62├───demoCA 
     63│   ├───certs    De CA server certificaat als ca.cert.pem 
     64│   │ 
     65│   ├───csr_req  Aangemaakte client serienummer_organisatienaam.csr_req.pem, csr = certificate server request 
     66│   │ 
     67│   ├───newcerts Aangemaakte client serienummer_organisatienaam.cert.pem 
     68│   │ 
     69│   ├───pfx      Angemaakte client serienummer_organisatienaam.pfx 
     70│   │ 
     71│   └───private  Aangemaakte client serienummer_organisatienaam.key.pem 
     72 
     73└───template_conf   
     74        openssl_template.conf                          De tool maakt gebruik van dit template 
     75 
     76        zorgdomein_uitgegeven_certs_db_template.txt    Dit is de OpenSSL database. OpenSSL noemt deze database standaard "index.txt".  
     77                                                       Deze specifieke template zorgt voor een lege database zodat er geen problemen optreden tijdens het tekenen(signen) 
     78  
     79 bestand: administratie_ac_out_list.json   Zorg er voor dat dit bestand uitgechecked is. Dit is je "eigen administratie" bestand.  
     80                                           Wil je dit bestand leeg hebben plaats dan een leeg json object in dit bestand. 
     81 
     82 bestand: client_cert_lijst.json           Dit is het input bestand. Hier configureer je nieuwe aan te maken certificaten. Zie dit als een taak-input bestand.  
     83                                           Hier kun je eventueel in 1 keer meerdere certificaten gegevens in plaatsen. 
     84 
     85 bestand: maak_signed_client_certifcaten.py   Dit is de tool/script die je helpt bij het aanmaken en teken (signen) van een client certificaat 
     86 
     87 bestand: agbsettings.json                    Dit is een kopie van het bestand dat in het OpenAC3 Hub project staat. Bij aanvang dien je dit bestand te  
     88                                              kopiëren naar je werkdirectory \OpenACTools\ssl-ca\. Dit bestand heeft per organisatie een unieke fingerprint.  
     89                                              indien opgegeven met optie -agbfile wordt dit bestand bijgewerkt. 
     90}}} 
     91 
     92 
     933) In Linux en Windows heb je python2.7 nodig. 
     94 - Linux installatie: sudo apt-get install python2.7 
     95 - Windows: Gebruik de python2.7 versie van de OpenAC starterkit. (In mijn geval D:\OpenAC\Python27). Zorgt dat dit path in je Windows PATH environment staat. 
     96 
     97In Linux en Windows heb je openssl 1.02 nodig.  
     98 - Linux installatie: kan via sudo apt-get install openssl   
     99 - Windows installatie: Voer de setup uit van Win32 
     100 
     101OpenSSL-1_0_2m.exe. Deze is te downloaden van [https://slproweb.com/download/win32_openssl_hashes.json] en [https://slproweb.com/products/Win32OpenSSL.html] 
     102   Kies in de setup bij de vraag "*.dll plaatsen in Systeem directory van Windows" voor nee, kies hiervoor de directory C:\OpenSSL-Win32\bin  
     103 
     104[[Image(LinuxAptGetInstal_Python_OpenSSL.png)]] 
     105 
     1064) Maak een kopie van agbsettings.json en hernoem deze naar agbsettings_yyyy-mm-dd.json als naslag. Deze kun je aan het eind het beste ook inchecken. 
     107   Het script zal aan het eind nieuwe pfx certificfaten aanmaken en een nieuwe agbsettings.json die je rechtstreeks in de OpenACHub server kunt kopieeren. 
     108 
     1095) Stel je wilt voor een organisatie een vervangende certicaat aanmaken. Bijvoorbeeld Adelante. 
     110   Het handigste is, dat de vorige pem, crt, pfx bestanden van Adelante gaat verwijderen uit de ssl-ca tree. Dit ruimt netjes op waardoor straks het nieuwe aangemaakte pfx beter zichtbaar is, anders krijg je meerdere bestanden met Adelante met een ander serienummer. Om de juiste "Adelante" bestanden te verwijderen voer je het volgende uit: 
     111   - Zet je windows explorer op \projecten\OpenACTools\ssl-ca\  
     112   - tik in explorer rechts de zoektekst "Adelante" 
     113   - Je zult 4 of 5 bestanden zien opgelicht worden die matchen op "adelante", deze kun je dan verwijderen. 
     114 
     1156) In het bestand administratie_ac_out_list.json, welke bedoeld is voor de eigen administratie, zal een oude "Adelante" certificaat serienummer staan. Dit kan onhandig zijn voor het opzoeken van je uitleveringen. 
     116Je kunt het beste voor kiezen om ook dit te verwijderen. Mocht je het laten staan dan zal het script vragen of er een nieuwe "Adelante" certificaat geschreven mag worden. Kies je voor ja dan zal  
     117de nieuwe gegevens van Adelante toegevoegd worden aan administratie_ac_out_list.json. De oude gegevens van "Adelante" staan ook nog in administratie_ac_out_list.json. Je krijgt dan twee keer een Adelante informatie, wat wellicht verwarrend is. 
     118Het beste is dus om ook daar de entry te verwijderen. 
     119 
     1207) Maak een kopie van client_cert_lijst en geeft deze de naam client_cert_lijst_yyyy_mm_dd. Dit is de naslag. 
     121Ga vervolgens het bestand "client_cert_lijst.json" vullen met gegevens. Zorg er voor dat alle velden bestaan, het beste is om de waarden van de velden leeg te maken en vervolgens de velden in te vullen. 
     122Wijzig "client_cert_lijst.json" en zorg dat er minimaal 1 configuratie erin staat anders loopt het script op een fout. Het mogen dus meer AC's configuraties zijn in dit bestand waardoor je in 1 run meerdere certificaten kunt aanmaken. 
     123{{{ 
     124[ 
     125    { 
     126          "openACdescription": "Introductie Fontys", 
     127          "openACTicketLink": "ticket url", 
     128          "openACpubDate": "", 
     129          "openACagbLocaties": [ "102948511", "1234045400" ], 
     130          "openACagbLocatienamen": [ "Sneek", "Heeg" ], 
     131          "openACRevokedDate": "fictief-revokedate", 
     132                   
     133          "countryName": "NL", 
     134          "stateOrProvinceName": "Noord Holland", 
     135          "localityName": "Hoorn", 
     136          "0.organizationName": "Fontys", 
     137          "organizationalUnitName": "Section zorgdomein koppeling", 
     138          "commonName": "www.WellingBloemen.nl", 
     139          "emailAddress": "wilbert@Email.nl", 
     140          "passwordClientCert": "abcdefg!", 
     141          "passwordPfx": "boorad!" 
     142    } 
     143] 
     144}}} 
     145 
     146Punten waarop het script fout kan lopen: 
     147 - niet alle velden zijn aanwezig 
     148 - client_cert_lijst.json  moet ISO-8859-1 of UTF-8 zijn 
     149 - ondanks dat de codeset goed staat, dan kan toch het kopiëren vanaf de webbrowser of excel resulteren in onzichtbare karakters, waardoor het script stopt!! 
     150   Voorkomen is beter dan dat je script halverwege stopt en tik in dit geval de gegevens in of doe dit via een tussenstop via notepad. 
     151    
     1528) Voer het script uit: 
     153 - Linux: python2.7 ./maak_signed_client_certifcaten.py -input client_cert_lijst.json -agbfile agbsettings.json 
     154 - Windows: python ./maak_signed_client_certifcaten.py -input client_cert_lijst.json -agbfile agbsettings.json 
     155 
     1569) Het script vraagt op een gegeven moment naar een server Phrase. Dit is het wachtwoord dat staat in beheer repository. Hint dit wachtwoord begint met een "w" 
     157 
     15810) Aan het einde van het script kun je kijken of de nieuwe gegevens ook in administratie_ac_out_list.json zijn terecht gekomen. 
     159 
     16011) Het client .pfx bestand staat in OpenACTools\ssl-ca\demoCA\pfx\serienummer_organisatienaam.pfx 
     161   De .pem staat in de corresponderende subdirectories. Zie hierboven de directorystructuur. 
     162 
     163   Let op dat je het goede pfx bestand geeft aan een centra. Het beste is om te focusen op het serienummer dat in het bestandsnaam staat zet ook in de mail het bestandsnaam. 
     164 
     165 
     16612) Doe een vergelijking van agbsettings.json met die van agbsettings_yyyy_mm_dd.json. De in productie zijnde Zorgdomein-koppelingen van AC's waar de aanmaakscript niets mee te maken heeft, moeten on aangepast zijn. 
     167Controleer de laatste 4 cijfers van de fingerprints voor elke AC of gebruik een diff tool. Er mogen uiteraard alleen AGB's en fingerprints zijn bijgekomen, die het script heeft aangemaakt. 
     168 
     169 
     17013) Op de OpenACHub server maak een kopie van de oude agbsettings.json en hernoem deze agbsetting_yyyy_mm_dd.json. Kopieer daarna de agbsettings.json van het script in OpenAC3Hub server. 
     171 
     17214) T.b.v. naslag en debuggen, de fingerprint staat in OpenACTools\ssl-ca\administratie_ac_out_list.json en in agbsettings.json, met daarin ook de agblocaties. 
     173 
     174    
     17515) Lever alles in de repository(committen). Het beste is geheel OpenACTools\ssl-ca\ te comitten. Ook de verwijderingen van de pfx, pem 
     176     In ieder geval: 
     177     - nieuwe pem en pfx,  
     178     - agbsettings_yyyy_mm_dd.json 
     179     - agbsettings.json 
     180      
     181     - administratie_ac_out_list_yyyy_mnm_dd.json    
     182     - administratie_ac_out_list.json    
     183      
     184     - client_cert_lijst_yyyy_mm_dd.json 
     185     - client_cert_lijst.json