FreeIPA: CSR Generation and SSL Installation

Sie befinden sich hier:

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 --selfsignArgument 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-installdie für Ihre Umgebung geeigneten Argumente aus und fügen Sie das --external_caFlag 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_razum FalseDeaktivieren 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 --selfsignOption
  • Sobald der IPA aktiv ist, führen Sie ihn ipa-server-certinstalleinmal 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.crtund/usr/share/ipa/html/ca.crt
  • Bearbeiten /etc/ipa/default.confund einstellen enable_raaufFalse
  • 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_pkcs12und --dirsrv_pkcs12und 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.crtund /usr/share/ipa/html/ca.crtkorrekt ist
  • Bearbeiten /etc/ipa/default.confund einstellen enable_raaufFalse
  • 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.csrund 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