aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spss.server/doc/moa_spss/faqs.htm79
-rw-r--r--spss.server/doc/moa_spss/sp-admin_2.htm89
-rw-r--r--spss.server/src/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java9
-rw-r--r--spss.server/src/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java43
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&uuml;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&ouml;chte gerne die CRL-Archivierung von MOA verwenden,
+ m&ouml;chte aber eine andere als die in der Konfiguration erw&auml;hnte
+ postgreSQL-Datenbank verwenden. Geht das?</p>
+ <p id="block"> <b>A:</b> Ja, das ist m&ouml;glich. Wenn Sie eine mySQL-Datenbank
+ verwenden m&ouml;chten, sind folgende Ma&szlig;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&uuml;gen Sie das im
+ Download enthaltene jar-File <tt>mysql-connector-java-3.x.x-stable-bin.jar</tt>
+ zum Klassenpfad f&uuml;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&uuml;ltige JDBC-URL zu Ihrer mySQL-Datenbank angeben. Hinweise
+ zum Format dieser URL f&uuml;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&ouml;chten, beispielsweise
+ <a href="http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html" target="_blank">Oracle</a>,
+ gehen Sie sinngem&auml;&szlig; wie oben vor und setzen zus&auml;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&auml;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;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;amp"</tt> ist erforderlich, da <tt>"&amp;"</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;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;amp"</tt> ist erforderlich,
+ da <tt>"&amp;"</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&uuml;r die CRL-Archivierung zu
+ verwendenden Datenbank ben&uuml;tzt werden soll. Er muss
+ den vollst&auml;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&auml;llen
+ erfolgt eine automatische Zuordnung zur passenden JDBC-Treiberklasse.
+ <hr />
+ <b>value: </b><br />
+ Gültige Werte: vollst&auml;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 &lt;certfilename&gt;</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.");
+ }
+ }
+ }
}
/**