[[TOC(heading=Zorgdomein, sectionindex, compact, depth=4, allactive, Documentatie/Ontwikkelaar/Procedures/Zorgdomein/)]] [[TOC(heading=Procedures, sectionindex, compact, depth=3, allactive, Documentatie/Ontwikkelaar/Procedures/)]] [[TOC(heading=Ontwikkelaar, sectionindex, compact, depth=2, allactive, Documentatie/Ontwikkelaar/)]] [[TOC(heading=Documentatie, sectionindex, compact, depth=1, allactive, Documentatie/)]] = Fenac client certificaten = (oorspronkelijke versie van Bob) Er is een script-tool gemaakt om het aanmaken en ondertekenen van de Fenac client certificaten te vergemakkelijken. Dit 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) Voorbeeld van een input voor deze tool: {{{ [ { "openACdescription": "Introductie Fontys", "openACTicketLink": "ticket url", "openACpubDate": "", "openACagbLocaties": [ "102948511", "1234045400" ], "openACagbLocatienamen": [ "Sneek", "Heeg" ], "openACRevokedDate": "", "countryName": "NL", "stateOrProvinceName": "Noord Holland", "localityName": "Hoorn", "0.organizationName": "Fontys", "organizationalUnitName": "Section zorgdomein koppeling", "commonName": "www.WellingBloemen.nl", "emailAddress": "wilbert@Email.nl", "passwordClientCert": "abcdefg!", "passwordPfx": "boorad!" } ] }}} De 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). Wordt 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!! {{{ De letters staat voor het volgende: /C = countryName /ST = stateOrProvinceName /L = localityName /O = 0.organizationName /OU = organizationalUnitName /CN = commonName }}} Voorbeeld: 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". Op 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. Aan het einde commit je aantal bestanden waaronder zeker "administratie_ac_out_list.json" De stappen die je moet uitvoeren om aan de slag te gaan zijn als volgt: De tool is een python-code script "maak_signed_client_certifcaten.py" 1) Checkout SourceTree OpenACTools\ssl-ca 2) De directory structuur die je dan hebt {{{ \OpenACTools\ssl-ca\ Dit is de werkdirectory waar je naar toe gaat in Commandline of Linux Bash ├───demoCA │ ├───certs De CA server certificaat als ca.cert.pem │ │ │ ├───csr_req Aangemaakte client serienummer_organisatienaam.csr_req.pem, csr = certificate server request │ │ │ ├───newcerts Aangemaakte client serienummer_organisatienaam.cert.pem │ │ │ ├───pfx Angemaakte client serienummer_organisatienaam.pfx │ │ │ └───private Aangemaakte client serienummer_organisatienaam.key.pem │ └───template_conf openssl_template.conf De tool maakt gebruik van dit template zorgdomein_uitgegeven_certs_db_template.txt Dit is de OpenSSL database. OpenSSL noemt deze database standaard "index.txt". Deze specifieke template zorgt voor een lege database zodat er geen problemen optreden tijdens het tekenen(signen) bestand: administratie_ac_out_list.json Zorg er voor dat dit bestand uitgechecked is. Dit is je "eigen administratie" bestand. Wil je dit bestand leeg hebben plaats dan een leeg json object in dit bestand. 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. Hier kun je eventueel in 1 keer meerdere certificaten gegevens in plaatsen. bestand: maak_signed_client_certifcaten.py Dit is de tool/script die je helpt bij het aanmaken en teken (signen) van een client certificaat bestand: agbsettings.json Dit is een kopie van het bestand dat in het OpenAC3 Hub project staat. Bij aanvang dien je dit bestand te kopiëren naar je werkdirectory \OpenACTools\ssl-ca\. Dit bestand heeft per organisatie een unieke fingerprint. indien opgegeven met optie -agbfile wordt dit bestand bijgewerkt. }}} 3) In Linux en Windows heb je python2.7 nodig. - Linux installatie: sudo apt-get install python2.7 - 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. In Linux en Windows heb je openssl 1.02 nodig. - Linux installatie: kan via sudo apt-get install openssl - Windows installatie: Voer de setup uit van Win32 OpenSSL-1_0_2m.exe. Deze is te downloaden van [https://slproweb.com/download/win32_openssl_hashes.json] en [https://slproweb.com/products/Win32OpenSSL.html] Kies in de setup bij de vraag "*.dll plaatsen in Systeem directory van Windows" voor nee, kies hiervoor de directory C:\OpenSSL-Win32\bin [[Image(LinuxAptGetInstal_Python_OpenSSL.png)]] 4) 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. Het script zal aan het eind nieuwe pfx certificfaten aanmaken en een nieuwe agbsettings.json die je rechtstreeks in de OpenACHub server kunt kopieeren. 5) Stel je wilt voor een organisatie een vervangende certicaat aanmaken. Bijvoorbeeld Adelante. 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: - Zet je windows explorer op \projecten\OpenACTools\ssl-ca\ - tik in explorer rechts de zoektekst "Adelante" - Je zult 4 of 5 bestanden zien opgelicht worden die matchen op "adelante", deze kun je dan verwijderen. 6) 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. Je 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 de 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. Het beste is dus om ook daar de entry te verwijderen. 7) Maak een kopie van client_cert_lijst en geeft deze de naam client_cert_lijst_yyyy_mm_dd. Dit is de naslag. Ga 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. Wijzig "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. {{{ [ { "openACdescription": "Introductie Fontys", "openACTicketLink": "ticket url", "openACpubDate": "", "openACagbLocaties": [ "102948511", "1234045400" ], "openACagbLocatienamen": [ "Sneek", "Heeg" ], "openACRevokedDate": "fictief-revokedate", "countryName": "NL", "stateOrProvinceName": "Noord Holland", "localityName": "Hoorn", "0.organizationName": "Fontys", "organizationalUnitName": "Section zorgdomein koppeling", "commonName": "www.WellingBloemen.nl", "emailAddress": "wilbert@Email.nl", "passwordClientCert": "abcdefg!", "passwordPfx": "boorad!" } ] }}} Punten waarop het script fout kan lopen: - niet alle velden zijn aanwezig - client_cert_lijst.json moet ISO-8859-1 of UTF-8 zijn - 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!! 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. 8) Voer het script uit: - Linux: python2.7 ./maak_signed_client_certifcaten.py -input client_cert_lijst.json -agbfile agbsettings.json - Windows: python ./maak_signed_client_certifcaten.py -input client_cert_lijst.json -agbfile agbsettings.json 9) 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" 10) Aan het einde van het script kun je kijken of de nieuwe gegevens ook in administratie_ac_out_list.json zijn terecht gekomen. 11) Het client .pfx bestand staat in OpenACTools\ssl-ca\demoCA\pfx\serienummer_organisatienaam.pfx De .pem staat in de corresponderende subdirectories. Zie hierboven de directorystructuur. 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. 12) 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. Controleer 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. 13) 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. 14) 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. 15) Lever alles in de repository(committen). Het beste is geheel OpenACTools\ssl-ca\ te comitten. Ook de verwijderingen van de pfx, pem In ieder geval: - nieuwe pem en pfx, - agbsettings_yyyy_mm_dd.json - agbsettings.json - administratie_ac_out_list_yyyy_mnm_dd.json - administratie_ac_out_list.json - client_cert_lijst_yyyy_mm_dd.json - client_cert_lijst.json