Erstellen von Client-Zertifikaten

Erstellen von Client-Zertifikaten

Ich habe ein SSL-Zertifikat von einer Drittanbieter-Zertifizierungsstelle. Es ist eine .cerDatei. 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.

  1. openssl genrsa -des3 -out my_ca.key 4096
  2. openssl req -new -key my_ca.key -out my_ca.csr
  3. 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.
  4. 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
  5. 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
    
  6. Signieren Sie den Schlüssel mit dem CA-Zertifikat
    openssl ca -in client1.csr -out client1.crt

  7. 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
  8. 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.

verwandte Informationen