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?)

!!Links
* [http://technet.microsoft.com/en-us/library/cc780170(v=ws.10).aspx]
* [http://technet.microsoft.com/en-us/library/bb457114.aspx]

!!NTLM
* [http://davenport.sourceforge.net/ntlm.html]

!!SPNEGO
* [http://msdn.microsoft.com/en-us/library/ms995330.aspx]

!!!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);
}}}

!!Links

* [http://web.mit.edu/kerberos/krb5-devel/doc/admin/conf_files/krb5_conf.html]
* [http://thejavamonkey.blogspot.de/2008/04/clientserver-hello-world-in-kerberos.html]
* [https://forums.oracle.com/message/6387090]
* [http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.zseries.doc%2Finfo%2Fzseries%2Fae%2Frsec_SPNEGO_config_krb5.html]
* [http://s2.diffuse.it/blog/show/6602-SPNEGO_authentication_and_credential_delegation_with_Java]

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:

* [http://stackoverflow.com/questions/1431999/java-and-kerberos-authentication-krb5-conf-versus-system-setproperty]

!!!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"
}}}