Wenn SSL-Clientzertifikate verwendet werden sollen, müssen die einzelnen Benutzer Zertifikate haben. Hierzu wird in der Regel für jeden Benutzer ein eigenes Zertifikat angefordert. Der Prozess sieht wie folgt aus:
Die ersten beiden Schritte können auf verschiedene Weisen ausgeführt werden. In diesem Dokument wird gezeigt, wie diese Vorgänge mit OpenSSL, einem Freeware-Befehlszeilentool für die Zertifikatbearbeitung, durchgeführt werden. OpenSSL erhalten Sie von der OpenSSL-Seite mit Binärdateien.
In OpenSSL besteht der Vorgang der Erstellung einer Zertifikatsignierungsanforderung (Certificate Signing Request, CSR) aus zwei Schritten: der Erstellung eines privaten RSA-Schlüssels und der Erstellung der Zertifikatanforderung mit dem Benutzernamen und anderen Informationen.
Erstellen Sie zuerst einen Schlüssel. Vom Benutzer bereitgestellte Daten sind fett hervorgehoben:
Beispiel 1
C:\tmp>openssl genrsa -des3 -out clientcert.key 1024 Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
..............++++++
................++++++
e is 65537 (0x10001)
Enter pass phrase for clientcert.key: (the password is not echoed)
Verifying - Enter pass phrase for clientcert.key:
C:\tmp>
Durch dieses Beispiel wird ein 1024-Bit-Schlüssel erstellt und in der Datei „clientcert.key“ gespeichert. 1024 Bit sind eine gute Sicherheitsstufe. Eine noch bessere Sicherheit erhalten Sie durch 2048 Bit, wodurch jedoch die Leistung nachlässt.
Erstellen Sie danach die CSR:
Beispiel 2
C:\tmp>openssl req -config \moveitdmz\util\openssl.conf -new -key clientcert.key -out clientcert.csr
Enter pass phrase for clientcert.key: (enter the password given above)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:US
State or Province Name (full name) [Some-State]:Wisconsin
Locality Name (eg, city) []:Madison
Organization Name (eg, company) [ACME Inc.]:Universal Exporters
Organizational Unit Name (eg, section) []:Accounting
Common Name (eg, fully qualified host name) []:Fred
Email Address []:fred@univ-exporters.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
C:\tmp>
Durch dieses Beispiel wird eine Zertifikatanforderung für Fred erstellt. Das optionale Challenge-Kennwort und der Firmenname bleiben in der Regel leer. Die Datei „clientcert.csr“ kann nun an die Zertifizierungsstelle gesendet werden, die das Zertifikat signiert.
Nach der Erstellung einer Zertifikatanforderung sollte sie zur Signatur an eine Zertifizierungsstelle gesendet werden. Eine Zertifizierungsstelle kann Folgendes sein:
Wenn Sie sich selbst zur Zertifizierungsstelle machen wollen, so dass Sie selbst CSRs signieren können, benötigen Sie ein besonderes Zertifikat. Dieses wird nur Administratoren ausgestellt und von gewöhnlichen Benutzern NICHT benötigt. Ein solches Zertifikat erhalten Sie von verschiedenen Stellen (auch von den drei oben genannten). Wenn Sie für ein kleines Unternehmen arbeiten oder ein Zertifikat nur für Testzwecke benötigen, möchten Sie vielleicht Ihr eigenes selbst signiertes Zertifikat erstellen. Selbst signierte Zertifikate bieten das gleiche Maß an Verschlüsselung wie kommerziell erworbene Zertifikate, allerdings ist für diese Zertifikate ein wenig mehr Aufwand erforderlich, bis der Server ihnen vertraut. Selbst signierte Zertifikate sind kostenlos und über deren Laufzeit bestimmen Sie selbst.
Beispiel 3
C:\tmp>openssl req -config \moveitdmz\util\openssl.conf -x509 -days 365 -newkey rsa:1024 -keyout MyCAcert.key -out MyCAcert.cer
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
.....++++++
....++++++
writing new private key to 'MyCAcert.key'
Enter PEM pass phrase: (enter a new password that will be known only to the administrator)
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:US
State or Province Name (full name) [Some-State]:Wisconsin
Locality Name (eg, city) []:Madison
Organization Name (eg, company) [ACME Inc.]:Universal Exporters
Organizational Unit Name (eg, section) []:IT Dept
Common Name (eg, fully qualified host name) []:UE IT Security
Email Address []:ueitsec@univ-exporters.com
C:\tmp>
Dies erstellt ein 1024-Bit-Zertifikat, das nach 365 Tagen abläuft. In diesem Beispiel gehört der Administrator, der das Zertifikat erstellt, zum selben Unternehmen wie der obige Antragsteller für das Clientzertifikat, jedoch zu einer anderen Abteilung. Der Schlüssel wird in die Datei „MyCAcert.key“ geschrieben und das öffentliche Zertifikat in die Datei „MyCAcert.cer“. Die Datei „MyCAcert.key“ und das zugehörige Kennwort sollten an einem sicheren Ort aufbewahrt werden.
Sobald Sie über einen Signaturschlüssel verfügen (selbst erstellt oder von anderer Stelle ausgegeben), können Sie Zertifikatsignierungsanforderungen (CSRs) signieren:
Beispiel 4
C:\tmp>openssl x509 -req -in clientcert.csr -days 1000 -CA MyCAcert.cer -CAkey MyCAcert.key -CAcreateserial -out clientcert.cer
Loading 'screen' into random state - done
Signature ok
subject=/C=US/ST=Wisconsin/L=Madison/O=Universal Exporters/OU=Accounting/CN=Fred/emailAddress=fred@univ-exporters.com
Getting CA Private Key
Enter pass phrase for MyCAcert.key: (enter the password of the CA cert)
C:\tmp>
Dies liest die Zertifikatsignierungsanforderung, signiert sie, erstellt ein Clientzertifikat und schreibt dieses in die Datei „clientcert.cer“. In diesem Beispiel ist das Zertifikat 1000 Tage lang gültig.
„Clientcert.cer“ ist hier die öffentliche und „clientcert.key“ die private Komponente des Clientzertifikats. Manche Clientsoftware, zuvorderst auch Microsoft Windows, benötigen diese Dateien in einem anderen Format. Sofern Sie Zugriff auf die Datei „clientcert.cer“ des Benutzers haben (dies ist zum Beispiel der Fall, wenn Sie Beispiel 1 – an Ihre Situation angepasst – selbst ausgeführt haben), können Sie diese beiden Dateien mit einem Befehl wie dem Folgenden in das von Windows verlangte, nur aus einer PFX-Datei bestehende Format konvertieren:
Beispiel 5
C:\tmp>openssl pkcs12 -export -in clientcert.cer -inkey clientcert.key -out clientcert.pfx
Loading 'screen' into random state - done
Enter pass phrase for clientcert.key: (enter the password created via "openssl genrsa" at the top)
Enter Export Password: (enter a new password. It can be the same as the openssl genrsa password)
Verifying - Enter Export Password:
C:\tmp>
Die Datei „clientcert.pfx“ enthält nun sowohl die private als auch die öffentliche Komponente des Schlüssels. Hat der Benutzer die CSR selbst erstellt und Ihnen die .key-Datei nicht gegeben, muss er diesen openssl pkcs12-Befehl selbst ausführen.
Auf dem Computer des Benutzers muss das Clientzertifikat in den Zertifikatspeicher des Computers importiert werden. Unter Microsoft Windows kopiert der Benutzer die Datei „clientcert.pfx“ hierzu auf seinen Computer und führt danach die folgenden Schritte aus:
Das Clientzertifikat kann nun verwendet werden. In der Liste der Clientzertifikate können Sie überprüfen, ob das Zertifikat installiert wurde:
Wenn Sie ein selbstsigniertes Zertifizierungsstellenzertifikat erstellt haben, müssen Sie es auf dem Server installieren. Nur dann vertraut der Server, auf dem MOVEit Transfer ausgeführt wird, Clientzertifikaten, die mit diesem Zertifizierungsstellenzertifikat signiert wurden. (Wenn Ihr Zertifizierungsstellenzertifikat von einer offiziellen Zertifizierungsstelle ausgegeben wurde, ist dieser Schritt nicht erforderlich, weil das Zertifikat eines solchen Zertifikatanbieters in Windows integriert ist.)
Das Dialogfeld „Zertifikat“ wird angezeigt.
Die Seite Willkommen des Zertifikatimport-Assistenten wird angezeigt.
Die Seite Zertifikatspeicher wird angezeigt.
Das Fenster Zertifikatspeicher auswählen wird angezeigt.
Die Seite Fertigstellen wird angezeigt.
Klicken Sie auf Fertig stellen. Klicken Sie im Dialogfeld Sicherheitswarnung auf Ja.