Creëer een Simpele CA Server met Ansible
Categories:
Projecten:
c2platform/rws/ansible-gis
,
c2platform.core
,
c2platform.wincore
,
Overzicht
Dit document beschrijft de RWS-aanpak voor het beheren van certificaten en Java
Keystores/Truststores via Ansible, gebruikmakend van de rol c2platform.core.cacerts2.
Deze opzet, met Vagrant en Ansible, bereikt het volgende:
- Vagrant stelt drie VM’s in via VirtualBox, elk voorbereid voor zijn rol: een bestandsdeling, een CA-server en een Tomcat-server.
 - Ansible automatiseert de configuratie van deze VM’s, het opzetten van een bestandsdeling, het initialiseren van de CA-server en het implementeren van een Tomcat-server geconfigureerd met door de CA uitgegeven certificaten.
 
| Node | OS | Provider | Doel | 
|---|---|---|---|
gsd-ansible-file-share1 | Windows 2022 Server | VirtualBox | Bestandsdeling voor certificaten | 
gsd-ca-server | Red Hat 9 | VirtualBox | Eenvoudige CA-server op basis van Ansible | 
gsd-ca-server-client | Windows 2022 Server | VirtualBox | Tomcat-server met HTTPS / Java Keystores | 
Vereisten
- Zorg dat je RWS-ontwikkelomgeving is opgezet op Ubuntu 22, zoals beschreven hier .
 - Zorg dat de proxy-node 
gsd-rproxy1actief is voor internettoegang van Windows-nodes:vagrant up gsd-rproxy1 
Installatie
Om de volledige omgeving voor te bereiden, voer vagrant up uit voor de opgegeven VM’s. Op een
hoogwaardige ontwikkelwerkstation
,
zou deze opzet ongeveer 25 minuten moeten duren.
vagrant up gsd-ansible-file-share1 gsd-ca-server gsd-ca-server-client
Verificatie
SSH naar de CA-server en inspecteer de certificaatdirectory:
vagrant ssh gsd-ca-servertree /mnt/ansible-certificates/Verwacht de root-certificaat van de CA (
c2.crt), sleutel (c2.key), en het certificaat en Java KeyStore van de Tomcat-server te zien.Laat zien
[vagrant@gsd-ca-server ~]$ tree /mnt/ansible-certificates/ /mnt/ansible-certificates/ └── c2 ├── c2.crt ├── c2.csr ├── c2.key ├── downloads │ └── c2-ca.crt └── tomcat ├── gsd-ca-server-client-gsd-ca-server-client.crt ├── gsd-ca-server-client-gsd-ca-server-client.csr ├── gsd-ca-server-client-gsd-ca-server-client.key ├── gsd-ca-server-client-gsd-ca-server-client.keystore ├── gsd-ca-server-client-gsd-ca-server-client.p12 ├── gsd-ca-server-client-gsd-ca-server-client.pem └── gsd-ca-server-client-gsd-ca-server-client.truststore 3 directories, 11 bestanden [vagrant@gsd-ca-server ~]$Toegang tot
gsd-ca-server-clientvia Remmina of VirtualBox Manager als de gebruikervagrant(wachtwoord:vagrant).Op het bureaublad is er een snelkoppeling naar https://gsd-ca-server-client:8443/helloworld/
Dit toont een waarschuwing over een mogelijke beveiligingsrisico omdat het certificaat niet door FireFox wordt vertrouwd. Op dit punt kan je het root certificaat
\\gsd-ansible-file-share1\ansible-certs\c2\c2.crtimporteren om een vertrouwensrelatie op te bouwen en deze waarschuwing wordt niet getoond.Controleer of
server.xmlinD:\Apps\tomcat\confde juiste SSL/TLS configuratie bevat, wat het succes van de installatie van de Java Keystore door Ansible aangeeft.<Connector port="8443" URIEncoding="ISO-8859-1" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="True" clientAuth="False" sslProtocol="TLSv1.2" SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256" keystoreFile="conf/gsd-ca-server-client-gsd-ca-server-client.keystore" keystorePass="secret" keyAlias="gsd-ca-server-client" SSLHonorCipherOrder="true" server="server" />De Java Keystore
gsd-ca-server-client-gsd-ca-server-client.keystorewerd op de CA-server door Ansible aangemaakt en vervolgens geïnstalleerd door Ansible met de rolc2platform.cacerts2.
Certificaatbeheer op CIFS Share
Waarschuwing!
De rolc2platform.core.cacerts2 ondersteunt geen directe certificaatupdates
op CIFS-shares vanwege beperkingen van Ansible met bestandsbeheer op zulke shares.Om dit probleem te reproduceren:
- Navigeer naar 
group_vars/cacerts_server_client/certs.yml, wijzig een certificaat eigenschap (bijv.subject_alt_name). - Provision 
gsd-ca-server-clientopnieuw:vagrant provision gsd-ca-server-client 
Dit zal mislukken met de onderstaande boodschap, vanwege de incompatibiliteit van Ansible met bestandsattribuutbeheer op CIFS-shares.
Fout bij het instellen van attributen: Gebruik: /bin/chattr [-pRVf] [-+=aAcCdDeijPsStTuFx]
Laat zien
Dit wordt veroorzaakt door het gebrek aan MS Windows-ondersteuning in Ansible kernhulpprogrammamodules. Specifiek ondersteunen deze modules geen bestandsbeheer op CIFS-shares. In dit geval, omdat we certificaten updaten, probeert Ansible de methode backup_local in
lib/ansible/module_utils/basic.py 
te gebruiken om een kopie van het certificaat te maken voordat het wordt overschreven. Dit mislukt, het wordt niet ondersteund.
Om dit op te lossen en het certificaat en de keystore bij te werken:
- Toegang tot 
gsd-ca-server-clientvia Remmina of VirtualBox Manager als de gebruikervagrant(wachtwoord:vagrant). - Open Windows Verkenner en ga naar
\\gsd-ansible-file-share1\ansible-certs\c2\tomcat - Verwijder alle bestanden in die map behalve de privésleutel.
 - Provision 
gsd-ca-server-clientopnieuw:vagrant provision gsd-ca-server-client 
Let op dat het nieuwe certificaat en de Java Keystore worden aangemaakt, geïmplementeerd en dat Tomcat wordt herstart om de wijziging door te voeren.
Integreren van Externe Certificaten
De rol c2platform.core.cacerts2 ondersteunt het vervangen van certificaten door officiële certificaten uitgegeven door een toegewezen eenheid, zoals het geval is voor RWS, zoals beschreven in
Implementatie van PKI voor RWS GIS met Ansible
Dit kunnen we simuleren met de volgende stappen:
- Toegang tot 
gsd-ca-server-clientvia Remmina of VirtualBox Manager als de gebruikervagrant(wachtwoord:vagrant). - Open Windows Verkenner en ga naar
\\gsd-ansible-file-share1\ansible-certs\c2\tomcat. - Kopieer 
gsd-ca-server-client-gsd-ca-server-client.crtengsd-ca-server-client-gsd-ca-server-client.csrnaar het bureaublad. Deze CSR en certificaat simuleren respectievelijk de CSR die we naar de eenheid sturen en het certificaat dat we als antwoord ontvangen. Hernoem het certificaat naargsd-ca-server-client-gsd-ca-server-client.rws-csp.crt. Dit is nu voor de test het officiële RWS-certificaat. - Verwijder de bestanden met de extensies 
crt,keystore,p12,pem,truststore. - Provision 
gsd-ca-server-clientopnieuw:We hebben nu een nieuwvagrant provision gsd-ca-server-clientcrt-bestand dat anders is dangsd-ca-server-client-gsd-ca-server-client.rws-csp.crt. 
Dus we hebben nu het punt bereikt waar we de Ansible-rol
c2platform.core.cacerts2 gaan gebruiken om onze tijdelijke certificaten te vervangen door RWS-certificaten.
- Ga naar de map 
\\gsd-ansible-file-share1\ansible-certs\c2\tomcat - Verwijder de bestanden met de extensies 
keystore,p12,pem. - Kopieer het certificaat 
gsd-ca-server-client-gsd-ca-server-client.rws-csp.crtvan het bureaublad naar de map\\gsd-ansible-file-share1\ansible-certs\c2\tomcat - Provision 
gsd-ca-server-clientopnieuw:vagrant provision gsd-ca-server-client - Gebruik de snelkoppeling op het bureaublad voor KeyStore Explorer om te controleren aan de hand van de thumbprint dat het certificaat in de KeyStore is
gsd-ca-server-client-gsd-ca-server-client.rws-csp.crt. 
Overzicht
Om de opzet en configuratie van de VM’s te begrijpen, bekijk de Ansible Inventory en Vagrant-projectbestanden en de Ansible-collecties.
Ansible Inventory
Bekijk de volgende bestanden in het Ansible-inventory / Vagrant-project
c2platform/rws/ansible-gis
:
| Bestand(en) | Beschrijving | 
|---|---|
plays/mgmt/cacerts_server_rhel.yml | Het voornaamste Ansible playbook voor het provisionen van de drie VM’s | 
group_vars/ansible_file_share/* | Configuratie voor de fileshare-node gsd-ansible-file-share1 | 
group_vars/cacerts_server_client/* | Configuratie voor de Tomcat-server gsd-ca-server-client | 
Zie Ansible Inventory Project voor meer informatie over Ansible inventaris projecten.
Ansible Collecties / Rollen
| Collectie | Beschrijving | 
|---|---|
c2platform.wincore | Bevat essentiële rollen voor Windows-hosts, zoals win | 
c2platform.core | Biedt rollen voor Linux-doelen linux en cacerts2. | 
c2platform.gis | Collectie met rollen voor GIS-platform zoals tomcat en java. | 
Zie Ansible Collection Project voor meer informatie over Ansible collectie projecten.
Aanvullende Informatie
Voor extra inzichten en richtlijnen:
- Verken het ontwerp en de voordelen van deze opzet in Implementatie van PKI voor RWS GIS met Ansible .
 - Leer over de mogelijkheden van Vagrant in het omgaan met Sysprep voor Windows en geautomatiseerde registratie voor RHEL 9 in de Vagrant installatierichtlijn .
 - Tomcat SSL/TLS en Java Keystore en TrustStore Configuratie voor Linux en Windows Hosts is vergelijkbaar met deze handleiding maar maakt geen gebruik van een CIFS-share en richt zich op certificaatbeheer op Linux- en Windows-hosts. Deze instructie behandelt alleen een Windows-target.
 
Feedback
Was deze pagina nuttig?
Fijn om te horen! Vertel ons alstublieft hoe we kunnen verbeteren.
Jammer om dat te horen. Vertel ons alstublieft hoe we kunnen verbeteren.