diff options
| author | gregor <gregor@d688527b-c9ab-4aba-bd8d-4036d912da1d> | 2003-07-14 11:42:29 +0000 | 
|---|---|---|
| committer | gregor <gregor@d688527b-c9ab-4aba-bd8d-4036d912da1d> | 2003-07-14 11:42:29 +0000 | 
| commit | a042ee746381ba0765ed5df716fb1e5f79d4df86 (patch) | |
| tree | d1e3367ff9389bec98439775a4f617e1becce48e | |
| parent | 7906e946b71cfca6fe702f855756248b2a2376b3 (diff) | |
| download | moa-id-spss-a042ee746381ba0765ed5df716fb1e5f79d4df86.tar.gz moa-id-spss-a042ee746381ba0765ed5df716fb1e5f79d4df86.tar.bz2 moa-id-spss-a042ee746381ba0765ed5df716fb1e5f79d4df86.zip | |
Bug 7 fixed.tags/Build-1.0.10.D2-svn
git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/trunk@11 d688527b-c9ab-4aba-bd8d-4036d912da1d
4 files changed, 175 insertions, 45 deletions
| diff --git a/spss.server/doc/moa_spss/faqs.htm b/spss.server/doc/moa_spss/faqs.htm index 9c01f31ee..2865cd971 100644 --- a/spss.server/doc/moa_spss/faqs.htm +++ b/spss.server/doc/moa_spss/faqs.htm @@ -60,27 +60,76 @@ MOA ist eine Entwicklung des Bundesrechenzentrums BRZ in Zusammenarbeit mit A-Tr  </div -->  </td> -<td valign="top"> -<div id="titel">FAQs - Häufig gestellte Fragen </div> - -<div id="Administration" /> -<p id="subtitel">Konflikt zwischen JDK 1.3.1 und IAIK JCE Provider</p> -<p id="block"> -Auf Grund einer mangelhaften Implementierung in einigen Versionen des JDK 1.3.1 kann es beim Betrieb von MOA zu folgendem Problem kommen: Sun macht in der Implementierung von PKCS7.getCertificate() einen Downcast vom Interface java.security.Principal auf die eigene Implementierung, was zu einer ClassCastException führt, wenn der JCE-Provider von Sun nicht an erster Stelle in der List der Security-Provider installiert ist. MOA geht nun aber so vor, dass der JCE-Provider des IAIK an die erste Stelle installiert wird, wenn er zum Zeitpunkt der Konfiguration noch nicht installiert war. Wird dann von irgendeinem ClassLoader der jar-Verifier angeworfen, wird PKCS7.getCertificate() verwendet, und es kommt zu einer ClassCastException. -</p> -<p id="block"> -Wird MOA über die API-Schnittstelle verwendet, ist ein Workaround die manuelle Installation des IAIK-JCE-Providers nach dem Sun JCE-Provider (etwa an die letzte Stelle), bevor die MOA-Konfiguration aufgerufen wird. Bei Verwendung der Webservices ist die Möglichkeit der statischen Konfiguration der JCE-Provider mittels Angabe in der Datei $JAVA_HOME/jre/lib/security/java.security der einzige bekannte Workaround. Hierzu müssen die Einträge -<pre> +      <td valign="top">  +        <div id="titel">FAQs - Häufig gestellte Fragen </div> +        <div id="Administration" />  +          <p id="subtitel">Frage 1</p> +          <p id="block"><b>Q: </b>Beim Starten von MOA SPSS tritt folgende Exception auf:  +            <tt>java.lang.ClassCastException: iaik.asn1.structures.Name</tt>.  +            Was kann der Fehler sein?</p> +          <p id="block"> <b>A:</b> Auf Grund einer mangelhaften Implementierung  +            in einigen Versionen des JDK 1.3.1 kann es beim Betrieb von MOA zu  +            folgendem Problem kommen: Sun macht in der Implementierung von PKCS7.getCertificate()  +            einen Downcast vom Interface java.security.Principal auf die eigene  +            Implementierung, was zu einer ClassCastException führt, wenn der JCE-Provider  +            von Sun nicht an erster Stelle in der List der Security-Provider installiert  +            ist. MOA geht nun aber so vor, dass der JCE-Provider des IAIK an die  +            erste Stelle installiert wird, wenn er zum Zeitpunkt der Konfiguration  +            noch nicht installiert war. Wird dann von irgendeinem ClassLoader  +            der jar-Verifier benützt, wird PKCS7.getCertificate() verwendet,  +            und es kommt zu einer ClassCastException. </p> +          <p id="block"> Wird MOA über die API-Schnittstelle verwendet, ist ein  +            Workaround die manuelle Installation des IAIK-JCE-Providers nach dem  +            Sun JCE-Provider (etwa an die letzte Stelle), bevor die MOA-Konfiguration  +            aufgerufen wird. Bei Verwendung der Webservices ist die Möglichkeit  +            der statischen Konfiguration der JCE-Provider mittels Angabe in der  +            Datei $JAVA_HOME/jre/lib/security/java.security der einzige bekannte  +            Workaround. Hierzu müssen die Einträge  +          <pre>    security.provider.1=sun.security.provider.Sun    security.provider.2=com.sun.rsajca.Provider    </pre> -durch folgenden Eintrag ergänzt werden: -<pre> +          durch folgenden Eintrag ergänzt werden:  +          <pre>    security.provider.3=iaik.security.provider.IAIK  </pre> -</p> +          <p></p> +          <hr> +          <p id="subtitel">Frage 2</p> +          <p id="block"><b>Q: </b>Ich möchte gerne die CRL-Archivierung von MOA verwenden,  +            möchte aber eine andere als die in der Konfiguration erwähnte  +            postgreSQL-Datenbank verwenden. Geht das?</p> +          <p id="block"> <b>A:</b> Ja, das ist möglich. Wenn Sie eine mySQL-Datenbank  +            verwenden möchten, sind folgende Maßnahmen zu treffen:</p> +        </div> +        <ul> +          <div id="block"><li>  +            <a href="http://www.mysql.com/downloads/api-jdbc.html" target="_blank">Laden</a>  +              Sie den mySQL-JDBC-Connector herunter und fügen Sie das im  +              Download enthaltene jar-File <tt>mysql-connector-java-3.x.x-stable-bin.jar</tt>  +              zum Klassenpfad für MOA SPSS hinzu. +          </li> +          <li>Geben Sie im MOA-Konfigurationsfile mit Hilfe des generischen Konfigurationsparameters  +            <tt><a href="sp-admin_2.htm#DataBaseArchiveParameter.JDBCUrl">DataBaseArchiveParameter.JDBCUrl</a></tt>  +            eine gültige JDBC-URL zu Ihrer mySQL-Datenbank angeben. Hinweise  +            zum Format dieser URL für mySQL finden Sie <a href="http://www.mysql.com/documentation/connector-j/index.html" target="_blank">hier</a>.  +          </li></div> +        </ul> +		<p id="block">Wenn Sie eine andere Datenbank verwenden möchten, beispielsweise  +          <a href="http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html" target="_blank">Oracle</a>,  +          gehen Sie sinngemäß wie oben vor und setzen zusätzlich  +          noch folgenden Schritt:</p> +        <ul> +          <li>  +            <div id="block" />Geben Sie im MOA-Konfigurationsfile mit  +              Hilfe des generischen Konfigurationsparameters <tt><a href="sp-admin_2.htm#DataBaseArchiveParameter.JDBCDriverClass">DataBaseArchiveParameter.JDBCDriverClass</a></tt>  +              den vollständig qualifizierten Klassennamen des JDBC-Treibers  +              an, der die Verbindung zu Ihrer Datenbank herstellt.</div> +          </li> +        </ul> -</td></tr></table> +      </td> +    </tr></table> diff --git a/spss.server/doc/moa_spss/sp-admin_2.htm b/spss.server/doc/moa_spss/sp-admin_2.htm index 147a8ba9c..112d7dd13 100644 --- a/spss.server/doc/moa_spss/sp-admin_2.htm +++ b/spss.server/doc/moa_spss/sp-admin_2.htm @@ -230,26 +230,59 @@ Default-Wert: <tt>false</tt>  </td></tr>  </table> -<table border="0" cellspacing="3" cellpadding="2"> -<tr id="DataBaseArchiveParameter.JDBCUrl"><th align="left">name: DataBaseArchiveParameter.JDBCUrl</th></tr> -<tr><td id="info"> -Gibt eine JDBC-URL zur Datenbank an, in der Revozierungsinformation archiviert werden soll.  Wird dieser -Parameter nicht gesetzt, dann wertet MOA den Parameter <tt>archiveRevocationInfo</tt> nicht aus der Konfigurationsdatei -aus sondern setzt den Wert automatisch auf <tt>false</tt>. -<br /> -Der genaue Aufbau der JDBC-URL ist abhängig von der verwendeten Datenbank.  Im Fall von PostgreSQL kann folgende -URL verwendet werden: <tt>jdbc:postgresql://host/moadb?user=moauser&amp;password=moapassword</tt> wobei -<tt>host, moadb, moauser</tt> und <tt>moapassword</tt> an die tatsächlich verwendete Datenbank angepasst werden muss.<br /> -Die Verwendung von <tt>"&amp"</tt> ist erforderlich, da <tt>"&"</tt> einen Fehler bei der Validierung der -Konfigurationsdatei verursacht. -<br /> -Die Archivdaten werden nur MOA-SPSS-intern benötigt und das Format ist daher für den Betrieb des Servers nicht relevant. -<hr /> -<b>value: </b><br />Gültige Werte: String -</td></tr> -</table> - -</p> +                <table border="0" cellspacing="3" cellpadding="2"> +                  <tr id="DataBaseArchiveParameter.JDBCUrl"> +                    <th align="left">name: DataBaseArchiveParameter.JDBCUrl</th> +                  </tr> +                  <tr> +                    <td id="info"> Gibt eine JDBC-URL zur Datenbank an, in der  +                      Revozierungsinformation archiviert werden soll. Wird dieser  +                      Parameter nicht gesetzt, dann wertet MOA den Parameter <tt>archiveRevocationInfo</tt>  +                      nicht aus der Konfigurationsdatei aus sondern setzt den  +                      Wert automatisch auf <tt>false</tt>. <br /> +                      Der genaue Aufbau der JDBC-URL ist abhängig von der verwendeten  +                      Datenbank. Im Fall von PostgreSQL kann folgende URL verwendet  +                      werden: <tt>jdbc:postgresql://host/moadb?user=moauser&amp;password=moapassword</tt>  +                      wobei <tt>host, moadb, moauser</tt> und <tt>moapassword</tt>  +                      an die tatsächlich verwendete Datenbank angepasst werden  +                      muss.<br /> +                      Die Verwendung von <tt>"&amp"</tt> ist erforderlich,  +                      da <tt>"&"</tt> einen Fehler bei der Validierung der  +                      Konfigurationsdatei verursacht. <br /> +                      Die Archivdaten werden nur MOA-SPSS-intern benötigt und  +                      das Format ist daher für den Betrieb des Servers nicht relevant.  +                      <hr /> +                      <b>value: </b><br /> +                      Gültige Werte: String </td> +                  </tr> +                </table> +                <table border="0" cellspacing="3" cellpadding="2"> +                  <tr id="DataBaseArchiveParameter.JDBCDriverClass"> +                    <th align="left">name: DataBaseArchiveParameter.JDBCDriverClass</th> +                  </tr> +                  <tr>  +                    <td id="info">  +                      <p>Dieser Parameter kann verwendet werden, um MOA SPSS den  +                        Klassennamen des JDBC-Datenbanktreibers bekannt zu geben,  +                        der zur Ansprache der für die CRL-Archivierung zu  +                        verwendenden Datenbank benützt werden soll. Er muss  +                        den vollständig qualifizierten Klassennamen der JDBC-Treiberklasse  +                        enthalten.  +                      </p> +                      <p>Der Parameter wird nur dann ausgewertet, wenn der generische  +                        Konfigurationsparameter <tt>archiveRevocationInfo</tt>  +                        auf den Wert <tt>true</tt> gesetzt ist.  +                      <p>Hinweis: Wird im generischen Konfigurationsparameter  +                        <tt>DataBaseArchiveParameter.JDBCUrl</tt> entweder eine  +                        postgreSQL- oder eine mySQL-Datenbank referenziert, braucht  +                        dieser Paramter nicht angegeben zu werden; in diesen Standardfällen  +                        erfolgt eine automatische Zuordnung zur passenden JDBC-Treiberklasse. +                      <hr /> +                      <b>value: </b><br /> +                      Gültige Werte: vollständig qualifizierter Java-Klassenname</td> +                  </tr> +                </table> +                <p></p>  <div id="HardwareKeyModule" />  <p id="block"> @@ -278,7 +311,7 @@ interpretiert.</td>  <td id="info">der PIN für die Aktivierung des privaten Schlüssels</td>  </tr>  </table> -</p> +<p></p>  <div id="SoftwareKeyModule" />  <p id="block"> @@ -301,7 +334,7 @@ Pfadnamen relativ zur MOA SP/SS Konfigurationsdatei.</td>  <td id="info">das Passwort zur Aktivierung des privaten Schlüssels in der PKCS#12-Datei</td>  </tr>  </table> -</p> +<p></p>  <div id="KeyGroup" />  <p id="block"> @@ -345,7 +378,7 @@ INFO | 10 12:56:43,023 | main |  <li>Für jeden verfügbaren Schlüssel werden die Inhalte der Elemente Key/KeyModuleID, Key/KeyCertIssuerSerial/X509IssuerName und Key/KeyCertIssuerSerial/X509SerialNumber dem Log-File entnommen und in die Konfigurationsdatei eingetragen</li>  <li>Nach einem neuerlichen Start von MOA SP/SS stehen die Key-Definitionen zur Verfügung</li>  </ol> -</p> +<p></p>  <p id="block">Sind die zu den zu konfigurierenden Schlüsseln zugehörigen Zertifikate bekannt,  kann alternativ die Konfiguration in einem Schritt erfolgen, indem  die benötigten Informationen mit dem Skript <tt>certtool -info <certfilename></tt> aus dem Zertifikat gelesen werden. @@ -400,7 +433,7 @@ Gültige Werte:<br />  <tt>unspecified, keyCompromise, cACompromise, affiliationChanged, superseded,  cessationOfOperation, certificateHold, removeFromCRL, privilegeWithdrawn, aACompromise</tt></li>  </ul> -</p> +<p></p>  <div id="Create" />  <p id="block"> @@ -433,7 +466,7 @@ Die folgende Tabelle bezeichnet jene Elemente, die in den Dateien als Dokumentel  </table>  <br /><br /> -</p> +<p></p>  <div id="TrustProfile" />  <p id="block"> @@ -450,9 +483,9 @@ TrustProfile enthält zwei Attribute:  (nur das Schema file wird unterstützt).  Alle für diese TrustProfileID vertrauenswürdigen  Zertifikate werden in diesem Verzeichnis gespeichert.</li>  </ul> -</p> +<p></p> -</td></tr></table> +</div></div></div></div></div></div></div></div></div></div></div></div></div></td></tr></table>  <br /><br /> @@ -532,5 +565,5 @@ wird die ursprüngliche Konfiguration beibehalten.  </div> -</body> +</div></div></body>  </html>
\ No newline at end of file diff --git a/spss.server/src/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java b/spss.server/src/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java index fbae33b72..c3ba9fe23 100644 --- a/spss.server/src/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java +++ b/spss.server/src/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java @@ -76,9 +76,16 @@ public class ConfigurationProvider {     * The name of the generic configuration property giving the database URL of     * the CRL archive.     */ -  public static final String DATABASE_ARCHIVE_PARAMETER_PROPERTY = +  public static final String DATABASE_ARCHIVE_PARAMETER_URL_PROPERTY =      "DataBaseArchiveParameter.JDBCUrl"; +  /** +   * The name of the generic configuration property giving the JDBC driver  +   * class name for accessing the database used for the the CRL archive. +   */ +  public static final String DATABASE_ARCHIVE_PARAMETER_DRIVERCLASS_PROPERTY = +    "DataBaseArchiveParameter.JDBCDriverClass"; +    /** The name of the generic configuration property determining whether     * to check the revocation status of signer certificates. */    public static final String REVOCATION_CHECKING_PROPERTY = "checkRevocation"; diff --git a/spss.server/src/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java b/spss.server/src/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java index 22d798bc3..daff07bd2 100644 --- a/spss.server/src/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java +++ b/spss.server/src/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java @@ -4,6 +4,10 @@ import iaik.pki.store.revocation.archive.ArchiveConfiguration;  import iaik.pki.store.revocation.archive.ArchiveParameter;  import iaik.pki.store.revocation.archive.ArchiveTypes; +import java.sql.Driver; +import java.sql.DriverManager; +import java.util.Enumeration; +  import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;  /** @@ -30,11 +34,48 @@ public class ArchiveConfigurationImpl    public ArchiveConfigurationImpl(ConfigurationProvider config) {      String jdbcUrl =        config.getGenericConfiguration( -        ConfigurationProvider.DATABASE_ARCHIVE_PARAMETER_PROPERTY); +        ConfigurationProvider.DATABASE_ARCHIVE_PARAMETER_URL_PROPERTY);      if (jdbcUrl != null) {        this.archiveParameters = new DataBaseArchiveParameterImpl(jdbcUrl);      } +     +    // Register JDBC driver class specified in generic configuration parameters +    String jdbcDriverClass = config.getGenericConfiguration( +      ConfigurationProvider.DATABASE_ARCHIVE_PARAMETER_DRIVERCLASS_PROPERTY); +    if (jdbcDriverClass != null) +    { +      try +      { +        Class.forName(jdbcDriverClass); +      } +      catch (ClassNotFoundException e) +      { +        // TODO 20030709 GK Improve exception handling +        throw new RuntimeException("JDBC driver class \"" + jdbcDriverClass + " could not be found.");        +      } +       +      Enumeration regDrivers = DriverManager.getDrivers(); +      boolean isRegistered = false; +      while (regDrivers.hasMoreElements()) +      { +        Object currentDriver = regDrivers.nextElement(); +        if (jdbcDriverClass.equals(currentDriver.getClass().getName())) isRegistered = true; +      } +      if (!isRegistered) +      { +        // Workaround for a driver which does not register itselve at invocation of Class.forName(drvname) +        try +        { +          DriverManager.registerDriver((Driver)Class.forName(jdbcDriverClass).newInstance());  +        } +        catch (Exception e) +        { +          // TODO 20030709 GK Improve exception handling +          throw new RuntimeException("Registering JDBC driver \"" + jdbcDriverClass + " failed.");        +        } +      } +    }    }    /** | 
