| | 1 | = FENAC !ZorgDomein SSL Inrichting = |
| | 2 | |
| | 3 | Dit document beschrijft hoe de FENAC de communicatie tussen OpenAC 3 Server |
| | 4 | (decentraal, bij de AC's zelf -- dat zijn de zorgverleners) en OpenACHub |
| | 5 | (centraal, bij de FENAC -- dat is de tussen-postbus voor !ZorgDomein-verkeer) |
| | 6 | beveligd is en welke procedures gehanteerd worden. |
| | 7 | |
| | 8 | Algemeen geldt dat de clients (dwz. OpenAC 3 Server) controleren dat de |
| | 9 | server (dwz. OpenACHub) ge-identificeerd wordt door het juiste certificaat, |
| | 10 | en aan de server-kant wordt gecontroleerd dat (a) de client een geldig certificaat |
| | 11 | aanbiedt en (b) de client, ge-identificeerd door het certificaat, de uitvraag |
| | 12 | mag doen in de request (dwz. mag het client certificaat wel verwijzingen opvragen |
| | 13 | voor de aangegeven AGB code). |
| | 14 | |
| | 15 | Revisies: |
| | 16 | - 0.1 dd 20170105 initieel document |
| | 17 | |
| | 18 | |
| | 19 | == SSL Chain of Trust == |
| | 20 | |
| | 21 | Voor de !ZorgDomein koppeling heeft de FENAC een eigen, self-signed, CA key |
| | 22 | gemaakt. Gedurende de test-fase wordt geen extra aandacht besteed aan de |
| | 23 | beveiliging van de host waarop de CA key en intermediate certificates opgeslagen |
| | 24 | worden (dwz. het is een werkstation ten burele van de FENAC). Aangezien deze root-CA alleen gebruikt wordt voor het verstrekken van de intermediate voor de !ZorgDomein-koppeling wordt dit niet als een zwaarwegend probleem gezien. |
| | 25 | |
| | 26 | === CA Aanmaken === |
| | 27 | |
| | 28 | FENAC maakt gebruik van het standaard OpenSSL helper-script CA.pl om de CA root |
| | 29 | en intermediate certificates te genereren. |
| | 30 | |
| | 31 | - CA root: `CA.pl -newca` |
| | 32 | - In te voeren gegevens voor deze CA root zijn: |
| | 33 | {{{ |
| | 34 | Subject: |
| | 35 | countryName = NL |
| | 36 | stateOrProvinceName = Utrecht |
| | 37 | organizationName = FENAC UA |
| | 38 | commonName = fenac.nl |
| | 39 | emailAddress = info@fenac.nl |
| | 40 | }}} |
| | 41 | - De key die in de test-fase wordt gebruikt, heeft deze fingerprints: |
| | 42 | {{{ |
| | 43 | X509v3 extensions: |
| | 44 | X509v3 Subject Key Identifier: |
| | 45 | C9:D7:1C:4B:E3:23:9A:A3:FA:66:41:40:55:FC:68:5B:DB:D4:19:0C |
| | 46 | X509v3 Authority Key Identifier: |
| | 47 | keyid:C9:D7:1C:4B:E3:23:9A:A3:FA:66:41:40:55:FC:68:5B:DB:D4:19:0C |
| | 48 | }}} |
| | 49 | - Intermediate: `CA.pl -newreq ; CA.pl -signCA` |
| | 50 | - In te voeren gegevens voor deze intermediate zijn (m.n. andere CN): |
| | 51 | {{{ |
| | 52 | Subject: |
| | 53 | countryName = NL |
| | 54 | stateOrProvinceName = Utrecht |
| | 55 | localityName = Utrecht |
| | 56 | organizationName = FENAC UA |
| | 57 | organizationalUnitName = ZorgDomein Koppeling |
| | 58 | commonName = zd.fenac.nl |
| | 59 | emailAddress = info@fenac.nl |
| | 60 | }}} |
| | 61 | - De key die in de test-fase wordt gebruikt, heeft deze fingerprints: |
| | 62 | {{{ |
| | 63 | X509v3 extensions: |
| | 64 | X509v3 Subject Key Identifier: |
| | 65 | 7F:6C:AF:8A:77:48:33:6E:4E:29:E9:F3:79:A0:8B:A2:6C:A6:CD:09 |
| | 66 | X509v3 Authority Key Identifier: |
| | 67 | keyid:C9:D7:1C:4B:E3:23:9A:A3:FA:66:41:40:55:FC:68:5B:DB:D4:19:0C |
| | 68 | }}} |
| | 69 | - Intermediate opslaan in demoCA directory: |
| | 70 | - `mv newcert.pem demoCA/intermediatecert.pem` |
| | 71 | - `mv newkey.pem demoCA/private/intermediatecert.pem` |
| | 72 | - Certificate chain maken: |
| | 73 | - `cat demoCA/intermediatecert.pem demoCA/cacert.pem > demoCA/fenaczd-chain-cert.pem` |
| | 74 | |
| | 75 | |
| | 76 | ### Client Certificates |
| | 77 | |
| | 78 | Gedurende de test-fase worden client-certificates door de FENAC zelf uitgegeven |
| | 79 | (zoals VECOZO en het UZI register ook doen). Er wordt niet gewerkt als een |
| | 80 | traditionele CA met binnenkomende sign-requests. Gedurende de test-fase wordt |
| | 81 | geen extra aandacht besteed aan de beveiliging van de host waarop de client- |
| | 82 | certificates worden opgeslagen. Gedurende de test-fase wordt geen extra aandacht |
| | 83 | besteed aan de manier waarop de client-certificates getransporteerd worden |
| | 84 | naar de clients (dwz. naar de AC's waar ze de certificaten installeren in hun |
| | 85 | OpenAC 3 Server). |
| | 86 | |
| | 87 | - Request aanmaken: `CA.pl -newreq-nodes` |
| | 88 | - Als test hebben we een certificaat voor AC Utrecht gemaakt. Aanbevolen |
| | 89 | in om `OU=ZorgDomein Koppeling` te gebruiken, en voor CN het domein van |
| | 90 | de instelling (ic. acutrecht.nl) zonder subdomeinen. |
| | 91 | - Request signen (met de intermediate!): |
| | 92 | {{{ |
| | 93 | openssl ca -policy policy_anything \ |
| | 94 | -cert demoCA/intermediatecert.pem -keyfile demoCA/private/intermediatecert.pem \ |
| | 95 | -out newcert.pem -infiles newreq.pem |
| | 96 | }}} |
| | 97 | - Certificate opslaan in demoCA directory. Dit gebeurt automatisch (met de |
| | 98 | serial / hash) voor het getekend certificaat. Gedurende de test-fase worden de |
| | 99 | private-keys ook opgeslagen in de demoCA, onder de naam van de aanvrager: |
| | 100 | - `mv newkey.pem demoCA/private/ac_utrecht.pem` |
| | 101 | - Certificate omzetten naar PKCS!#12 voor gebruik door Windows / OpenAC 3 Server (hier met de hashcode van het nieuwe certificaat): |
| | 102 | {{{ |
| | 103 | openssl pkcs12 -export -out ac_utrecht.pfx \ |
| | 104 | -in newcerts/F1633F593C632CE2.pem \ |
| | 105 | -inkey private/ac_utrecht.pem \ |
| | 106 | -certfile fenaczd-chain-cert.pem |
| | 107 | }}} |
| | 108 | |