
Ich habe ein SSL-Zertifikat von einer Drittanbieter-Zertifizierungsstelle. Es ist eine .cer
Datei. Das Zertifikat ist installiert und funktioniert ordnungsgemäß in IIS7.
Als Verwendungszweck zeigt das Zertifikat „Server-Authentifizierung“ und „Client-Authentifizierung“ an.
Die Site erfordert eine Authentifizierung über Client-Zertifikate. Wir sindnichtVerwenden Sie dazu nicht die Client-Zertifikatszuordnung, sondern einfach Client-Zertifikate als Authentifizierungsmaßnahme – wenn Sie eines haben, sind Sie authentifiziert.
- Wie kann ich ein Client-Zertifikat erstellen?
- Muss die Zertifizierungsstelle dies unter Einbeziehung eines weiteren CSR tun?
- Kann ich das selbst mit einem anderen Tool machen? (OpenSSL oder ein anderes)
- Welches Format wird für Client-Zertifikate benötigt?
Antwort1
Die Client-Zertifikatauthentifizierung in IIS (oder den meisten HTTPDs) ist etwas kompliziert. Sie müssen die Benutzer dem Zertifikat zuordnen. Die Zertifikate selbst können von jeder Zertifizierungsstelle ausgestellt werden, der der Server vertraut. Sie könnenEinrichten einer AD CS-Instanzzur Ausstellung der Zertifikate oder sogar zur Verwendung einer lokalen Kopie vonOpenSSLum die Zertifikate zu erstellen, wenn Sie möchten.
Es gibt einen Artikel überIIS.netBeschreibungClient-Zertifikatszuordnung; mit Informationen zum Aktivieren und programmgesteuerten Verknüpfen von Zertifikaten mit Benutzern.
Bearbeiten:
Die ultrakurze Version der Ausstellung von Client-Zertifikaten mit OpenSSL.
openssl genrsa -des3 -out my_ca.key 4096
openssl req -new -key my_ca.key -out my_ca.csr
openssl x509 -req -days 365 -in my_ca.csr -signkey my_ca.key -out my_ca.crt
Sie verfügen jetzt über ein CA-Zertifikat und einen CA-Schlüssel.- Für jedes der Client-Zertifikate, die Sie generieren, benötigen Sie eine Cert Signing Request. Sie können für jeden Benutzer dasselbe Zertifikat verwenden, wenn Sie möchten, aber das ist keine besonders gute Idee und Sie sollten auf jeden Fall auch eine andere Form der Authentifizierung verlangen (wie ein Passwort). Entweder können die Clients die CSRs selbst generieren, oder Sie können dies wieder mit openssl tun (beachten Sie, dass jede CSR zuerst einen privaten Schlüssel benötigt):
openssl genrsa -des3 -out client1.key 1024
openssl req -new -key client1.key -out client1.csr
Bearbeiten Sie Ihre openssl.cnf-Datei und füllen Sie die relevanten CA-Teile aus. Dies sind:
[ ca ] default_ca = CA_default # The default ca section [ CA_default ] dir = ./ # top dir database = $dir/my_ca.index # index file. new_certs_dir = $dir/newcerts # new certs dir certificate = $dir/my_ca.crt # The CA cert serial = $dir/my_ca.srl # serial no file private_key = $dir/my_ca.key # CA private key RANDFILE = $dir/rand # random number file default_days = 365 # how long to certify for default_crl_days= 30 # how long before next CRL default_md = md5 # md to use policy = policy_any # default policy email_in_dn = no # Don't add the email into cert DN name_opt = ca_default # Subject name display option cert_opt = ca_default # Certificate display option copy_extensions = none # Don't copy extensions from request [ policy_any ] countryName = supplied stateOrProvinceName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional
Signieren Sie den Schlüssel mit dem CA-Zertifikat
openssl ca -in client1.csr -out client1.crt
- Wenn Sie den Schlüssel und die CSR für den Client erstellt haben, müssen Sie sie exportieren. Exportieren Sie das Zertifikatspaar in eine PKCS12-Datei, damit der Client es importieren kann.
openssl pkcs12 -export -in client1.crt -inkey client1.key -out client1.p12
- Wenn Sie Nr. 7 abgeschlossen haben, senden Sie dem Client die von Ihnen erstellte PKCS12-Datei. Andernfalls senden Sie ihm das Zertifikat aus Nr. 6.
Beachten Sie, dass dies keine gute Methode ist, signierte Zertifikate auszustellen, da einfach der in der CSR angegebene Zertifikatstyp ausgestellt wird. Achten Sie darauf, was Sie tun. Wenn Sie viele Zertifikate ausstellen möchten, müssen Sie etwas Zeit in eine sicherere Einrichtung investieren.