Class 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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SSLFactory

        public SSLFactory()
        ct.
    • 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 Keystore
        java.lang.Exception - siehe getKeyStore()
      • 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 Keystore
        java.lang.Exception - siehe getKeyStore()
      • 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 stattdessen getSystemCertificate() 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 Keystore
        java.lang.Exception - siehe getKeyStore()
      • 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 Zugriff
        java.security.KeyStoreException - siehe KeyStore.getInstance(String)
        java.security.NoSuchAlgorithmException - falls es Probleme beim Integritaetscheck gab
        java.security.cert.CertificateException - falls Zertifikate nicht aus dem Keystore geladen werden konnten
        java.lang.Exception - falls falsches Passwort (siehe ApplicationCallback.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 (siehe CertificateFactory)
        java.security.NoSuchProviderException - falls Provider nicht unterstützt wird (siehe CertificateFactory)
        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 eine OperationCanceledException.
        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