Step CA: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Die Seite wurde neu angelegt: „= Eigener ACME Server = * step-ca erlaubt es einen eigenen ACME Server zu hosten * die Software wurde von der Firma Smallstep entwickelt * ACME-Client bots, d…“ |
|||
| (20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 3: | Zeile 3: | ||
* step-ca erlaubt es einen eigenen ACME Server zu hosten | * step-ca erlaubt es einen eigenen ACME Server zu hosten | ||
* die Software wurde von der Firma Smallstep entwickelt | * die Software wurde von der Firma Smallstep entwickelt | ||
* ACME-Client bots, die custom ACME Server benutzen können (wie z.B. acme.sh), sind in der Lage Zertifikate von einen selbst gehosteten Server signieren zu lassen | * ACME-Client bots, die custom ACME Server benutzen können (wie z.B. acme.sh), sind so in der Lage Zertifikate von einen selbst gehosteten Server signieren zu lassen | ||
= Installation = | |||
* Es sind zwei Pakete erforderlich, um step-ca zu betreiben: [https://github.com/smallstep/cli/releases step-cli] und [https://github.com/smallstep/certificates/releases step-certificates] | |||
* Für Debian basierte Systeme wäre es: | |||
* '''wget https://dl.smallstep.com/gh-release/certificates/gh-release-header/vXX.YY.ZZ/step-ca_XX.YY.ZZ_amd64.deb''' | |||
* '''dpkg -i ''step-ca_XX.YY.ZZ_amd64.deb'' ''' | |||
* '''wget https://dl.smallstep.com/gh-release/cli/gh-release-header/vXX.YY.ZZ/step-cli_XX.YY.ZZ_amd64.deb''' | |||
* '''dpkg -i ''step-cli_XX.YY.ZZ_amd64.deb'' ''' | |||
* Der step-Dienst sollte unter einen dedizierten Nutzer laufen | |||
* '''useradd -m -s /bin/bash step''' | |||
* Ein systemd-Dienst kann angelegt werden, um das Starten, Überwachen und Stoppen zu vereinfachen | |||
* '''vim ''/etc/systemd/system/step-ca.service'' ''' | |||
[Unit] | |||
Description=step-ca | |||
After=syslog.target network.target | |||
[Service] | |||
User=step | |||
Group=step | |||
ExecStart=/bin/sh -c '/bin/step-ca /home/step/.step/config/ca.json --password-file=/home/step/.step/pwd >> /var/log/step-ca/output.log 2>&1' | |||
Type=simple | |||
Restart=on-failure | |||
RestartSec=10 | |||
[Install] | |||
WantedBy=multi-user.target | |||
* Nun noch die richtigen Berechtigungen und Eigentümer auf die benötigten Ordner setzen | |||
* '''mkdir -p /var/log/step-ca''' | |||
* '''chown -R step:step /var/log/step-ca''' | |||
* Falls der Server auf Port 443 laufen sollte, muss eine [[Capabilities|Capability]] auf die Binary gesetzt werden | |||
* '''setcap CAP_NET_BIND_SERVICE=+eip ''/bin/step-ca'' ''' | |||
= Konfiguration = | |||
* Für die initiale Konfiguration gibt es einen Wizard, welcher die Parameter für eine minimalen Konfiguration abfrägt | |||
* Die Konfiguration sollte als Benutzer '''step''' ausgeführt werden | |||
* '''su - step''' | |||
* '''step ca init''' | |||
Use the arrow keys to navigate: ↓ ↑ → ← | |||
? What deployment type would you like to configure?: | |||
▸ Standalone - step-ca instance you run yourself '''<--- Das hier''' | |||
Linked - standalone, plus cloud configuration, reporting & alerting | |||
Hosted - fully-managed step-ca cloud instance run for you by smallstep | |||
✔ Deployment Type: Standalone | |||
What would you like to name your new PKI? | |||
✔ (e.g. Smallstep): '''MyCompanyName''' | |||
What DNS names or IP addresses will clients use to reach your CA? | |||
✔ (e.g. ca.example.com[,10.1.2.3,etc.]): '''acme.domain.internal,1.2.3.4''' | |||
What IP and port will your new CA bind to? (:443 will bind to 0.0.0.0:443) | |||
✔ (e.g. :443 or 127.0.0.1:443): ''':443''' | |||
What would you like to name the CA's first provisioner? | |||
✔ (e.g. you@smallstep.com): admin@domain.mine | |||
Choose a password for your CA keys and first provisioner. | |||
✔ [leave empty and we'll generate one]: | |||
✔ Password: nE&8KP.Ya7BMxxxxxxxxxxxxxe!3}XYm '''<--- Passwort wird später noch gebraucht''' | |||
* Das Passwort sollte unter dem Pfad ''~/.step/pwd'' abgespeichert und lesegeschützt gemacht werden | |||
* '''chmod 400 ''~/.step/pwd'' ''' | |||
* Damit der Dienst das ACME Protokoll bedienen kann, muss ein Provisioner für den Dienst angelegt werden | |||
* '''step ca provisioner add acme --type ACME --ca-url ''~/.step/certs/root_ca.crt'' ''' | |||
* Jetzt kann der Dienst gestartet werden | |||
* '''systemctl enable --now step-ca''' | |||
* Die Logs können unter ''/var/log/step-ca/output.log'' eingesehen werden | |||
* '''tail -fn0 ''/var/log/step-ca/output.log'' ''' | |||
= Zertifikat Signierung = | |||
* Die meisten ACME-Clients stellen nur anfragen an Servern deren Zertifikat sie vertrauen | |||
* Da unsere Instanz ein selbstsigniertes CA für die Webschnittstelle hat muss der Client erstmal ''~step/.step/certs/root_ca.crt'' importieren | |||
= Links = | = Links = | ||
* https://blog.sean-wright.com/self-host-acme-server/ | * https://blog.sean-wright.com/self-host-acme-server/ | ||
* | * https://github.com/smallstep/cli/releases | ||
* https://github.com/smallstep/certificates/releases | |||
Aktuelle Version vom 19. Februar 2024, 07:18 Uhr
Eigener ACME Server
- step-ca erlaubt es einen eigenen ACME Server zu hosten
- die Software wurde von der Firma Smallstep entwickelt
- ACME-Client bots, die custom ACME Server benutzen können (wie z.B. acme.sh), sind so in der Lage Zertifikate von einen selbst gehosteten Server signieren zu lassen
Installation
- Es sind zwei Pakete erforderlich, um step-ca zu betreiben: step-cli und step-certificates
- Für Debian basierte Systeme wäre es:
- wget https://dl.smallstep.com/gh-release/certificates/gh-release-header/vXX.YY.ZZ/step-ca_XX.YY.ZZ_amd64.deb
- dpkg -i step-ca_XX.YY.ZZ_amd64.deb
- wget https://dl.smallstep.com/gh-release/cli/gh-release-header/vXX.YY.ZZ/step-cli_XX.YY.ZZ_amd64.deb
- dpkg -i step-cli_XX.YY.ZZ_amd64.deb
- Der step-Dienst sollte unter einen dedizierten Nutzer laufen
- useradd -m -s /bin/bash step
- Ein systemd-Dienst kann angelegt werden, um das Starten, Überwachen und Stoppen zu vereinfachen
- vim /etc/systemd/system/step-ca.service
[Unit] Description=step-ca After=syslog.target network.target [Service] User=step Group=step ExecStart=/bin/sh -c '/bin/step-ca /home/step/.step/config/ca.json --password-file=/home/step/.step/pwd >> /var/log/step-ca/output.log 2>&1' Type=simple Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
- Nun noch die richtigen Berechtigungen und Eigentümer auf die benötigten Ordner setzen
- mkdir -p /var/log/step-ca
- chown -R step:step /var/log/step-ca
- Falls der Server auf Port 443 laufen sollte, muss eine Capability auf die Binary gesetzt werden
- setcap CAP_NET_BIND_SERVICE=+eip /bin/step-ca
Konfiguration
- Für die initiale Konfiguration gibt es einen Wizard, welcher die Parameter für eine minimalen Konfiguration abfrägt
- Die Konfiguration sollte als Benutzer step ausgeführt werden
- su - step
- step ca init
Use the arrow keys to navigate: ↓ ↑ → ←
? What deployment type would you like to configure?:
▸ Standalone - step-ca instance you run yourself <--- Das hier
Linked - standalone, plus cloud configuration, reporting & alerting
Hosted - fully-managed step-ca cloud instance run for you by smallstep
✔ Deployment Type: Standalone What would you like to name your new PKI? ✔ (e.g. Smallstep): MyCompanyName
What DNS names or IP addresses will clients use to reach your CA? ✔ (e.g. ca.example.com[,10.1.2.3,etc.]): acme.domain.internal,1.2.3.4
What IP and port will your new CA bind to? (:443 will bind to 0.0.0.0:443) ✔ (e.g. :443 or 127.0.0.1:443): :443
What would you like to name the CA's first provisioner? ✔ (e.g. you@smallstep.com): admin@domain.mine
Choose a password for your CA keys and first provisioner. ✔ [leave empty and we'll generate one]: ✔ Password: nE&8KP.Ya7BMxxxxxxxxxxxxxe!3}XYm <--- Passwort wird später noch gebraucht
- Das Passwort sollte unter dem Pfad ~/.step/pwd abgespeichert und lesegeschützt gemacht werden
- chmod 400 ~/.step/pwd
- Damit der Dienst das ACME Protokoll bedienen kann, muss ein Provisioner für den Dienst angelegt werden
- step ca provisioner add acme --type ACME --ca-url ~/.step/certs/root_ca.crt
- Jetzt kann der Dienst gestartet werden
- systemctl enable --now step-ca
- Die Logs können unter /var/log/step-ca/output.log eingesehen werden
- tail -fn0 /var/log/step-ca/output.log
Zertifikat Signierung
- Die meisten ACME-Clients stellen nur anfragen an Servern deren Zertifikat sie vertrauen
- Da unsere Instanz ein selbstsigniertes CA für die Webschnittstelle hat muss der Client erstmal ~step/.step/certs/root_ca.crt importieren