Class SSLFactory

java.lang.Object
de.willuhn.jameica.security.SSLFactory

public class SSLFactory extends Object
Diese Klasse uebernimmt die Erstellung der SSL-Zertifikate fuer die sichere RMI-Kommunikation.
  • Constructor Details

    • SSLFactory

      public SSLFactory()
      ct.
  • Method Details

    • init

      public void init() throws Exception
      Prueft die Zertifikate und erstellt sie bei Bedarf.
      Throws:
      Exception
    • changePassword

      public void changePassword() throws Exception
      Aendert das Passwort des Keystores. Die Eingaben erfolgen ueber den ApplicationCallback.
      Throws:
      Exception
      See Also:
    • getKeyStoreFile

      public File getKeyStoreFile()
      Liefert die Datei mit dem Keystore.
      Returns:
      Keystore.
    • getPublicKey

      public PublicKey getPublicKey() throws Exception
      Liefert den PublicKey von Jameica.
      Returns:
      Private-Key.
      Throws:
      Exception
    • getPrivateKey

      public PrivateKey getPrivateKey() throws Exception
      Liefert den PrivateKey von Jameica.
      Returns:
      Private-Key.
      Throws:
      Exception
    • getSystemCertificate

      public X509Certificate getSystemCertificate() throws Exception
      Liefert das X.509-Zertifikat der Jameica-Installation.
      Returns:
      X.509-Zertifikat.
      Throws:
      KeyStoreException - falls kein Zugriff auf Keystore
      Exception - siehe getKeyStore()
    • getTrustedCertificates

      public X509Certificate[] getTrustedCertificates() throws Exception
      Liefert eine Liste aller installierten Zertifikate ausser dem Jameica-eigenen System-Zertifikat.
      Returns:
      Liste der installieren Zertifikate.
      Throws:
      KeyStoreException - falls kein Zugriff auf Keystore
      Exception - siehe getKeyStore()
    • getTrustedCertificate

      public X509Certificate getTrustedCertificate(String alias) throws 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:
      KeyStoreException - falls kein Zugriff auf Keystore
      Exception - siehe getKeyStore()
    • getUnTrustedCertificates

      public X509Certificate[] getUnTrustedCertificates() throws 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:
      Exception
    • getKeyStore

      public KeyStore getKeyStore() throws Exception
      Liefert den Keystore mit dem Zertifikat.
      Returns:
      Keystore
      Throws:
      IOException - falls Keystore nicht existiert oder kein Zugriff
      KeyStoreException - siehe KeyStore.getInstance(String)
      NoSuchAlgorithmException - falls es Probleme beim Integritaetscheck gab
      CertificateException - falls Zertifikate nicht aus dem Keystore geladen werden konnten
      Exception - falls falsches Passwort (siehe ApplicationCallback.getPassword())
    • removeTrustedCertificate

      public void removeTrustedCertificate(X509Certificate cert) throws Exception
      Entfernt das Zertifikat mit dem genannten Namen aus dem Keystore.
      Parameters:
      cert - das zu entfernende Zertifikat.
      Throws:
      Exception
    • loadCertificate

      public X509Certificate loadCertificate(InputStream is) throws 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:
      Exception
    • loadCertificates

      public Collection<X509Certificate> loadCertificates(InputStream is) throws 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:
      Exception
    • getCertificateFactory

      public CertificateFactory getCertificateFactory() throws Exception
      Liefert die Certificate-Factory.
      Returns:
      die Certificate-Factory.
      Throws:
      CertificateException - falls Algorithmus nicht unterstützt wird (siehe CertificateFactory)
      NoSuchProviderException - falls Provider nicht unterstützt wird (siehe CertificateFactory)
      Exception
    • addTrustedCertificate

      public String addTrustedCertificate(X509Certificate cert) throws 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:
      Exception
    • getSSLContext

      public SSLContext getSSLContext() throws Exception
      Liefert einen fertig konfigurierten SSLContext mit den Jameica-Zertifikaten.
      Returns:
      SSLContect.
      Throws:
      Exception
    • getTrustManager

      public JameicaTrustManager getTrustManager() throws Exception
      Liefert den Jameica-Trustmanager.
      Returns:
      der Jameica-Trustmanager.
      Throws:
      Exception
    • encrypt

      public void encrypt(InputStream is, OutputStream os) throws 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:
      Exception
    • decrypt

      public void decrypt(InputStream is, OutputStream os) throws Exception
      Entschluesselt die Daten aus is und schreibt sie in os.
      Parameters:
      is - InputStream mit verschluesselten Daten.
      os - OutputStream mit unverschluesselten Daten.
      Throws:
      Exception