How Can We Help?
FreeIPA: CSR Generation and SSL Installation
Fedora
Die Dogtag-Pakete sind jetzt in Fedora verfügbar. Die erforderlichen Pakete sollten bei der Installation von ipa-server als Abhängigkeiten abgerufen werden.
Dadurch werden nur die Binärdateien für das IPA-Installationsskript verfügbar. Das Installationsprogramm erstellt und konfiguriert die erforderlichen Dogtag-Komponenten, um eine Zertifizierungsstelle.
Installieren
Eine Dogtag-Zertifizierungsstelle wird standardmäßig von IPA installiert. Zur Installation mit einer selbstsignierten Zertifizierungsstelle anstelle von dogtag übergeben Sie das --selfsign
Argument an ipa-server-install
.
Die Zertifizierungsstelle verwendet eine separate Instanz von DS, die nur für die Zertifizierungsstelle verwendet wird. Diese Instanz heißt PKI-IPA.
Es wird eine CA-Instanz in / var / lib / pki-ca installiert.
Eine Kopie des CA-Stammzertifikats und des privaten Schlüssels wird in /root/cacert.p12 abgelegt.
Eine Kopie des CA-Agentenzertifikats wird in /root/ca-agent.p12 abgelegt. Dieses Agentenzertifikat kann in einen Browser importiert und zur Verwaltung von CS über die Webschnittstelle verwendet werden (nicht empfohlen).
Verwenden Sie eine andere Zertifizierungsstelle (COMODO), um das IPA-Zertifizierungsstellenzertifikat zu signieren
Wenn Sie über eine vorhandene Zertifizierungsstelle verfügen, können Sie diese verwenden, um die IPA-Zertifizierungsstelle zu einem untergeordneten Benutzer zu machen.
Dies ist ein dreistufiger Prozess:
- Von ipa-server-install eine Certificate Signing Request (CSR) generieren lassen
- Bringen Sie die CSR zu Ihrer Zertifizierungsstelle und lassen Sie sie unterschreiben
- Stellen Sie das resultierende Zertifikat für ipa-server-install bereit, um die Installation abzuschließen
Detaillierte Anleitung
Führen Sie ipa-server-install
die für Ihre Umgebung geeigneten Argumente aus und fügen Sie das --external_ca
Flag hinzu:
# ipa-server-install --external-ca
Dadurch wird eine CSR in erstellt /root/ipa.csr
. Dies ist die Datei, die Sie Ihrer CA zum Signieren zur Verfügung stellen müssen. Sie benötigen außerdem eine PEM-Kopie Ihrer CA-Vertrauenskette.
Sobald Sie beide haben, können Sie das Installationsprogramm fortsetzen:
# ipa-server-install --external_cert_file = / root / ipa.crt --external_ca_file = / root / bestehende_ca.crt
Der Server speichert die Antworten bei der ersten Ausführung des Installationsprogramms im Cache, sodass Sie die Fragen nicht noch einmal beantworten müssen. Dieser Cache wird entfernt, wenn das Installationsprogramm erneut ausgeführt wird.
Die Pfade zum Zertifikat und zur Zertifizierungsstelle müssen absolute Pfade sein. Das Installationsprogramm von dogtag silent schlägt fehl, wenn dies nicht der Fall ist.
Nach Abschluss der Installation haben Sie die gleichen Dateien wie eine eigenständige IPA-Zertifizierungsstelle: /root/cacert.p12 und /root/ca-agent.p12.
Der einzige Unterschied besteht darin, dass das CA-Zertifikat in diesem Modus von Ihrer externen Zertifizierungsstelle und im Standardmodus selbstsigniert wird.
Verwenden von Zertifikaten von einer anderen Zertifizierungsstelle (Sectigo)
Wenn Sie die neuen IPA-CA-Funktionen nicht verwenden möchten, ist dies in Ordnung, aber Sie müssen einige zusätzliche Schritte unternehmen.
Es gibt zwei Möglichkeiten, dies zu erreichen:
- Installieren Sie IPA mit der selbstsignierenden Zertifizierungsstelle und ersetzen Sie die Server-Zertifikate nach der Installation
- Stellen Sie dem Installationsprogramm PKCS # 12-Dateien zur Verfügung (und verwenden Sie immer noch die selbstsignierende Zertifizierungsstelle, es werden jedoch keine Zertifikate generiert).
Die Schritteinstellung enable_ra
zum False
Deaktivieren des cert-Plugins in der XML-RPC-Schnittstelle. Ihr IPA-Server kann keine Zertifikate ausstellen.
Installieren und ersetzen
Um die Install and Replace-Methode zu verwenden, gehen Sie folgendermaßen vor:
- Installieren Sie den IPA-Server mit der
--selfsign
Option - Sobald der IPA aktiv ist, führen Sie ihn
ipa-server-certinstall
einmal für den DS und einmal für Apache aus, um die Serverzertifikate zu ersetzen - Wenn die automatische Firefox-Konfiguration funktionieren soll, verwenden Sie ein Objektsignierungszertifikat zum Signieren der JAR-Datei
/usr/share/ipa/html/configure.jar
- Ersetzen Sie das CA-Zertifikat in
/etc/ipa/ca.crt
und/usr/share/ipa/html/ca.crt
- Bearbeiten
/etc/ipa/default.conf
und einstellenenable_ra
aufFalse
- Starten Sie Apache neu
Installiere mit deinen eigenen Zertifikaten
Um die Install your own method zu verwenden, gehen Sie folgendermaßen vor:
- Installieren Sie den IPA-Server mit den
--http_pkcs12
und--dirsrv_pkcs12
und den entsprechenden Pin-Argumenten. Ihre PKCS # 12-Dateien sollten das Serverzertifikat, den Schlüssel und die CA-Zertifizierungskette enthalten. - Wenn die automatische Firefox-Konfiguration funktionieren soll, verwenden Sie ein Objektsignierungszertifikat zum Signieren der JAR-Datei
/usr/share/ipa/html/configure.jar
- Stellen Sie sicher, dass das CA-Zertifikat in
/etc/ipa/ca.crt
und/usr/share/ipa/html/ca.crt
korrekt ist - Bearbeiten
/etc/ipa/default.conf
und einstellenenable_ra
aufFalse
- Starten Sie Apache neu
Mit Zertifikaten arbeiten
Sobald Ihre Zertifizierungsstelle konfiguriert ist, können autorisierte Benutzer eine Reihe von Vorgängen ausführen.
Fordern Sie ein Zertifikat an
Sie beginnen mit einer Certificate Signing Request (CSR). In unserem Fall handelt es sich um eine Base-64-codierte PKCS # 10-Anforderung, die etwa wie folgt aussieht:
----- BEGIN CERTIFICATE REQUEST ----- MIIBnTCCAQYCAQAwXTELMAkGA1UEBhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRvMRIw EAYDVQQDEwlsb2NhbGhvc3QxJzAlBgkqhkiG9w0BCQEWGGFkbWluQHNlcnZlci5l ... ... 9rsQkRc9Urv9mRBIsredGnYECNeRaK5R1yzpOowninXC ----- END CERTIFICATE REQUEST -----
So generieren Sie eine CSR mit OpenSSL-Lauf:
% openssl req -new -nodes -out host.csr
Sie werden aufgefordert, den Inhalt des Zertifikatsbetreffs anzugeben (Land, Bundesland, Organisation usw.). Der einzige kritische Punkt ist der gebräuchliche Name. Dieser muss auf den FQDN Ihres Hosts gesetzt werden.
Die CSR befindet sich in der Datei host.csr
und der Schlüssel für diese Anforderung befindet sich inprivkey.pem
In NSS müssen Sie mit einer cert-Datenbank beginnen, um einen zusätzlichen Schritt zu erhalten. Eine NSS-CSR-Generation sieht folgendermaßen aus:
% certutil -N -d / tmp / test % certutil -R -s 'CN = ipa.example.com' -d / tmp / test -o test.csr -g 2048 -a
Die CSR muss als eine einzige Zeichenfolge in der Befehlszeile übergeben werden:
$ ipa cert-request –principal=ldap2/zeus.example.com –add ‹MIIBejCB5AIBADA7MQwwCgYDVQQKEwNJUEExEDAOBgNVBAsTB3BraS1pcGExGTAXBgNVBAMTEHpldXMuZ3JleW9hay5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANSiseMKVF/ft44rJDM5XKaMo6jo03TBAC2i61D1GZL6nZ1trl6Oc4YfXccrbQLQ4RGLB6vwDE8vHyYh36OICb1EiWJ+bRaPsn9FaO2mk4qyZp2U/om52BCTSrOq+O+EhTdqLs+hUmUFRDpzmGX3x3UU0JR7cPcvNbcnNQvqfb2NAgMBAAGgADANBgkq > hkiG9w0BAQUFAAOBgQAjWFSgv3KZbcjn8V3rhAnuXG9xFzsqD5XsDRBsIMIrG/KNtw4VZBzuXlU2zOdoYm1vlSlzwep9xWXJi5L8HejyqPiCf2mLB60ZxBJLbe1UQ07+oCBMrxck4VXmnySWekRzfYy9lqV0lP/3A5UC6jbtrqJ6t5mp3yiwkjEzEJGp3A==›
Zertifikat: MIIC7DCCAdSgAwIBAgIBCzANBgkqhkiG9w0BAQUFADAuMQwwCgYDVQQKEwNJUEExHjAcBgNVBAMTFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wOTEwMDkxNTU5MzJaFw0xMDA0MDcxNTU5MzJaMDsxDDAKBgNVBAoTA0lQQTEQMA4GA1UECxMHcGtpLWlwYTEZMBcGA1UEAxMQemV1cy5ncmV5b2FrLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1KKx4wpUX9+3jiskMzlcpoyjqOjTdMEALaLrUPUZkvqdnW2uXo5zhh9dxyttAtDhEYsHq/AMTy8fJiHfo4gJvUSJYn5tFo+yf0Vo7aaTirJmnZT+ibnYEJNKs6r474SFN2ouz6FSZQVEOnOYZffHdRTQlHtw9y81tyc1C+p9vY0CAwEAAaOBizCBiDAfBgNVHSMEGDAWgBSaCxEepKwX6jI6LVrOiHgmiM4EwjBABggrBgEFBQcBAQQ0MDIwMAYIKwYBBQUHMAGGJGh0dHA6Ly96ZXVzLmdyZXlvYWsuY29tOjkxODAvY2Evb2NzcDAOBgNVHQ8BAf8EBAMCBPAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQEFBQADggEBAGljf00jgdkyivJFOONlu/lNb25vpWnM/Wu3N6F6hcYC722YjzAFFAFA6wJf4QybrUGQiihh4veqRlknZeoR8Wlc9491E+lGwyk4SZxmSWMHc/TEoTDKPqrngTaf3YsjzBqPhQQF6TkM1TL68uMsU4uHl7mWtD9ueDVQkWlWmTJEJXcT8OdvIFOC/Wb+Vq9FV1lgJAosXmt8poZyHPGX+GiVxdtdZpoZSb7vyMg0FvjhSHNoX8tVo5QKlzxsci+xRkT4tcAe+ReFyQ7+aX851QMluttEUT1Gz1OxnfGojvHbiqYkH92fk+eUJtTZHGpK5H1U5gJVFauCKf/8SzU4awE= request_id: 11 serial_number: 0xb status: 0 subject: CN=zeus.example.com,OU=pki-ipa,O=IPA </pre>
Es gibt auch eine Abkürzungsmethode, obwohl sie heute nicht funktioniert (9. Oktober).
ipa cert-request file://test.csr --principal=ldap3/zeus.example.com --add
Put a cert on hold
$ ipa cert-revoke --revocation-reason=6 0xb
Remove a cert from hold
$ ipa cert-revoke --revocation-reason=6 0xb
Revoke a certificate
$ ipa cert-revoke --revocation-reason=1 0xb revoked: True status: 0
Retrieve a revoked certificate
$ ipa cert-get 0xb certificate: MIIC7D... revocation_reason: 1 status: 0
Widerruf
Wenn Sie möchten, dass ein Zertifikat entfernt wird, widerrufen Sie es. RFC 5280 definiert die folgenden Gründe für den Widerruf:
- 0 – unspecified
- 1 – keyCompromise
- 2 – cACompromise
- 3 – affiliationChanged
- 4 – superseded
- 5 – cessationOfOperation
- 6 – certificateHold
- 8 – removeFromCRL
- 9 – privilegeWithdrawn
- 10 – aACompromise
Note that reason code 7 is not used.
A CRL is generated by the CA that contains a list of revoked certificates. This may be retrieved from an IPA server at: http://ipa.example.com/ipa/crl/MasterCRL.bin
Beachten Sie, dass der Ursachencode 7 nicht verwendet wird.
Eine CRL wird von der Zertifizierungsstelle generiert, die eine Liste der gesperrten Zertifikate enthält. Dies kann von einem IPA-Server unter http://ipa.example.com/ipa/crl/MasterCRL.bin abgerufen werden
Mit Services arbeiten
Beachten Sie, dass diese Dienstfunktion nicht in Alpha 1 ist
Wenn Sie ein Zertifikat anfordern, passiert Folgendes:
- Der Server überprüft das virtuelle ACI-Anforderungszertifikat, um festzustellen, ob der Anforderer die Berechtigung zum Anfordern von Zertifikaten hat.
- Der Antragsteller des Zertifikats wird mit dem Hostnamen des angeforderten Principals verglichen. Sie müssen übereinstimmen.
- Der angeforderte Service-Datensatz wird abgerufen. Wenn der Dienst bereits ein userCertificate-Attribut besitzt, wird die Anforderung angehalten
- Wenn der Dienst nicht vorhanden ist und das Argument –add nicht angegeben wurde, wird die Anforderung angehalten
- Wenn die Option –add angefordert wurde und der Anforderer keine Berechtigung zum Hinzufügen von Diensten hat, wird die Anforderung angehalten
- Der Anforderer muss im Attribut ‹managedBy› des Service-Datensatzes aufgeführt sein.
managedBy-Attribut
Dies ist ein mehrwertiges Attribut, das den definierten Namen aller Hosts enthält, die das userCertificate-Attribut dieses Dienstes schreiben dürfen. Verwenden Sie den Dienst add-host und service-remove-host, um den Zugriff zu steuern.
Beispiel
In diesem Beispiel werden die Schritte veranschaulicht, die von einem Administrator und einem Client-Computer ausgeführt werden müssen, der versucht, ein Zertifikat für sich selbst anzufordern. Dies setzt voraus, dass die CSR bereits generiert wurde und sich in der Datei web.csr im aktuellen Verzeichnis befindet.
Administrator
ipa host-add client.example.com --password = secret123 ipa service-add HTTP / client.example.com ipa service-add-host --hosts = client.example.com HTTP / client.example.com ipa rolegroup- add-member --hosts = client.example.com certadmin
Klient
ipa-client-install ipa-join -w secret123 kinit -kt /etc/krb5.keytab host / client.example.com ipa -d cert-request-Datei: //web.csr --principal = HTTP / client.example. com
Was macht das?
Administrator
- Fügen Sie einen neuen Host mit einem einmaligen Kennwort hinzu
- Erstellen Sie einen HTTP-Dienstprinzipal für den Host
- Erlauben Sie dem Host, sein eigenes userCertificate-Attribut zu verwalten
- Zulassen, dass der Host Zertifikate verwaltet (anfordern, widerrufen usw.)
Klient
- Konfigurieren Sie den Client für die Verwendung des IPA-Bereichs
- Verbinden Sie den Host mit dem Realm und rufen Sie ein Keytab ab
- Holen Sie sich ein Kerberos-Ticket für die Maschine
- ein Zertifikat anfordern
VPN-Beispiel
Betrachten wir den Fall eines VPN-Servers. Auf einem IPA-Client möchten wir einen VPN-Tunnel zu einem Remote-Host einrichten, vielleicht bei einem anderen Unternehmen. Dazu müssen wir einen Eintrag für diesen Remote-Host erstellen, einen Service-Principal, um das Zertifikat zu speichern, und dann das Zertifikat ausstellen.
Einige dieser Arbeiten müssen als Administrator erledigt werden:
% kinit admin % ipa host-add vpn.remote.com % ipa service-add vpn / vpn.remote.com % ipa service-add-host --hosts = ipa.example.com vpn / vpn.remote.com
Wir haben den Remote-Host und einen Service-Principal dafür erstellt und dem Host ipa.example.com die Erlaubnis erteilt, ein Zertifikat im Namen von vpn.remote.com anzufordern. Dies setzt voraus, dass sich die Zertifikatsanforderung für vpn.remote.com in der Datei vpn.csr befindet .
Auf ipa.example com:
% kinit -kt /etc/krb5.keytab host/ipa.example.com@EXAMPLE.COM% ipa cert-request --principal = vpn / vpn.remote.com vpn.csr % ipa service-show vpn / vpn.remote.com