SSL

Auf dieser Seite ist Wissen rund um Secure Socket Layer (SSL), TSL, TSL2, Zertifikate (Certificates), Digitale Signatur, Server- und Client-Zertifikate, Smart-Cards und ähnlichen Themen gespeichert.

Microsoft#

Smartcards might use Kerberos V5 authentication with X.509 v3 certificates. (Kann auch NTLM genutzt werden?)

NTLM#

SPNEGO#

Kerberos v5#

Dieses Verfahren unterstützt Public-Private-Challenges, Smart-Card-Authentification und digitale Signatur.

In Java steht dafür das GSS-System zur Verfügung, der Einstiegspunkt ist GSSManager.getInstance(). Die kryptographischen Verfahren werden durch OIDs ausgewählt:

Oid krb5 = new Oid("1.2.840.113554.1.2.2");
Oid spnego = new Oid("1.3.6.1.5.5.2");

Server-Credentials erzeugen:

GSSCredential credentials = manager.createCredential(null, GSSCredential.DEFAULT_LIFETIME, spnegoMechOid, GSSCredential.ACCEPT_ONLY);

Mit Kerberos v5 können komplexe Protokolle realisiert werden, allerdings nur mit entsprechender Konfiguration. Es besteht die Möglichkeit, die Parameter durch System-Properties in Java zu setzen oder in einer krb5.conf festzulegen:

Certificates erzeugen#

Client Authentication Certificate#

http://www.impetus.us/~rjmooney/projects/misc/clientcertauth.html

SSL Zertifikate für Apache#

Um ein Zertifikat zu beantragen, sind zunächst 2 Dateien zu erzeugen:
  • ssl.key: Ein Private-Key, der wiederverwendet werden kann
  • ssl.csr: Ein Certificate Service Request, der wiederverwendet werden kann

Damit läd man dann den eigentlichen Key von der Certificate Authority herunter:

  • ssl.crt: Ein Key, der nur zusammen mit dem Private-Key ssl.key verwendet werden kann
  • sub.class1.server.ca.pem: Ein Indermediate Key, der von der Certificate Authority unterschrieben ist
  • ca.pem: Der Root Certification Authority key

Apache SSL#

Die Keys werden in der httpd.conf eingetragen:
SSLCertificateFile "D:/ssl.crt"
SSLCertificateKeyFile "D:/ssl.key"
SSLCertificateChainFile "D:/sub.class1.server.ca.pem"
SSLCACertificateFile "D:/ca.pem"