Package de.willuhn.jameica.security
Class SSLFactory
- java.lang.Object
-
- de.willuhn.jameica.security.SSLFactory
-
public class SSLFactory extends java.lang.Object
Diese Klasse uebernimmt die Erstellung der SSL-Zertifikate fuer die sichere RMI-Kommunikation.
-
-
Constructor Summary
Constructors Constructor Description SSLFactory()
ct.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
addTrustedCertificate(java.security.cert.X509Certificate cert)
Fuegt dem Keystore ein Zertifikat hinzu und uebernimmt dabei auch alle noetigen Sicherheitsabfragen.void
changePassword()
Aendert das Passwort des Keystores.void
decrypt(java.io.InputStream is, java.io.OutputStream os)
Entschluesselt die Daten aus is und schreibt sie in os.void
encrypt(java.io.InputStream is, java.io.OutputStream os)
Verschluesselt die Daten aus is und schreibt sie in os.java.security.cert.CertificateFactory
getCertificateFactory()
Liefert die Certificate-Factory.java.security.KeyStore
getKeyStore()
Liefert den Keystore mit dem Zertifikat.java.io.File
getKeyStoreFile()
Liefert die Datei mit dem Keystore.java.security.PrivateKey
getPrivateKey()
Liefert den PrivateKey von Jameica.java.security.PublicKey
getPublicKey()
Liefert den PublicKey von Jameica.javax.net.ssl.SSLContext
getSSLContext()
Liefert einen fertig konfigurierten SSLContext mit den Jameica-Zertifikaten.java.security.cert.X509Certificate
getSystemCertificate()
Liefert das X.509-Zertifikat der Jameica-Installation.java.security.cert.X509Certificate
getTrustedCertificate(java.lang.String alias)
Liefert das Zertifikat mit dem genannten Alias.java.security.cert.X509Certificate[]
getTrustedCertificates()
Liefert eine Liste aller installierten Zertifikate ausser dem Jameica-eigenen System-Zertifikat.JameicaTrustManager
getTrustManager()
Liefert den Jameica-Trustmanager.java.security.cert.X509Certificate[]
getUnTrustedCertificates()
Liefert eine Liste von Zertifikate, die noch zu bestaetigen sind.void
init()
Prueft die Zertifikate und erstellt sie bei Bedarf.java.security.cert.X509Certificate
loadCertificate(java.io.InputStream is)
Laedt ein Zertifikat vom angegebenen InputStream und liefert es zurueck.java.util.Collection<java.security.cert.X509Certificate>
loadCertificates(java.io.InputStream is)
Laedt alle Zertifikate vom angegebenen InputStream und liefert sie zurueck.void
removeTrustedCertificate(java.security.cert.X509Certificate cert)
Entfernt das Zertifikat mit dem genannten Namen aus dem Keystore.
-
-
-
Method Detail
-
init
public void init() throws java.lang.Exception
Prueft die Zertifikate und erstellt sie bei Bedarf.- Throws:
java.lang.Exception
-
changePassword
public void changePassword() throws java.lang.Exception
Aendert das Passwort des Keystores. Die Eingaben erfolgen ueber den ApplicationCallback.- Throws:
java.lang.Exception
- See Also:
ApplicationCallback.changePassword()
-
getKeyStoreFile
public java.io.File getKeyStoreFile()
Liefert die Datei mit dem Keystore.- Returns:
- Keystore.
-
getPublicKey
public java.security.PublicKey getPublicKey() throws java.lang.Exception
Liefert den PublicKey von Jameica.- Returns:
- Private-Key.
- Throws:
java.lang.Exception
-
getPrivateKey
public java.security.PrivateKey getPrivateKey() throws java.lang.Exception
Liefert den PrivateKey von Jameica.- Returns:
- Private-Key.
- Throws:
java.lang.Exception
-
getSystemCertificate
public java.security.cert.X509Certificate getSystemCertificate() throws java.lang.Exception
Liefert das X.509-Zertifikat der Jameica-Installation.- Returns:
- X.509-Zertifikat.
- Throws:
java.security.KeyStoreException
- falls kein Zugriff auf Keystorejava.lang.Exception
- siehegetKeyStore()
-
getTrustedCertificates
public java.security.cert.X509Certificate[] getTrustedCertificates() throws java.lang.Exception
Liefert eine Liste aller installierten Zertifikate ausser dem Jameica-eigenen System-Zertifikat.- Returns:
- Liste der installieren Zertifikate.
- Throws:
java.security.KeyStoreException
- falls kein Zugriff auf Keystorejava.lang.Exception
- siehegetKeyStore()
-
getTrustedCertificate
public java.security.cert.X509Certificate getTrustedCertificate(java.lang.String alias) throws java.lang.Exception
Liefert das Zertifikat mit dem genannten Alias. Die Funktion liefert NIE das System-Zertifikat von Jameica. Hierfuer kann stattdessengetSystemCertificate()
verwendet werden.- Parameters:
alias
- Alias des Zertifikats.- Returns:
- das Zertifikat oder NULL, wenn es nicht gefunden wurde.
- Throws:
java.security.KeyStoreException
- falls kein Zugriff auf Keystorejava.lang.Exception
- siehegetKeyStore()
-
getUnTrustedCertificates
public java.security.cert.X509Certificate[] getUnTrustedCertificates() throws java.lang.Exception
Liefert eine Liste von Zertifikate, die noch zu bestaetigen sind. Das sind genau jene, welche vom Server im Nichtinteraktiven Modus entgegengenommen wurden und auf Freigabe warten.- Returns:
- Liste der noch zu bestaetigenden Zertifikate.
- Throws:
java.lang.Exception
-
getKeyStore
public java.security.KeyStore getKeyStore() throws java.lang.Exception
Liefert den Keystore mit dem Zertifikat.- Returns:
- Keystore
- Throws:
java.io.IOException
- falls Keystore nicht existiert oder kein Zugriffjava.security.KeyStoreException
- sieheKeyStore.getInstance(String)
java.security.NoSuchAlgorithmException
- falls es Probleme beim Integritaetscheck gabjava.security.cert.CertificateException
- falls Zertifikate nicht aus dem Keystore geladen werden konntenjava.lang.Exception
- falls falsches Passwort (sieheApplicationCallback.getPassword()
)
-
removeTrustedCertificate
public void removeTrustedCertificate(java.security.cert.X509Certificate cert) throws java.lang.Exception
Entfernt das Zertifikat mit dem genannten Namen aus dem Keystore.- Parameters:
cert
- das zu entfernende Zertifikat.- Throws:
java.lang.Exception
-
loadCertificate
public java.security.cert.X509Certificate loadCertificate(java.io.InputStream is) throws java.lang.Exception
Laedt ein Zertifikat vom angegebenen InputStream und liefert es zurueck. Es wird hierbei weder zum Keystore hinzugefuegt, noch geloescht sondern lediglich geladen und zurueckgeliefert.- Parameters:
is
- der InputStream.- Returns:
- das geladene Zertifikat.
- Throws:
java.lang.Exception
-
loadCertificates
public java.util.Collection<java.security.cert.X509Certificate> loadCertificates(java.io.InputStream is) throws java.lang.Exception
Laedt alle Zertifikate vom angegebenen InputStream und liefert sie zurueck. Sie werden hierbei weder zum Keystore hinzugefuegt, noch geloescht sondern lediglich geladen und zurueckgeliefert.- Parameters:
is
- der InputStream.- Returns:
- die geladenen Zertifikate. Es koennen mehrere sein.
- Throws:
java.lang.Exception
-
getCertificateFactory
public java.security.cert.CertificateFactory getCertificateFactory() throws java.lang.Exception
Liefert die Certificate-Factory.- Returns:
- die Certificate-Factory.
- Throws:
java.security.cert.CertificateException
- falls Algorithmus nicht unterstützt wird (sieheCertificateFactory
)java.security.NoSuchProviderException
- falls Provider nicht unterstützt wird (sieheCertificateFactory
)java.lang.Exception
-
addTrustedCertificate
public java.lang.String addTrustedCertificate(java.security.cert.X509Certificate cert) throws java.lang.Exception
Fuegt dem Keystore ein Zertifikat hinzu und uebernimmt dabei auch alle noetigen Sicherheitsabfragen.- Parameters:
cert
- das Zertifikat.- Returns:
- der Alias-Name, unter dem das Zertifikat im Keystore abgelegt wurde.
Die Funktion liefert NIE
null
sondern wirft stattdessen eineOperationCanceledException
. - Throws:
java.lang.Exception
-
getSSLContext
public javax.net.ssl.SSLContext getSSLContext() throws java.lang.Exception
Liefert einen fertig konfigurierten SSLContext mit den Jameica-Zertifikaten.- Returns:
- SSLContect.
- Throws:
java.lang.Exception
-
getTrustManager
public JameicaTrustManager getTrustManager() throws java.lang.Exception
Liefert den Jameica-Trustmanager.- Returns:
- der Jameica-Trustmanager.
- Throws:
java.lang.Exception
-
encrypt
public void encrypt(java.io.InputStream is, java.io.OutputStream os) throws java.lang.Exception
Verschluesselt die Daten aus is und schreibt sie in os. Warnung: Die Daten werden direkt mit RSA verschluesselt. Die Funktion eignet sich daher nur fuer sehr kleine Datenmengen - z.Bsp. fuer Passwoerter.- Parameters:
is
- InputStream mit den unverschluesselten Daten.os
- OutputStream fuer die verschluesselten Daten.- Throws:
java.lang.Exception
-
decrypt
public void decrypt(java.io.InputStream is, java.io.OutputStream os) throws java.lang.Exception
Entschluesselt die Daten aus is und schreibt sie in os.- Parameters:
is
- InputStream mit verschluesselten Daten.os
- OutputStream mit unverschluesselten Daten.- Throws:
java.lang.Exception
-
-