Home
Design und Implementierung der FlexiTRUST-CA als Java
Contents
1. 121 10 2 Paz cio rr e RR EEN 122 Abbildungsverzeichnis 2 1 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 3 10 4 1 42 43 44 4 5 4 6 4 7 4 8 4 9 Workshop 62 0 2 2 eg E A AA 13 Anwendungsf lle der Domain Bench 21 Anwendungsf lle der Domain Entrance 22 Anwendungsf lle der Domain Et 23 Anwendungsf lle der Domain Request 24 Anwendungsf lle der Domain Stock 2 22 2200 29 Gesch ftsklassen der Domain Bench 28 Gesch ftsklassen der Domain Entrance 29 Gesch ftsklassen der Domain Exit a 29 Gesch ftsklassen der Domain Request 30 Gesch ftsklassen der Domain Stock e 32 Business Tier und EIS Tier 2 ee ee 34 Struktur FlexiTRUST CA oaaae 36 Enterprise JavaBeans Bench noaa e 37 Enterprise JavaBeans Entrance o o 38 Enterprise JavaBeans Exit o 39 Enterprise JavaBeans Request o o 40 Enterprise JavaBeans Stock 43 Enterprise JavaBeans CaStock o o o 46 JMX Browser Agent View o e 47 ABBILDUNGS VERZEICHNIS 7 4 10 4 11 4 12 4 13 4 14 4 15 4 16 6 1 7 1 8 1 8 2 9 1 9 2 9 3 9 4 9 5 9 6 9 7 9 8 9 9 Anwendungsf lle des Pkcs7Server Entrance 48 Anwendungsf lle des Pkcs7Server Exit o 50 Anwendungsf
2. 4 55 nittests e 2 435 85 saw es ob os ANO eierlech amp Bias pe A 457 Value Objects cos 24 ae u a 2 se Br e 5 Umsetzung der fachlichen Anforderungen 3 1 Clustering 2 sa aa e ea nenn a A E 3 2 LONE ee AT an EEN ei ee 5 3 Schnittstellen zu externen Systemen o 5 4 Konfiguration und Management Datenmodell 6 1 bersicht oaa aa 62 Die Tabellen zu 3 ea ed e a AE e A Installation des Systems 7 1 Systemarchitektur aoaaa a 7 1 1 Die Ant Build Files oaaae 7 2 Datenbank Server 2405 004 5 oS eS aOR EES EN 7 2 1 Systemvoraussetzungen 7 2 2 Installation des Datenbank Masters 7 2 3 Installation eines Replikanten 72 4 Update der Anwendung 7 2 5 Deinstallation e 7 3 Enterprise Application Server 7 3 1 Systemvoraussetzungen 7 3 2 Vorbereitende Schritte 55 SN 56 37 34 58 59 59 61 61 62 62 62 63 63 63 INHALTS VERZEICHNIS 4 7 3 3 Installation der Anwendung 13 7 3 4 Start der FlexiTRUST CA 22 76 7 3 5 Initialisierung der FlexiTRUST CA 2 Zi 7 3 6 Herunterfahren der FlexiTRUST CA 2 2 2 77 7 3 7 Update der Anwendung 77 7 3 8 Deinstallation 78 7 3 9 Distributionsversion der FlexiTRUST CA 78 8 Betrieb des Systems 79 8 1 Datenbank Server 19 8 2 A
3. es gibt nur einen Unterschied zu einem Issuerantrag Der Administratorantrag enth lt anstelle der Zertifikatskette den Namen des Issuers seines Zertifikats 3 2 5 Zugriff auf gespeicherte Daten Die CA bietet weitere M glichkeiten auf ihre gespeicherten Daten zuzugreifen Bei spiele hierf r sind das Abrufen einer Zertifikatskette eines beliebigen Issuer Admin 3Dies ist beim momentanen Entwicklungsstand noch nicht gegeben da keine M glichkeit der Verif ikation des initialen Issuers besteht Um das gew nschte Verfahren zu realisieren m sste bei Einbringung eines Issuers zwischen initialem und zus tzlichem Issuer unterschieden werden siehe Abschnitt 10 1 3 CaStock Dies ist beim momentanen Entwicklungsstand noch nicht gegeben da keine M glichkeit der Verif ikation des initialen Administrators besteht Um das gew nschte Verfahren zu realisieren m sste bei Einbrin gung eines Administrators zwischen initialem und zus tzlichen Administrator unterschieden werden siehe Abschnitt 10 1 3 CaStock KAPITEL 3 DIE FLEXITRUST CA 20 istrator oder Userzertifikats das Abrufen des aktuellen Status eines momentan bear beiteten Antrags das Abrufen der vollst ndigen Revokationsliste das Abrufen aller Zertifikate eines bestimmten Users und das Abrufen aller momentan g ltigen Zertifi kate eines bestimmten Users 3 3 Abbildung der CA auf den JWorkShop Um mit Hilfe des JWS die CA entwickeln zu k nnen mu
4. e db install Konfiguriert die Datenbank Hierbei werden alle Daten einer eventuell bereits existierenden Datenbank gel scht e jboss install Konfiguriert den JBoss Application Server e dist single Erzeugt die Distributionsversionen der FlexiTRUST CA Es werden f r die ei gentliche CA mit dem EJB Tier und den Serverteil je ein Archiv im Verzeichnis 66 KAPITEL 7 INSTALLATION DES SYSTEMS p7in File System p7Out File System lt 10 gt writes Application Server T A j A WorkerData 4 y WorkerPK WorkerData U Pkes7Entrance MBean Service i n ji f I i Pkos7Exit y MBean Service create I f l call ext Pkcs7Session Session Bean HA JNDI Ki Multiple nodes CryptoBench Session Bean PkestiBench Session Bean r i Application Server 1 i i i Session Bean Request Entity Bean Card Reader Hardware lt lO gt Application Server Pkes11 MBean Service HA JNDI Database Server SQL caDB Database Abbildung 7 1 Systemarchitektur 67 KAPITEL 7 INSTALLATION DES SYSTEMS 68 ca dist erzeugt welche auf die im Cluster verwendeten Nodes tibertragen wer den miissen Es k n
5. 360 Remove for request workerPK failed 361 362 363 364 365 PER 366 Inserts a Request 367 param con Connection 368 param workerPK The primary key of the Request 369 param worker The Request 370 throws SQLException Database access error 371 Wa 372 private void insertX509PllRequest Connection con 373 WorkerPK workerPK 374 Worker worker 375 throws SQLException 376 377 String insertStatement 378 insert into x509PllRequests 379 requestPK attribute 380 values 381 382 PreparedStatement prepStmt 383 con prepareStatement insertStatement 384 385 int offset workerPK 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 432 434 435 436 437 438 439 440 441 442 443 444 445 KAPITEL 9 ERWEITERUNG DES SYSTEMS 112 storePreparedStatementFragment prepStmt 1 worker storePreparedConcreteStatementFragment prepStmt offset int rowCount prepStmt executeUpdate prepStmt close if rowCount 0 throw new NoSuchEntityException Insert for request workerPK failed Updates a Request param con Connection param workerPK The primary key of the Request param worker The Request throws SQLException Database access error ER private void updateX509P11Request Connection con WorkerPK workerPK Worker worker
6. Abbildung 4 6 Enterprise JavaBeans Request Die in Abbildung 4 6 dargestellten Klassen werden in den nachfolgenden Abschnitten beschrieben Klasse RequestEJB Die Entity Bean RequestEJB enth lt die Daten eines einzelnen Requests im EJB Tier Sie ist eine Spezialisierung der Klasse Request aus der Dom ne Die Enterprise JavaBean kann Darstellungen des Requests in Form von JavaBean Komponenten lie fern sowie Daten auch umgekehrt wieder in die EJB einbringen Bei diesen JavaBean Komponenten handelt es sich um Klassen aus dem Paket de tud cdc flexiTrust ca domain request data vgl hierzu auch Abschnitt 4 5 7 Value Objects KAPITEL 4 SYSTEMARCHITEKTUR 41 Klasse RequestDAO Die Klasse RequestDAO ist die Implementierung des Data Access Objects des Re quests und zeichnet sich fiir alle mit der persistenten Datenspeicherung zusammenh n genden Pflichten verantwortlich Abh ngig von der Art der Requests stellt sie SQL Statements zur Verfiigung deren Befiillung an die Dom nen Klasse Request und die spezialisierten Requests delegiert wird Klasse RequestPK Die Klasse RequestPK beschreibt den internen Primary Key eines Requests Der Lebenszyklus eines Requests Im folgenden wird dargestellt welche Schritte durchlaufen werden wenn ein Request auf einer Bench zur Bearbeitung eintrifft 1 Die processRequest Methode der Bench wird mit dem Primary Key des Re quests aufgerufen 2 Die Bench weist den Container
7. Solaris 7 oder Microsoft Windows 2000 oder h her e DBMS MySQL Max 3 23 52 oder h her 7 2 2 Installation des Datenbank Masters Nach Installation von MySQL Max gem Anleitung Com02c bzw mitgelieferter INSTALL Datei ist der Datenbankserver zu deaktivieren damit weitere Konfigurati onsschritte vorgenommen werden k nnen Unter Windows wird dies ber die System Services durchgef hrt unter Unix gen gt das als root ausgef hrte Kommando ete init d mysql stop KAPITEL 7 INSTALLATION DES SYSTEMS 71 Ist der Server deaktiviert mu im Installationsverzeichnis eine Konfigurationsdatei an gelegt werden Windowsstandard C mysql my ini Unixstandard var lib mysql my cnf Eine Beispielkonfiguration mit aktiviertem Binary Logging siehe Abschnitt 7 2 Replikation der Datenbank ist in ca install mysql max my cnf master an gelegt Diese Beispielkonfiguration erstellt eine Datenbank mit der initialen Gr e von 100 Megabyte die bei Bedarf automatisch auf eine maximale Gr e von 1000 Me gabyte ausgedehnt wird Unter Windows existiert my ini bereits diese mu mit den Eintr gen von my cnf master angepa t werden Da der Datenbankserver keine Verzeichnisse anlegt ist als user mysql das Verzeichnis var lib mysql caDB f r Windows C mysql data caDB anzulegen Nun kann der Server reaktiviert werden bei Windows erfolgt dies analog zum Deaktivieren unter Unix ber das Kommando etc init d mysql star
8. loadResultSetFragment int tinitWork void work void step1_VerifySig void step2_Insertissuer void storePreparedStatementFragment int 1SSUER int ADMIN int beanRepresentation WorkerData beanRepresentation WorkerData privKey PrivateKey keyPass String request Request X509CrtRequest X509CrtRequest X509CrtRequest updateBeanData void loadResultSetFragment int storePreparedStatementFragment int initWork void work void step1_VerifySig void step2_SignCert void showCert String beanRepresentation WorkerData revocPass String certificate X509Certificate X509CRT int X509CRL int Worker Request request GenericWorker data AdminRequestData X509CrtRequestData x509CriRequestData lssuerRequestData updateBeanData void loadResultSetFragment int loadConcreteResultSetFragment int storePreparedStatementFragment int storePreparedConcreteStatementFragment int tinitWork void work void verifySig void beanRepresentation WorkerData workerPK WorkerPK mn GenericWorker X509CriRequest issuer String revocPass String X509Cr1 X509Crl request Request X509CrlRequest X509CrlRequest X509CrlRequest updateBeanData void loadResultSetFragment int storePreparedStatementFragment int initWork void work void step1_VerifySig void step2_RevokeCert void beanRepresentation
9. pkcs11SessionHome null ctx null J ejbCreate throws CreateException An entity EJB object could not be created 7 public void ejbCreate throws CreateException try exitHome ExitHome EJBServiceLocator lookupHome ExitHome class ejb CDC FlexiTRUST ExitEJB catch NamingException ex throw new EJBException ex try requestLocalHome RequestLocalHome EJBServiceLocator lookupLocalHome RequestLocalHome class ejb CDC FlexiTRUST RequestLocalEJB catch NamingException ex throw new EJBException ex try pkcs11SessionHome Pkcs11SessionHome EJBServiceLocator lookupHome Pkcs11SessionHome class ejb CDC FlexiTRUST PkcsllSessionEJB catch NamingException ex throw new EJBException ex JKR A kA III Ok R Business Methods EA J Processes the request param workerPK The primary key of the request throws FinderException If the request was not found throws CaException General CaException ejb interface method view type remote xf public void processRequest WorkerPK workerPK throws FinderException CaException RequestLocal request request requestLocalHome findByPrimaryKey workerPK try request work this catch EJBException ex request setFailed throw ex catch CaException ex 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205
10. state creationDate retirementDate nextBench x509Certificate revocPass privKey from requests R x509CrtRequests X type sigDat keyPass 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 KAPITEL 9 ERWEITERUNG DES SYSTEMS 109 where R requestPK and R requestPK X requestPK break case Types X509CRL selectStatement select state creationDate retirementDate type sigDat nextBench issuer crlEntry revocPass x509Crl from requests R x509CrlRequests X where R requestPK and R requestPK X requestPK break case Types X509P11 selectStatement select State creationDate retirementDate type sigDat nextBench attribute from requests R x509P11Requests X where R requestPK and R requestPK X requestPK break case Types ADMIN selectStatement select state creationDate retirementDate type sigDat nextBench adminDN adminPrivKey certificate certSerial issuerDN validFrom validUntil revocPass keyPass sigAlg secProv certChain from requests R adminRequests A
11. KAPITEL 9 ERWEITERUNG DES SYSTEMS 83 9 1 1 Spezifikation der Anwendungsf lle Anwendungsf lle der Domain Bench Die nachfolgende Abbildung 9 1 zeigt alle Anwendungsf lle des Bereichs Bench und ihre Beziehungen untereinander lt C process request gt calculate on object gt x Su Za include gt gt Aig s lt lt include gt s ae ie e a C_delegate to exit y A Pkcs11Bench a gt pee g e a Se go Sa e e read object y write object gt Abbildung 9 1 Anwendungsf lle der Domain Bench e process request Dieser Anwendungsfall beschreibt die Abarbeitung von Ar beitsschritten des Requests auf der Bench Hier wird eine lokale Instanz des Requests erzeugt und dessen Methode work aufgerufen Die Bench stellt ihm hierbei ihre spezifischen Funktionalit ten zur Verf gung delegate to exit Nachdem ein Request alle auf dieser Bench m glichen Ar beitsschritte abgeschlossen hat wird er von dieser an die von ihm spezifizierte n chste Bench weitergegeben read object write object calculate on object Die Pkcs11Bench stellt den Requests Methoden f r den Zugriff auf die Kartenhardware zur Verf gung Anwendungsf lle der Domain Request Die nachfolgende Abbildung 9 2 zeigt alle Anwendungsf lle des Bereichs Request und ihre Beziehungen untereinander e work p11 Die Spezialisierung des Anwendungsfalls work f r den X509P11Re quest KAPITEL 9 ERWEITERUNG DES SYSTEMS 84 EI N 7 w
12. ber findByPrimaryKey auf das LocalHome Interface der RequestEJB an eine lokale Instanz der Request Entity zu erzeu gen 3 Der Container ruft ejbLoad der RequestEJB auf Diese greift auf die Daten bank zu und fiihrt ein select auf alle dem spezifischen Request zugeh rigen Attribute aus Die Auswertung des ResultSets wird an die Gesch ftsklasse der RequestEJB der domain request Request bergeben Hierzu wird die Me thode loadResultSetFragment aufgerufen Der allgemeine Teil des ResultSets wird von der Gesch ftsklasse direkt ausgewertet die spezifischen Attribute von der Spezialisierung Anschlie end liefert der Container der Bench eine Referenz auf das Locallnterface der Request Entity zur ck 4 Die Bench ruft die Methode work des Requests auf und bergibt ihm hierbei als Parameter eine Referenz auf sich selbst 5 Die Superklasse Request der RequestEJB leitet den Aufruf an den Request weiter welcher den n chsten anstehenden Arbeitsschritt ausf hrt W hrend die ser Zeit hat er vollen Zugriff auf die Public Methoden der Gesch ftsklasse der Bench KAPITEL 4 SYSTEMARCHITEKTUR 42 6 Nachdem der Request den Arbeitsschritt durchgef hrt hat sind seine Attribute nicht mehr mit den Daten in der Datenbank identisch Daher ruft der Container die Methode ejbStore der Request EJB auf die analog zu ejbLoad die aktua lisierten Daten persistent in die Datenbank einbringt 7 Anschlie end fragt die Bench den Request an wel
13. die CA auf die Struktur des JWS abgebildet werden 3 3 1 Antr ge Ein Antrag wird auf einen JWS Worker abgebildet und Request genannt F r die ver schiedenen Antr ge existieren spezialisierte Requests Beispiele f r Spezialisierungen sind Zertifikatsantr ge Revokationsantr ge und Antr ge auf eine neue Revokationsli ste 3 3 2 Speicherung von Daten Das Speichern und Abrufen von allgemeinen persistenten Daten wird auf den JWS Stock abgebildet Der so innerhalb der CA erweiterte Stock wird CaStock genannt 3 3 3 Funktionen zur Bearbeitung von Antr gen S mtliche Funktionen zur Bearbeitung von Antr gen werden auf JWS Workbenches abgebildet F r die verschiedenen Arten von Funktionen existieren spezialisierte Work benches ein Beispiel hierf r ist die CryptoBench f r kryptographische Funktionen wie Verifikation und Signierung von Daten 3 3 4 Antragstellung Ein Operator tr gt Antr ge der RA in Dateiform an die CA heran Sie werden von einem Leseproze der als Entrance abgebildet wird eingelesen 3 3 5 Antragsfertigstellung Ist ein Antrag vollst ndig bearbeitet wird er von einem Schreibproze der als Exit abgebildet wird in Dateiform abgelegt und so der IS zug nglich gemacht KAPITEL 3 DIE FLEXITRUST CA 21 3 4 Spezifikation der Anwendungsf lle In diesem Abschnitt werden aus den in Abschnitt 3 2 Funktionalit ten der Flexi TRUST CA beschriebenen Funktionalit ten einzelne Anwendungsf l
14. nnen ber src build sh dist single oder src build sh dist multi im Verzeichnis FLEXITRUST_HOME ca src erzeugt werden und sind nach Fertig stellung in Tar Archiven im Verzeichnis FLEXITRUST_HOME ca dist zu finden Sie beinhalten vollst ndig f r einen Cluster konfigurierte JBoss Server Vorbedingung hier f r ist eine frische JBoss Installation im Verzeichnis JBOSS_HOME Das Archiv Flexi TRUST Server tar gz beinhaltet die Komponente Pkcs7Server und stellt somit den Ein und Ausgang der CA dar Das Archiv FlexiTRUST CA tar gz beinhaltet das EJB Tier der CA mit den Requests den Workbenches und dem Stock Bei einer mit dist multi erzeugten Distribution k nnen je Node ein FlexiTRUST Server und eine FlexiTRUST CA gestartet werden Diese eignen sich daher auch f r die Simulation eines Clusters mit nur einem Computer vgl auch Abschnitt 7 1 1 Die Ant Build Files Ist eine Distribution mit dist single erstellt worden ist nur die Verwendung jeweils eines Application Servers m glich Die erzeugten Archive k nnen nun auf die einzelnen Nodes des Clusters bertragen werden Nach einem Entpacken ber tar xfvz FlexiTRUST lt NAME gt tar gz k nnen die Application Server mit cd FlexiTRUST lt NAME gt bin bin startFlexiTRUST sh gestartet werden Nach dem Startvorgang und dem automatischen Einbinden in den Cluster sind die EAS einsatzbereit Das Hinzufiigen weiterer CAs und oder Server auf anderen Nod
15. server session ben tigt Als Vorlage hierzu k nnen die entsprechenden Buildfiles des pkcs7server verwendet werden Weiterhin mu das zentrale Buildfile in FLEXI TRUST_HOME ca src geringf gig ge ndert werden Diese nderungen sind analog zu den Targets des Pkcs7Servers zu implementieren F r die durchgef hrten Erweiterungen des EJB Tiers mu and den Buildfiles nichts ge ndert werden Kapitel 10 Abschliefende Bemerkungen 10 1 Ausblick W hrend der Spezifizierung und Implementierung der FlexiTRUST CA und allen da mit zusammenh ngenden Aufgaben sind Probleme aufgetreten die bisher nicht bzw nicht ad quat gel st werden konnten Diese Probleme und m gliche L sungsans tze werden im folgenden Abschnitt ebenso beschrieben wie weitere Ideen die w hrend der Implementierungsphase entstanden aber nicht mehr umgesetzt werden konnten 10 1 1 Datenbank MySQL unterst tzt in der verwendeten Version keine nested queries also Queries die anstatt einer oder mehrerer Tabellen eine weitere Query zur Auswertung verwen den Diese Funtion wird zur Zeit implementiert und wird voraussichtlich ab Version 4 1 verf gbar sein Das davon betroffene zuk nftige Selectstatement in der Methode getValidCertificates der Klasse CaStockDAO ist bereits auskommentiert einge f gt Weiterhin ist die Verwendung von Replikanten eine Art Behelf solange noch keine hinreichend bew hrten und g nstigen clusterf higen verf gbar sind U
16. switch request nextBench case Equipment CRYPTOBENCH request null GC cryptoBenchHome create processRequest workerPK break case Equipment PKCSI1BENCH request null GC pkcs11BenchHome create processRequest workerPK break case Equipment EXIT request null GC exitHome create processRequest workerPK break default request setFailed request null GC throw new FinderException Unknown or incorrect next bench request nextBench catch CreateException ex request setFailed throw new EJBException ex catch RemoteException ex 105 106 107 108 109 110 111 112 KAPITEL 9 ERWEITERUNG DES SYSTEMS 99 request setFailed throw new EJBException ex request null GC Other business methods Aus Performancegr nden werden bereits bei der Instantiierung einer Enterprise Java Bean alle Referenzen auf die Home Interfaces ben tigter Enterprise JavaBeans ange legt und in Attributen Zeile 24 gespeichert Da diese Referenzen f r die Lebensdauer der Instanz lokal gehalten werden m ssen sie ensprechend verwaltet werden F r die neu hinzugekommene Pkcs11BenchEJB sind die XDoclet Tags die die De ployment Deskriptoren beeinflussen in den Zeilen 10 ff dargestellt Die Verwaltung der Referenz auf das Home Interface innerhalb der Beanklasse wird in den Zeilen 46 ff und 33 ff implementiert Es ist darauf zu achten da
17. van Loads a part of the result set param rs Result set param offset Column offset return New column offset throws SQLException Database access error 4 4 E af public int loadResultSetFragment ResultSet rs int offset throws SQLException offset super loadResultSetFragment rs offset if request null switch super getType case Types X509CRT request new X509CrtRequest this break case Types X509CRL request new X509CrlRequest this break case Types X509P11 request new X509P11Request this break case Types ADMIN request new AdminRequest this break case Types ISSUER request new IssuerRequest this break default break offset request loadResultSetFragment rs offset 95 96 97 98 99 KAPITEL 9 ERWEITERUNG DES SYSTEMS 106 return offset Die Methoden updateBeanData und loadResultSetFragment Zeilen 43 ff und 80 ff m ssen jeweils um den Fall Types X509P11 erweitert werden Dies ist notwendig da beide Methoden zum Zeitpunkt der Instantiierung der Request EJB aufgerufen wer den In diesem Moment existiert noch keine Instanz des X509P11Requests die hier erzeugt wird 9 4 4 Die Klasse RequestDAO Die Klasse ejb request RequestDAO implementiert ein Data Access Object f r den Datenbankzugriff der RequestEJB Innerhalb des DAOs werden vier F lle unterschie den Insert Einf gen eines Datensatzes in die Datenbank Select Lesen ein
18. 1 prepStmt setInt offset Worker FAILED workerPK storePreparedStatementFragment prepStmt offset int rowCount prepStmt executeUpdate prepStmt close KAPITEL 9 ERWEITERUNG DES SYSTEMS 111 314 if rowCount 0 315 throw new NoSuchEntityException 316 Update for request workerPK failed 317 318 319 320 JR F A A a e e a e e E e Ae E a e E a I I kk 321 X509CrtRequest Methods 322 F E e A a E A EE EE EE A EE EE Ae E E EE EE AA 323 324 Kass 325 326 JB RRR AR A AIA 327 X509CrlRequest Methods 328 EA 329 330 Lad 331 332 JB RRA III E k R 333 X509P11Request Methods 334 F D E A E E AE E E E E a AE A a AE AE E E AE E a Ae A E Ae A A A A E E e e a Ae A A A a E A e A a e a E e E A e E Ae E A A E k E k e E 335 336 PER 337 Removes a Request 338 param con Connection 339 param workerPK The primary key of the request 340 throws SQLException Database access error 341 SA 342 private void deleteX509PllRequest Connection con 343 WorkerPK workerPK 344 throws SQLException 345 346 String deleteStatement 347 delete from x509P11Requests where requestPK 348 349 PreparedStatement prepStmt 350 con prepareStatement deleteStatement 351 352 workerPK storePreparedStatementFragment prepStmt 1 353 354 int rowCount prepStmt executeUpdate 355 356 prepStmt close 357 358 if rowCount 0 359 throw new NoSuchEntityException
19. 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 KAPITEL 9 ERWEITERUNG DES SYSTEMS 94 try request setFailed throw ex switch request nextBench case Equipment EXIT request null GC exitHome create processRequest workerPK break default request setFailed throw new FinderException Unknown or incorrect next bench request nextBench catch CreateException ex request setFailed throw new EJBException ex catch RemoteException ex request setFailed throw new EJBException ex request null GC JA Reads an object from the card return The read object 7 public Object readData Object obj null try obj pkcs11SessionHome create readData catch RemoteException ex catch CreateException ex throw new EJBException ex throw new EJBException ex return obj J Write an object to the card param obj The object to be written to card ur public void writeData Object obj try pkcs11SessionHome create writeData obj catch RemoteException ex catch CreateException ex JA H throw new EJBException
20. Anwendungsfall wird der Request an gewiesen abschlie ende Schritte durchzuf hren Bei den zur Zeit implementier ten Requests ist diese Methode leer und stellt daher Erweiterungsm glichkeiten f r zuk nftig implementierte Typen dar delegate to server session In diesem Moment verl t der Request das EJB Tier der FlexiTRUST CA Er wird ber die Pkcs7ServerSessionEJB an den Pkcs7ExitService geleitet vgl Abschnitt 4 4 1 Anwendungsf lle des Pk cs7Server KAPITEL 3 DIE FLEXITRUST CA 24 3 4 4 Anwendungsf lle der Domain Request Die nachfolgende Abbildung 3 4 zeigt alle Anwendungsf lle des Bereichs Request und ihre Beziehungen untereinander or il N PA Bag A ae D lt sext nd gt gt gt i we eegent F b f 3 Y a gens ER lt workx509erl y lt work x509crt y Request create in ca Abbildung 3 4 Anwendungsf lle der Domain Request create in ca Der Request betritt die FlexiTRUST CA und wird persistent mit seinen initialen Daten in die Datenbank eingebracht initwork Dieser Fall initialisiert den Request f r die Bearbeitung work Dies ist die Implementierung der Arbeitsschritte der Requests Jeder Typ von Request besitzt eine Spezialisierung dieser Methode work x509crl work x509crt Dies sind Spezialisierungen des Anwendungsfalls work Weite re Spezialisierungen werden hier hinzugef gt leave Dieser Fall bereitet den Request auf das Verlassen
21. Funktiona lit ten fiir den lesenden und schreibenden Zugriff auf die SmartCards zur Verfii gung e calculate In diesem Fall werden Kalkulationen auf der SmartCard ausgefiihrt Anwendungsf lle der Domain Session Die nachfolgende Abbildung 9 4 zeigt alle Anwendungsf lle der Komponente Session des Pkcs11Servers und ihre Beziehun gen untereinander E delegate calculation gt Pkcs11Session We ess pi sn Spe GN eg se delegate read y delegate write gt Abbildung 9 4 Anwendungsfalle des Pkcs1 1 Server Session Sie beschreiben vom System durchzuf hrende Anwendungsf lle bez glich der Weiter leitung von Anfragen seitens des EJB Tiers an die Komponente Card Access e delegate read Die Pkcs11Session delegiert den lesenden Zugriff auf die SmartCard an den CardAccess und liefert das Ergebnis zur ck e delegate write Die Pkcs11Session delegiert den schreibenden Zugriff auf die SmartCard an den CardAccess e delegate calculation Die Pkcsl1Session delegiert eine Kalkulation an den CardAccess und liefert das Ergebnis zur ck 9 1 2 Identifikation der Gesch ftsklassen Die mit Hilfe der Anwendungsf lle erkannten Gesch ftsklassen werden in den folgen den Klassendiagrammen dargestellt Die Darstellung erfolgt in UML Notation Die KAPITEL 9 ERWEITERUNG DES SYSTEMS 86 Menge aller Gesch ftsklassen bildet die Grundlage des Design Modells d h die Dar stellung entspricht nicht mehr der Analysesic
22. H where R requestPK and R requestPK A requestPK break case Types ISSUER selectStatement select state creationDate retirementDate type sigDat n nextBench issuerDN issuerPrivKey certificate certSerial revocPass keyPass sigAlg secProv certChain from requests R issuerRequests I e k where R requestPK and R requestPK I requestPK default throw new SOLException Unkown request type PreparedStatement prepStmt con prepareStatement selectStatement workerPK storePreparedStatementFragment prepStmt 1 ResultSet rs prepStmt executeQuery if rs next worker loadResultSetFragment rs 1 prepStmt close else prepStmt close throw new NoSuchEntityException Row for request workerPK not found A Updates a Request param con Connection param workerPK The primary key of the Request param worker The Request throws SQLException Database access error LACA E EL public void updateWorker Connection con 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 KAPITEL 9 ER
23. In diesem Kapitel wird der JWorkshop nur kurz beschrieben da er Grundlage und nicht Thema dieser Diplomar beit ist 2 1 Beschreibung des JWorkshop Der JWorkshop kann mit einer Werkstatt in der realen Welt verglichen werden In ei ner Werkstatt gibt es eine Eingangstiir durch die Arbeiter in die Werkstatt kommen Die Arbeiter wollen in der Werkstatt ein Werkstiick das sie mitbringen oder aus dem Lager holen bearbeiten Daf r gehen sie von der Eingangst r zu einer Arbeitsbank die ein Ger t bereitstellt das sie zur Bearbeitung des Werkst cks ben tigen beispiels weise eine Bohrmaschine Ist ihre Arbeit an dieser Werkbank abgeschlossen k nnen sie mit ihrem Werkst ck zu einer anderen Werkbank gehen die ein anderes Ger t be reitstellt beispielsweise eine Drehbank Hier bearbeiten sie das Werkst ck weiter Sie k nnen alle Werkb nke benutzen die f r die Bearbeitung ihres Werkst cks geeignet sind Falls sie daf r zus tzliches Material ben tigen besorgen sie sich dieses aus dem Lager Nicht verbrauchtes Material oder verwertbares Material das bei der Bearbeitung anf llt und nicht dem Arbeiter geh rt kann im Lager abgelegt werden Ist die Bearbei tung des Werkst cks abgeschlossen gehen sie mit dem Werkst ck zur Ausgangst r und verlassen die Werkstatt Tritt bei einem der Vorg nge ein Fehler auf m ssen sie selbst entscheiden wie mit diesem Fehler umgegangen werden soll Sie tragen bei allen Vorg ngen die Verantwortung
24. Search the JMX Server Select the MBean to listen to There are no custom views available Help Register a new MBean View the notifications received FE JMX Server fJUMimplementation name Default service LoaderRepository type MBeanServerDelegate jboss name BootstrapEditors type Service name PropertyEditorManager type Service name SystemProperties type Service partition FlexiTRUST service FarmMember partitionName FlexiT RUST service DistributedReplicantManager partitionName FlexiT RUST service DistributedState service ClientUserTransaction service Counter service FlexiT RUST service HAJNDI service HASessionState service JNDIView service Naming service Pkes 1 1CardAccessService service Pkcs7EntranceService service Pkcs7ExitService service TransactionManager service Webserver service XidFactory service invoker type http service invoker type httpHA service invoker type rmp service invoker type irmpha service invoker type local amp jboss deployment flavor URL type DeploymentScanner fitjboss ejb service EJBDeployer ihnas Don S Abbildung 4 9 JMX Browser Agent View KAPITEL 4 SYSTEMARCHITEKTUR 48 4 4 Architektur Client Tier Das Client Tier basiert auf Dateiaustausch ber definierte Verzeichnisse und auf der Verwendung von Web Browsern Weitere Clients sind nicht vorgesehen Fiir den Dateiaustausch werden vom Administrator auf einem oder mehreren Nodes Verzeichnisse fiir den Ei
25. Session Bean realisiert ist wobei die Transaktionsverwaltung dem Container tiberlas sen wird Das Tag ejb transaction mit Typ required sagt aus da sich alle Me thodenaufrufe tiber die EJB Interfaces innerhalb eines Transaction Context befinden m ssen Die Bean wird in den HA JNDI Baum als ejb CDC FlexiTRUST Pkcs11 BenchEJB eingetragen Uber die Tags Be jb home und e jb interface werden ihre Home und Remote Interfaces definiert wobei diese Interfaces innerhalb des Build Prozesses automatisch generiert werden Die Tags ejb ejb ref definieren Referen zen auf andere Beans die innerhalb der Pkcs11Bench ben tigt werden Die Tags jboss clustered und jboss cluster config legen fest daB diese Be an sich innerhalb der angegebenen Clusterpartition befindet Der String _PARTITION_ wird w hrend des Build Prozesses durch den in den ant properties angegebene Na men ersetzt vgl hierzu Kapitel 7 3 3 Installation der Anwendung Listing 9 1 domain bench Pkcs11BenchEJB package de tud cdc flexiTrust ca ejbs bench import java rmi RemoteException import javax ejb SessionBean import javax ejb SessionContext import javax ejb EJBException import javax ejb CreateException import javax ejb FinderException import javax naming NamingException import de tud cdc flexiTrust ca domain bench Equipment import jws ejbs bench BenchEJB import jws ejbs worker WorkerPK import jws util EJBServicelocator import de tud cdc fle
26. WorkerData erl X509Crl erlEntry CRLEntry Abbildung 3 9 Gesch ftsklassen der Domain Request Die in Abbildung 3 9 dargestellten Klassen werden in den nachfolgenden Abschnitten beschrieben Im Rahmen einer Erweiterung der CA sind die Gesch ftsklassen neuer Requests innerhalb dieses Packages zu implementieren vlg hierzu Kapitel 9 Erwei terung des Systems KAPITEL 3 DIE FLEXITRUST CA 31 Request Die Klasse Request beschreibt einen Request innerhalb der FlexiTRUST CA Neben den beschreibenden Attributen beinhaltet sie einen Verweis auf einen der spezialisier ten Requests Der Request bietet unterstiitzende Funktionalit ten fiir die persistente Datenspeicherung und stellt grundlegende fiir alle Requests notwendige Methoden zur Verfiigung Diese sind neben der Verifikation der Requestsignatur fiir die Ak tualisierung der Attribute verantwortlich Seine Hauptaufgabe besteht jedoch in der Delegierung der Arbeitsmethoden zu den folgenden spezialisierten Requests X509CrtRequest Die Klasse X509CrtRequest beschreibt einen X509v3 Certification Request und er zeugt ein Zertifikat X509CrIRequest Die Klasse X509Cr1Request beschreibt einen X509v3 Certificate Revocation Request AdminRequest Die Klasse AdminRequest beschreibt einen in die CA einzubringenden neuen Admi nistrator IssuerRequest Die Klasse IssuerRequest beschreibt einen in die CA einzubringenden neuen Issuer Types Die Klasse Types be
27. den Primary Key des Requests an die ExitEJB weiter Alle anderen Request Typen werden direkt an von ihnen spezifizierte Benches geschickt KAPITEL 4 SYSTEMARCHITEKTUR 39 4 2 3 Exit Im Paket Entrance sind die Enterprise JavaBeans des Exit zusammengefasst In Ab bildung 4 5 ist die Session Bean ExitEJB dargestellt de tud cde flexiTrust ca domain exit Exit SessionBean BenchEJB ExitEJB cix SessionContext requestLocalHome RequestLocalHome pkcs7SessionHome Pkcs7SessionHome setSessionContext void ejbActivate void ejbPassivate void ejbRemove void T ejbCreate void processRequest void Abbildung 4 5 Enterprise JavaBeans Exit Die in Abbildung 4 5 dargestellte Klasse wird in dem nachfolgenden Abschnitt be schrieben Klasse ExitEJB Die Stateless Session Bean ExitEJB beinhaltet alle Operationen die f r abschlie ende Arbeitsschritte der Requests notwendig sind Sie ist eine Spezialisierung der Klasse Exit aus der Dom ne ber ihre Methode processRequest akzeptiert sie den Primary Key eines Requests und ruft dessen Business Methode leave auf Der Request hat hier die M glichkeit sich auf das Verlassen der FlexiTRUST CA vorzubereiten Anschlie end bergibt die ExitEJB den Primary Key des abgeschlossenen Requests an den Pkcs7Server vgl Abschnitt 4 4 2 Architektur Pkcs7Server 4 2 4 Request Im Paket Request sind die Enterprise JavaBean des Requests und die dazugeh rige
28. einzustellen Durch das Autodeployment sollte JBoss dann auf den Repli kanten eingestellt sein Ob dies tats chlich bei laufendem JBoss funktioniert miisste allerdings getestet werden Auf jeden Fall mu8 verhindert werden da8 vor korrektem Anschluss des Replikanten weitere Requests ins System kommen Der bisherige Ma ster k nnte dann als Replikant an den neuen Master angeschlossen werden da der neue Master bereits so konfiguriert ist nderungen in ein Binary Log zu schreiben ber das sich der neue Replikant aktualisieren kann Der Grund warum die replizierten Ande rungen vom Replikanten nicht geloggt werden diirfen ist daf der alte Master diese nderungen bereits durchgef hrt hat und somit nicht erneut durch Replikation durch f hren darf Desweiteren sind zum Thema Datenbankgr e berlegungen anzustellen Da die Ta bellen certificates privKeys und s mtliche Requesttabellen regelm ig gr er werden und nie Daten aus ihnen gel scht werden mu eine L sung gefunden werden wie der Datenbestand dennoch regelm ig reduziert werden kann ohne da der Betrieb der CA gef hrdet ist Eventuell ist es tragbar alle Daten die zu abgelaufenen Zertifikaten bestimmten Alters geh ren derart zu exportieren da sie mit vertretbarem Aufwand wiederhergestellt und damit f r die CA zur Verf gung gestellt werden k nnen 10 1 2 Workbenches und Requests als Plug In Trotz der Modularit t der im Rahmen dieser Arbeit umgesetzten Fle
29. ex throw new EJBException ex Do some calculations on an object param obj The object to be calculated return The modified object public Object calculate Object obj try 257 258 259 260 261 262 263 264 265 266 KAPITEL 9 ERWEITERUNG DES SYSTEMS 95 obj pkcs11SessionHome create calculate obj catch RemoteException ex throw new EJBException ex catch CreateException ex throw new EJBException ex H H return obj Die Pkcs1 1 Bench besitzt Referenzen auf die Home Interfaces der ExitEJB Request EJB und die Pkcs11SessionEJB die in der Methode ejbCreate Zeile 127 ff ber den EJBServiceLocator gesetzt und in der ejbRemove Zeile 114 ff wieder freige geben werden Die Businessmethode processRequest Zeile 173 ff wird von den sich im Workflow vor der Pkcs11Bench befindlichen Benches aufgerufen und initiiert die Abarbeitung des n chsten Arbeitsschrittes des Requests Der Ablauf untergliedert sich in folgende Schritte 1 Erzeugung einer lokalen Instanz des zu bearbeitenden Requests in der eigenen Java Virtual Machine Zeile 177 ff 2 Initiierung der Abarbeitung des n chsten Arbeitsschritts des Requests Diesem wird eine Referenz auf die Instanz der Bench mitgegeben wodurch er direkten Zugriff auf die von der Bench zur Verf gung gestellten Funktionen erh lt Zeile 180 ff 3 Nach dem Arbeitsschritt wird der Request auf die n chste von ihm sp
30. f r ihr Handeln und ihre Arbeitsergebnisse Dieses einfache Werkstatt Modell diente als Grundlage f r die Neuimplementierung des JWorkshop im Rahmen dieser Diplomarbeit 12 MW KAPITEL 2 JWORKSHOP 13 2 2 Umsetzung des JWorkshop Da in der Informatik die Sprache Englisch bevorzugt verwendet wird sind die einzel nen Elemente der Beschreibung wie folgt tibersetzt Worker bezeichnet einen Arbeiter Entrance bezeichnet die Eingangstiir Workbench bezeichnet eine Werkbank Stock bezeichnet das Lager und Exit bezeichnet die Aus gangstiir Die Zusammenh nge sind in der folgenden Abbildung 2 1 graphisch dargestellt Stock Load data Load data Store data Process data e A y N y 7 y 7 y Entrance WorkBench WorkBench Exit Worker enters H Process Worker 1 Process Worker Process Workel Process Worker Send Worker Send Worker Worker leaves Y C Send Worker Abbildung 2 1 JWorkshop Die Beschreibung des JWorkshop wird direkt in J2EE Architektur umgesetzt Ein Worker stellt eine eigenst ndige Einheit dar und besitzt Eigenschaften die ihn spezifizieren In der J2EE Architektur werden solche Einheiten als Entity Beans um gesetzt Diese sind f r das Speichern das Laden und die Aktualisierung ihrer eigenen Daten selbst v
31. gestellt Um die CA von vornherein vor eventuellen Angriffen ber das Netzwerk zu sch tzen wird sie entweder komplett vom Netzwerk des Trustcenters abgetrennt und der Datenaustausch geschieht ber sichere Wege wie transportable Medien oder sie ist nur f r einen bestimmten Teil des Trustcenters zu g nglich der seinerseits besondere Schutzma nahmen aufweist Die CA verarbeitet Zertifikatsantr ge das hei t sie vervollst ndigt vorbereitete Zerti fikate und signiert sie anschliessend durch einen Aussteller Zus tzlich speichert sie die Zertifikate f r den internen Gebrauch Auf Anfrage k nnen Zertifikate zur ckgezogen werden wobei einem solchen Antrag eine Liste aller Revokationen f r seinen weiteren Weg mitgegeben wird Vollst ndig abgearbeitete Antr ge werden an die Infrastructure Services IS bergeben Zur Inbetriebnahme der CA ist es erforderlich einen initialen Aussteller und einen initialen Adminstrator einzubringen bevor der erste Antrag gestellt wird Ansonsten 15 KAPITEL 3 DIE FLEXITRUST CA 16 w re es nicht m glich einen Antrag zu Verifizieren oder ein Zertifikat zu Signieren vgl Abschnitt 7 3 5 Initialisierung der FlexiTRUST CA Zun chst wird im folgenden Abschnitt beschrieben welche Funktionalit ten die Flexi TRUST CA liefern soll Aus diesen Funktionalit ten werden in den darauf folgen den Abschnitten Anwendungsf lle abgeleitet und die sie realisierenden Klassen de finiert Als Gru
32. h ren kann da die Integrit t der gespeicherten Daten verletzt wird 7 2 5 Deinstallation Falls das Datenbank Management System durch ein anderes ersetzt werden soll ist in der Anleitung des zuk nftigen Systems nachzulesen wie die Inhalte von MySQL In noDB Tabellen importiert werden k nnen und wie die Datei ca personal server db database sql an das neue System angepa t werden kann Die Deinstallation von MySQL kann dann so erfolgen wie Deinstallationen auf dem verwendeten System blich sind KAPITEL 7 INSTALLATION DES SYSTEMS 73 7 3 Enterprise Application Server MW Als Plattform der FlexiTRUST CA wird JBoss Version 3 0 3 Gro02b als Enterprise Application Server EAS eingesetzt F r eine n here Betrachtung dieses EAS sei auf die Studienarbeit Fel02 verwiesen 7 3 1 Systemvoraussetzungen Systemvoraussetzungen der Hardware sind e Pentiumclass System gt 500 MHz e 256 MB Arbeitsspeicher e 500 MB HD Systemvoraussetzungen der Software sind e Betriebssystem Linux Kernel 2 4 Solaris 7 oder Microsoft Windows 2000 oder hoher e Application Server JBoss 3 0 3 oder h her e J2SDK 1 4 1_01 e Ant 1 5 7 3 2 Vorbereitende Schritte Installation von JBoss Application Server Die Installation mu gem JG02 JBoss 3 0 getting started Kapitel 2 erfolgen 7 3 3 Installation der Anwendung Environmentvariablen Folgende Environmentvariablen m ssen gesetzt sein Der Application Se
33. hat Genauso wie mehrere Administratoren unterst tzt werden k nnen auch mehrere Issuer in der CA existieren Weiterhin wird der private Schl ssel des Besitzers mit dem zugeh rigen Pa wort ge speichert und mit dem Zertifikat verkn pft Die Bearbeitung des Antrags ist hiermit abgeschlossen Signierung und Ausgabe des Antrags Zur bergabe an die auf die CA folgende Instanz IS erfolgt die Signierung des An trags mit dem privaten Schl ssel eines Administrators Dieser Administrator mu nicht derselbe sein der den Antrag in die CA gebracht hat er mu mit seinem ffentli chen Schl ssel lediglich f r die IS verf gbar sein Falls innerhalb eines festgelegten Zeitraums mehrere Antr ge fertig bearbeitet wurden werden diese Antr ge zu einem Gesamtpaket zusammengefasst und dieses wiederum signiert und letztlich an die IS bergeben Dieser Vorgang ist bei allen Antr gen die aus der CA gebracht werden gleich 3 2 2 Revokation eines Zertifikats In bestimmten F llen ist es notwendig ein Zertifikat f r ung ltig zu erkl ren Diesen Vorgang nennt man Revokation er beinhaltet au erdem die Erstellung einer Liste von KAPITEL 3 DIE FLEXITRUST CA 18 bisherigen Revokationen Revokationsantrag Ein Revokationsantrag beinhaltet den Namen des Issuers das Revokationspa wort und einen Revokationseintrag der aus der Seriennummer des zu revozierenden Zertifikats und dem Zeitpunkt der Revokation zusammengesetzt ist Die E
34. lt lt Enterprise JavaBeans gt gt MySQL Max caDB lt lt Database gt gt Abbildung 4 2 Struktur FlexiTRUST CA 4 1 Architektur EIS Tier Im Projekt FlexiTRUST CA beinhaltet das EIS Tier ausschlieBlich eine Datenbank Die Datenbank enth lt alle Daten die im Rahmen der Requestbearbeitung der Anwen dung FlexiTRUST CA anfallen Hierzu geh ren beispielsweise Antragssteller ausge stellte Zertifikate Revokationen Administratoren und Issuer Der Zugriff auf die Da tenbank erfolgt ausschlie lich ber Enterprise JavaBeans Die Beschreibung der Struk tur der Datenbank ist in Kapitel 6 Datenmodell enthalten 4 2 Architektur EJB Tier Das EJB Tier enth lt in verschiedenen Paketen Enterprise JavaBeans f r die Themen bereiche Bench Entrance Exit Request und Stock Das Design der Entity Beans und Session Beans basiert auf der EJB Spezifikation Version 2 0 KAPITEL 4 SYSTEMARCHITEKTUR 37 4 2 1 Bench Im Paket Bench sind die Enterprise JavaBeans der Workbenches zusammengefasst In Abbildung 4 3 ist die Session Bean CryptoBenchEJB dargestellt de tud cdc flexiTrust ca domain bench CryptoBench SessionBean BenchEj CryptoBenchEJB ctx SessionContext exitHome ExitHome requestLocalHome RequestLocalHome caStockHome CaStockHome setSessionContext void ejbActivate void ejbPassivate void ejbRemove void ejbCreate void processRequest void getAdminC
35. sind der X509P11RequestData hinzuzuf gen wobei f r jedes der Attribute Accessormethoden implementiert werden m ssen Exemplarisch ist dieses im folgenden Listing dargestellt Listing 9 6 domain request data X509P11RequestData package de tud cdc flexiTrust ca domain request data import java io Serializable import jws domain worker data WorkerData import de tud cdc flexiTrust ca domain bench Equipment import de tud cdc flexiTrust ca domain request Types public class X509P11RequestData extends WorkerData implements Serializable KAPITEL 9 ERWEITERUNG DES SYSTEMS 104 JA An attribute af private int attribute 0 J Constructor 7 public X509P11RequestData super Types X509P11 JA Get attribute return value of attribute EL public int getAttribute return attribute J Set the value of attribute param attribute Value to assign to attribute public void setAttribute int attribute this attribute attribute Wichtig neben der Attributdefinition und den Accessormethoden ist der Aufruf von super im Konstruktor Der Parameter definiert den Typ des Requests hier X509P11 9 4 3 Die Klasse Request Die Klasse domain request Request beinhaltet allgemeine Funktionalit ten der Re quests und muB an zwei Stellen geringfiigig erweitert werden Listing 9 7 domain request Request package de tud cdc flexiTrust ca domain request Imports public
36. throws SQLException String updateStatement update x509PllRequests set attribute where requestPK 2 PreparedStatement prepStmt con prepareStatement updateStatement int offset worker storePreparedConcreteStatementFragment prepStmt 1 workerPK storePreparedStatementFragment prepStmt offset int rowCount prepStmt executeUpdate prepStmt close if rowCount 0 throw new NoSuchEntityException Update for request workerPK failed JAR ARR AA RRA RR RR RR RRA I RR RAR RRA RRA RRA RRA RARA AA IssuerRequest Methods EA REES G tt AdminRequest Methods FE D E A E E A A Law ad Die Methoden in den Zeilen 41 87 156 und 241 werden von der Beanimplementie rung aufgerufen Sie fiihren den eigentlichen Datenbankzugriff aus Fiir die request spezifischen Daten wird an spezielle Methoden delegiert 70 135 und 275 Eine Im plementierung der Pkcs1 1 spezifischen Methoden ist in den Zeilen 182 ff und 342 ff dargestellt KAPITEL 9 ERWEITERUNG DES SYSTEMS 113 9 4 5 Die Klasse Types Die Klasse domain request Types beinhaltet eine Auflistung aller in der CA imple mentierten Requests Die in ihr definierten Konstanten werden von den Requests und Workbenches zur Identifizierung verwendet Da wir einen neuen Request definieren mul dieser hier eingetragen werden Listing 9 9 domain request Types package de tud cdc flexiTrust ca domain request public c
37. type Container reentrant false use soft locking true view type remote ejb home remote class de tud cdc flexiTrust ca pkcsllserver session Pkcs11SessionHome Geib Interface remote class de tud cdc flexiTrust ca pkcsllserver session Pkcs11Session E ejb transaction type Required KAPITEL 9 ERWEITERUNG DES SYSTEMS 117 jboss clustered jboss cluster config partition name _PARTITION_ home policy org jboss ha framework interfaces RandomRobin bean policy org jboss ha framework interfaces RandomRobin A OA HH OA public class Pkcs11SessionEJB implements SessionBean JA The SessionContext SCH private SessionContext ctx JA The Pkcs11CardAccessService EL private PkcsllCardAccess pkcsliCardAccess null JA Set the SessionContext The Container calls this method after creation of the instance param context The SessionContext for this instance Ze public void setSessionContext SessionContext context ctx context pkcsllCardAccess null J ejbActivate 7 public void ejbActivate ejbPassivate 47 public void ejbPassivate J ejbRemove af public void ejbRemove ctx null J ejbCreate throws CreateException An entity EJB object could not be created EL public void ejbCreate throws CreateException try InitialContext ic new InitialContext pkcs
38. werden W hrend der statische Anteil typischerweise das Layout beschreibt k nnen die Inhalte ber entsprechenden Java Code z B aus einer Datenbank geholt und in die generierte Seite integriert werden JSPs trennen damit das Layout des User Interface von den darunter liegenden dynamischen Daten JSPs werden beim ersten Aufruf und bei nderung des JSP Source Codes automatisch in Servlets bersetzt Das bedeutet da innerhalb von JSPs die gleiche Umgebung wie in Servlets zur Verf gung steht und da sich aus der Verwendung einer relativ abstrakten Sprache zur Seitenbeschreibung kein Performanceverlust gegen ber einer Implementierung in Java ergibt Aufbauend auf dieser Plattform ergibt sich f r die FlexiTRUST CA folgende in Ab bildung 4 2 dargestellte grunds tzliche Struktur f r das Gesamtsystem Die nachfolgenden Abschnitte beschreiben die Komponenten der FlexiTRUST CA und ihre Aufgaben entsprechend ihrer Zuordnung zu den verschiedenen Schichten der J2EE Architektur KAPITEL 4 SYSTEMARCHITEKTUR 36 JBoss Server EJB Tier Web Tier JMX Managament Console Oo Pkcs7Server EJB edlen gt lt lt Enterprise JavaBeans gt gt T i i File System i Pkcs7Server MBeans Ba 1 lt lt Managed Beans gt gt i Browser P l f i l JBoss Server 1 Web Tier EJB Tier v JMX Managament Console CA EJB _ PJ
39. 4 14 ist die MBean Pkcs7Exit und der Pkcs Writer dargestellt die in den nachfolgenden Abschnitten beschrieben werden ca ServiceMBeanSupport aa Thread Pkes7ExitMBean Pkcs7Writer Pkes7Exit run void startService void quit void stopService void setP7OutDir void exit void setP7ErrDir void setContext void maxProcessingDelay long unsetContext void maxProcessables int exit void statPulseLimit long finish void p7OutDirName String sign void p7ErrDirName String idleTime long outFileExt String outFileName String statFileName String statDirName String readStatFile File initStatFile void generateStat void classloaderDummy void maxProcessingDelay long maxProcessables int statPulseLimit long p7OutDirName String p7ErrDirName String idleTime long outFileExt String outFileName String statFileName String statDirName String failed WorkerPK Abbildung 4 14 MBean Service Pkcs7Exit Klasse Pkcs7Exit Die Klasse Pkcs7Exit implementiert eine Managed Bean Sie halt eine Instanz des Pkcs7Writers die von ihr zur Laufzeit konfiguriert wird Klasse Pkcs7Writer Die Klasse Pkcs7Writer nimmt die von dem EJB Tier bear beiteten Requests entgegen und erzeugt mit dessen Daten ein SignedData Objekt Die se Objekte werden DER encoded und wiederum in ein unterschriebenes SignedData Objekt umgewandelt Dieses Paket wird anschlie end DER encoded als Datei in das vom System Administrat
40. 6 JR RRR III 117 Work Methods 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 KAPITEL 9 ERWEITERUNG DES SYSTEMS 102 F a AE A E E AE A Preprocessing Perhaps for future use Is called once bay the EntranceEJB af public void initWork request setNextBench Equipment PKCSI1BENCH J We decide which work has to be done now param bench The bench we reside on Ze public void work Bench bench switch request getState case Worker DOSTEP1 doStepl PkcsllBench bench break case Worker DOSTEP2 doStep2 PkcsllBench bench break default request setNextBench Equipment EXIT break TEF Does the work of step one param bench The Pkcs11Bench private void doStepl PkcsllBench bench obj bench readData request setState Worker DOSTEP2 request setNextBench Equipment PKCSI1BENCH J Does the work of step two param bench The Pkcs11Bench private void doStep2 PkcsllBench bench obj bench calculate obj bench writeData obj request setState Worker DONE request setNextBench Equipment EXIT J Does the work of st
41. AA d H Ki e sf SZ ji A k d L if e of i E d F lt lt extend gt gt N d ei fp wet lt lt extendb gt S P pe F y Ba d 3 N d Ze lt lt extend gt gt l d I I a IC work x509crt I I Request TT create inca gt Abbildung 9 2 Anwendungsf lle der Domain Request e Die weiteren Anwendungsf lle wurden bereits in Abschnitt 3 4 Anwendungs f lle der Domain Request beschrieben Anwendungsf lle des Pkcs11Server Der Pkcs11Server untergliedert sich in die zwei Komponenten CardAccess und Ses sion deren Anwendungsf lle in den folgenden Abschnitten beschrieben werden Anwendungsf lle der Domain CardAccess Die nachfolgende Abbildung 9 3 zeigt alle Anwendungsf lle der Komponente CardAccess des Pkcs11Servers und ihre Be ziehungen untereinander A eg LG handle session gt calculate gt Sos gt SSC oe e Pr m L A Pkes11CardAccess or ge en e sgr a a gt 4 read access gt write access gt Abbildung 9 3 Anwendungsf lle des Pkcs11Server CardAccess Die Anwendungsf lle des CardAccess beschreiben vom System durchzuf hrende An wendungsf lle f r den Zugriff auf die SmartCard Hardware KAPITEL 9 ERWEITERUNG DES SYSTEMS 85 e handle session Der Pkcs11CardAccess stellt ein Sessionhandling f r den SmartCard Zugriff zur Verfiigung e read access write access In diesen Anwendungsf llen stellt der CardAccess
42. B package de tud cdc flexiTrust ca ejbs entrance Other imports import de tud cdc flexiTrust ca interfaces bench PkcsllBenchHome Other XDoclet tags ejb ejb ref ejb name ejb Pkcs11BenchEJB ES public class EntranceEJB extends de tud cdc flexiTrust ca domain entrance Entrance implements SessionBean BenchEJB Other attributes The Pkcs11BenchHome private PkcsllBenchHome pkcs11BenchHome J ejbRemove eL public void ejbRemove saad KAPITEL 9 ERWEITERUNG DES SYSTEMS 98 pkcsllBenchHome null J ejbCreate throws CreateException An entity EJB object could not be created public void ejbCreate throws CreateException Other EJBServiceLocator lookups try pkcsllBenchHome Pkcs11BenchHome EJBServiceLocator lookupHome Pkcs11BenchHome class ejb CDC FlexiTRUST PkcsllBenchEJB catch NamingException ex throw new EJBException ex JB RAR RAI III kk Business Methods EA Other business methods JA Processes the request param workerPK The primary key of the request throws CaException General CaException throws FinderException If the request was not found ejb interface method view type remote xf public void processRequest WorkerPK workerPK throws FinderException CaException RequestLocal request request requestLocalHome findByPrimaryKey workerPK Lead try
43. Context ben tigt der eventuell neu erzeugt werden muss Ins besondere mit den sich daran anschlieBenen Object Lookups geht ein signifikanter Per formanceverlust einher Um diesen zu minimieren wurde hier der Ansatz des EJBSer viceLocators gew hlt dessen Implementierung sich im Package jws util befindet Inc02h Diese Klasse stellt ein Singleton dar d h sie existiert nur ein einziges mal pro JVM Sie h lt neben einem einmal erzeugten Initial Context interne Tabellen mit be reits angefragten EJB Home Interface Objekten die bei Bedarf wieder direkt zur ck geliefert werden k nnen Hierdurch werden unn tige Lookups effizient und einfach vermieden 4 5 4 Transaction Handling Transaktionen stellen ein einfaches Modell f r Erfolg oder Mi erfolg eines Anwen dungsfalles dar Eine Transaktion kann nur auf zwei Arten beendet werden Entweder werden alle nderungen dauerhaft eingebracht engl commit oder alle nderungen werden zur ckgenommen engl abort rollback Wird eine Transaktion comittet m ssen alle Aktionen innerhalb dieser Transaktion erfolgreich durchgef hrt worden sein Schlagen jedoch eine oder mehrere Aktionen fehl wird f r die gesamte Trans aktion ein Rollback durchgef hrt und alle nderungen werden zur ckgenommen Das Modell einer Transaktion spezifiziert also ein Alles oder Nichts Modell Folgende Eigenschaften werden definiert e Atomicity Wird die Transaktion durch Fehler unterbrochen werden alle
44. Darstellung und ruft ihre Businessmethode getBeanRepresentation auf Der Pkcs7Server erh lt infolge dessen eine WorkerData mit allen die Bean spezifi zierenden Attributen Es ist nur ein Remote Call notwendig wodurch die Anzahl der Netzwerkzugriffe stark reduziert wird Die Implementierung der Value Objects f r die FlexiTRUST CA befindet sich in den Packages de tud cdc flexiTrust ca domain request data und de tud cdc flexiTrust ca domain stock data Kapitel 5 Umsetzung der fachlichen Anforderungen In diesem Kapitel werden einzelne Aspekte der Implementierung behandelt denen besondere Beachtung im Rahmen der Design und Implementierungsphase geschenkt wurde 5 1 Clustering Das System ist als verteilte Anwendung ausgelegt wodurch Ausfallsicherheit und Last verteilung gew hrleistet wird Zur Laufzeit k nnen weitere Nodes gestartet werden welche sich automatisch in den bereits bestehenden Cluster einbinden Die Verteilung der Aufgaben und somit der Last geschieht auf Ebene der als Session Bean realisier ten Elemente wie Benches und CaStock wodurch das Clustering ausreichend genutzt und das System nicht durch das Suchen zahlreicher im Cluster verteilter Entities aus gebremst wird Bei Ausfall eines oder mehrerer Nodes findet ein Failover statt Hierbei werden gegebenenfalls sich in Bearbeitung befindliche Requests abgebrochen die dann in der Datenbank mit Status failed markiert werden ERO2b Realisiert wird das Clus
45. Design und Implementierung der FlexiTRUST CA als Java Enterprise Application Markus Winkler Lutz Feldgen 3 Dezember 2002 Diplomarbeit an der Technischen Universit t Darmstadt Fachgebiet Theoretische Informatik Kryptographie und Computeralgebra Prof Dr Johannes Buchmann Alexander Wiesmaier Markus Winkler Ludwigsplatz 8 a 64283 Darmstadt markus winkler gmxpro de Lutz Feldgen Ludwigsplatz 8 a 64283 Darmstadt Ifeldgen O gmx de Hiermit versichere ich die vorliegende Diplomarbeit ohne Hilfe Dritter und nur mit den angegebenen Quellen und Hilfsmitteln angefertigt zu haben Alle Stellen die aus den Quellen entnommen wurden sind als solche kenntlich gemacht worden Die se Arbeit hat in gleicher oder hnlicher Form noch keiner Pr fungsbeh rde vorgelegen Darmstadt 1 Dezember 2002 Markus Winkler Lutz Feldgen Die in diesem Dokument erw hnten Soft und Hardwarebezeichnungen sind in den meisten F llen auch eingetragene Warenzeichen und unterliegen als solche den gesetz lichen Bestimmungen II Vorwort Da das Thema dieser Diplomarbeit zu umfassend fiir eine einzelne Diplomarbeit ist wurde es in die Themenbereiche Systemarchitektur und Funktionalit t aufgeteilt Daher beschreibt das vorliegende Dokument zwei Diplomarbeiten wobei das Thema Systemarchitektur Markus Winkler und das Thema Funktionalit t Lutz Feldgen zuzu ordnen ist Diese Zuordnung ist jedoch nicht ausschliesslich zu verstehen es hand
46. Fachgebiet Theoretische Informatik Kryptographie und Computeralgebra Studienarbeit September 2002 FOUNDATION Apache S Struts http jakarta apache org struts 2002 GROUP ExoLab Tyrex http tyrex exolab org 2002 125 LITERATURVERZEICHNIS 126 Gro02b Inc02a Inc02b Inc02c Inc02d Inc02e Inc02f Inc02g Inc02h JG02 Lab02 Oes01 Org02 Pro02 Ros02 GROUP JBoss JBoss Enterprise Application Server http www jboss org 2002 INC Sun M J2EE Application Server http java sun com j2ee sdk_1 3 2002 Inc SunM The J2EE Tutorial Enterprise Beans http java sun com j2ee tutorial doc EJBConcepts html 2002 INC Sun M Java 2 Platform Standard Edition http java sun com j2se 1 4 1 2002 INC Sun M Java Authentication and Authorization Service http java sun com products jaas 2002 INC Sun M Java Transaction API http java sun com products jta 2002 INC Sun M Java Transaction Service http java sun com products jts 2002 Inc Sun M Sun Java Center J2EE Patterns Data Access Object http developer java sun com developer restricted patterns DataAccessObject html 2002 INC Sun M Sun Java Center J2EE Patterns Service Locator http developer java sun com developer restricted patterns ServiceLocator html 2002 JBOSS GROUP Andreas S JBoss 3 0 Quick Start Guide http unc dl s
47. Frontend konfiguriert werden Datei Bearbeiten Ansicht Reter Einstellungen Gahezu Lesezeichen Werkzeuge Hire El of Thwnocamostsosernsniowserdenan EEN Eed S Sms gt 44 O ausser OBocknacists Google Se lt Coals cf W rtrpuch X MBean Detail MBean Detail HLETTools Agent View gt gt MBean Detail Domain jboss Name jboss service Pkes7EntranceService Class Name de tud cdc flexiT rust capkca7serer entrance Pkes7Entrance Description Management Bean Constructar Parameters de tud cde flexiTrust ca pkos server entrance Pkes Entranoe Started StateString valang String State int RO 8 Name Javaleng Stting RO Pkes7Entrance P7InDirName Javalang Sting RW Setzen FllePollnginterval jong RW Bio o oo ThreadPodSize int RW E P7EnDirName javalang Sting RW Leger start invoke create Sa RAY Ea destroy a Abbildung 8 1 MBean Detail Pkcs7Entrance Um den Pkcs7Entrance zur Laufzeit zu konfigurieren sind folgende Schritte notwendig 1 Mit einem Browser die Adresse http lt IP Adresse des FlexiTRUST Servers gt 8080 3jmx browser ffnen 2 In der Kategorie jboss den service Pkcs7EntranceService ausw hlen siehe Abbildung 4 9 welche die Detailseite des Services innerhalb des JMX Browsers der EJTools darstellt 3 In der Liste der Attribute die wie gew nscht ndern und den But
48. HOME ca config props ca properties legt Parameter f r die Laufzeit der FlexiTRUST CA fest Listing 7 2 ca properties Pkcs7Server pkcs7Server p7InDirName FlexiPKI FlexiTRUST p7In pkcs7Server p7OutDirName FlexiPKI FlexiTRUST p7O0ut pkcs7Server p7ErrDirName FlexiPKI FlexiTRUST p7Err Pkcs7EntranceService pkcs7EntranceService threadPoolSize 5 pkes7EntranceService filePollingInterval 3000 2 Aufgrund eines notwendigen Patches des JBoss Application Servers sollte im momentanen Entwick lungsstand der FlexiTRUST CA hier die Versionsnummer 3 0 3 eingetragen werden KAPITEL 7 INSTALLATION DES SYSTEMS 76 Pkcs7ExitService pkcs7ExitService maxProcessingDelay 10000 pkcs7ExitService maxProcessables 33 pkcs7ExitService statPulseLimit 60000 pkcs7ExitService idleTime 333 pkcs7ExitService outFileExt p7 pkcs7ExitService outFileName ca0ut pkcs7ExitService statFileName p7ExitStat csv pkcs7ExitService statDirName FlexiPKI FlexiTRUST p7Stat UnitTest unittest datDirName FlexiPKI FlexiTRUST ca tst dat Zeile 4 ff Verzeichnisse p7In p70ut und p7Err relativ zu JBOSS_HOME bin Zeile 11 ff Konfiguration des Pkcs7EntranceService Es k nnen die ThreadPoolSize und das FilePollingInterval angegeben werden Zeile 17 ff Konfiguration des Pkcs7ExitService Es k nnen die Attribute MaxProces singDelay Maxworkers StatPulseLimit IdleTime OutFileExt Ou
49. NTRUST StatPulseLimit long RW feo OOS start Pa create invoke stop E destroy ees Ge al Abbildung 8 2 MBean Detail Pkcs7Exit Kapitel 9 Erweiterung des Systems Durch die modulare Struktur des Systems wird es m glich neue Funktionalit ten ein zubringen Die dafiir notwendigen Schritte werden in der folgenden beispielhaften Implementierung eines X509v3 Certification Request mit PKCS 11 erl utert Dieser Request soll den Zugriff auf eine SmartCard tiber einen SmartCardReader realisieren und somit die Personalisierung einer SmartCard erm glichen F r diese Erweiterung ist es notwendig eine Workbench und einen Request zu im plementieren F r den Hardwarezugriff auf die SmartCards wird ein MBean Service vorgesehen 9 1 Spezifikation der Anwendungsf lle und Klassen In den folgenden Abschnitten werden die durch eine Erweiterung des Systems hinzu kommenden Anwendungsf lle und Klassen beschrieben Sie stellen somit eine Erg n zung zu Abschnitt 3 4 Spezifikation der Anwendungsf lle dar Es werden hier nur die minimal notwendigen F lle betrachtet eine umfassende Spezifikation f r alle notwen digen Funktionalit ten obliegt den Erweiterungen durchf hrenden Systementwicklern In den Abbildungen werden nur die hinzugekommenen oder erweiterten Anwendungs f lle und Klassen dargestellt Pkes11 bezieht sich auf den Cryptographic Token Interface Standard Vergleiche hierzu Lab02 82 MW LF
50. Pair und ein Zertifikat f r einen Administrator erstellt und mit dem Private Key des initialen Issuers signiert Diese Daten werden ber einen Ad minRequest analog zum initialen Issuer ber eine Entrance Funktionalit tin den Stock eingebracht Auch die Daten des Administrators werden in einen KeyStore im Daten verzeichnis der Unittests geschrieben um ber den PrivateKey des Administrators f r die Signierung von Requests verf gen zu k nnen Nach Abschlu dieses Requests ist die Initialisierung abgeschlossen und die Flexi TRUST CA betriebsbereit 7 3 6 Herunterfahren der FlexiTRUST CA Der Application Server kann mit Hilfe des Skriptes shutdown sh herunter gefahren werden bin shutdown sh 7 3 7 Update der Anwendung Update von JBoss Ein Update des Application Servers wird analog zur Installation vgl Abschnitt 7 3 2 Installation von JBoss durchgef hrt Anschlie end mu die FlexiTRUST CA neu bersetzt werden Update der FlexiTRUST CA Das Update der CA erfolgt durch ein CVS Update der Module all ca und jws Anschlie end m ssen die aktualisierten Packages neu bersetzt werden KAPITEL 7 INSTALLATION DES SYSTEMS 78 7 3 8 Deinstallation Die Deinstallation erfolgt durch L schen der Verzeichnisse JBOSS_HOME und FLEXI TRUST_HOME 7 3 9 Distributionsversion der FlexiTRUST CA Eine Distribution der FlexiTRUST CA enth lt voneinander getrennt ein CA EJB Tier und einen Pkcs Serverteil Diese k
51. STEMS PreparedStatement prepStmt con prepareStatement insertStatement int offset workerPK 108 storePreparedStatementFragment prepStmt 1 worker storePreparedStatementFragment prepStmt int rowCount 0 try rowCount prepStmt executeUpdate catch SOLException ex prepStmt close if ex getErrorCode ERR_DUPLICATE_KEY throw new DuplicateKeyException The request with the primary key workerPK allready exists else throw ex prepStmt close offset if rowCount 0 throw new NoSuchEntityException Insert for request workerPK failed switch worker getType case Types X509CRT insertX509CrtRequest con workerPK worker break case Types X509CRL insertX509CrlRequest con workerPK worker break case Types X509P11 insertX509PllRequest con workerPK worker break case Types ADMIN insertAdminRequest con workerPK worker break case Types ISSUER insertIssuerRequest con workerPK worker break default break EH Loads a Request param con Connection param workerPK The primary key of the Request param worker The Request throws SQLException Database access error 4H HH public void selectWorker Connection con WorkerPK workerPK Worker worker throws SQLException String selectStatement null switch workerPK getType case Types X509CRT selectStatement select
52. System zu identifi zieren sein Beides wird von der Datenbank sichergestellt e fetch issuers data Momentan existiert noch kein Anwendungsfall der s mt liche Daten eines Issuers ben tigt die Funktionalitat liefert der Stock fiir zuktinf tige Anwendungsf lle e fetch issuers base data Zur Signierung und Verifikation werden die Ba sisdaten des Issuers ben tigt Anwendungsf lle Bereich Admin e insert new admin Soll ein neuer Administrator eingef gt werden darf dieser nicht bereits eingetragen worden sein und mu eindeutig im System zu identifi zieren sein Beides wird von der Datenbank sichergestellt KAPITEL 3 DIE FLEXITRUST CA 26 e fetch initial admin name Zur Verifikation eines eingehenden und zum Si gnieren eines ausgehenden Request Pakets werden Daten eines Administrators ben tigt der mit seinem ffentlichen Schl ssel in der folgenden Instanz verfiig bar sein mu Momentan ist dies der initial eingebrachte Administrator dessen Name ber den Stock abgefragt wird e fetch admins data Die Daten des Administrators werden zur Signierung oder Verifikation eines Request Pakets ben tigt Anwendungsf lle Bereich User e insert new user Wird ein Zertifikatsantrag gestellt mu der zuk nftige Be sitzer des Zertifikats in die Datenbank eingebracht und ein Prim rschl ssel er stellt werden Ist dieser User bereits bekannt wird dies vom Stock erkannt und der gefundene Prim rschl ssel zur ckge
53. WEITERUNG DES SYSTEMS 110 JA Sets the state to failed param con Connection param workerPK The primary key of the request throws SQLException Database access error WorkerPK workerPK Worker worker throws SQLException String updateStatement update requests set state creationDate retirementDate type sigDat nextBench where requestPK PreparedStatement prepStmt con prepareStatement updateStatement int offset worker storePreparedStatementFragment prepStmt 1 workerPK storePreparedStatementFragment prepStmt offset int rowCount prepStmt executeUpdate prepStmt close if rowCount 0 throw new NoSuchEntityException Update for request workerPK failed switch worker getType case Types X509CRT updateX509CrtRequest con workerPK worker break case Types X509CRL updateX509CrlRequest con workerPK worker break case Types X509P11 updateX509P11Request con workerPK worker break case Types ADMIN updateAdminRequest con workerPK worker break case Types ISSUER updateIssuerRequest con workerPK worker break default break public void setFailed Connection con WorkerPK workerPK throws SQLException String updateStatement update requests set state where requestPK SH PreparedStatement prepStmt con prepareStatement updateStatement int offset
54. Zertifikats gespeichert Bis zur Erweiterung der CA sind dies alle requestspezifischen Tabellen in der Daten bank Desweiteren werden folgende Tabellen zur Verwaltung der CA internen Daten ben tigt Tabelle issuers In diese Tabelle werden nach erfolgreicher Bearbeitung eines Issu erRequests s mtliche zugeh rigen Daten der Tabelle issuerRequests mit Ausnahme des Prim rschl ssels des Requests bernommen zus tzlich wird ein von der Daten bank automatisch hochgez hlter Prim rschl ssel f r den Issuer vergeben und gespei chert KAPITEL 6 DATENMODELL 65 Tabelle admins In diese Tabelle werden nach erfolgreicher Bearbeitung eines Ad minRequests s mtliche zugeh rigen Daten der Tabelle adminRequests mit Ausnahme des Prim rschl ssels des Requests bernommen zus tzlich wird ein von der Daten bank automatisch hochgez hlter Prim rschl ssel f r den Administrator vergeben und gespeichert Tabelle users In diese Tabelle wird die Name eines neuen Zertifikatbesitzers einge tragen und ein von der Datenbank automatisch hochgez hlter Prim rschl ssel f r den User vergeben und gespeichert Tabelle certificates Diese Tabelle h lt den systemweit eindeutigen Prim rschl ssel eines Zertifikats den Prim rschl ssel des Admins der den Zertifikatsantrag bearbeitet hat den Prim rschl ssel des Requests mit dem der Antrag in die CA gebracht wur de den Prim rschl ssel des Users f r den das Zertifikat erstellt wurde das Z
55. abstract class Request extends Worker J The specialized request af private GenericWorker request null J Updates our bean data param workerData Bean data throws ASNIException An ASN 1 exception occured throws NoSuchAlgorithmException A requested particular cryptographic algorithm is not available throws IOException An I O operation failed or was interrupted throws ClassNotFoundException No definition for the class to be loaded found throws CertificateEncodingException An error occured while KAPITEL 9 ERWEITERUNG DES SYSTEMS 105 encoding a certificate throws BadNameException An error occured during parsing of RFC1779 distinguished names public void updateBeanData WorkerData workerData throws ASNlException NoSuchAlgorithmException IOException ClassNotFoundException CertificateEncodingException BadNameException super updateBeanData workerData if request null switch super getType case Types X509CRT request new X509CrtRequest workerData this break case Types X509CRL request new X509CrlRequest workerData this break case Types X509P11 request new X509P11Request workerData this break case Types ADMIN request new AdminRequest workerData this break case Types ISSUER request new IssuerRequest workerData this break default break else request updateBeanData workerData
56. alidX509Certificates byte CaStockDAO getRequestState int getinitialAdminName String getAdminCertificate byte getUserCertificate byte getAdminCertificate byte getlssuerCertificate byte getlssuerCertificate byte insertPrivKey void getPrivKeyPass String getPrivKey PrivateKey getX509Certificates byte getValidX509Certificates byte getlssuerCertChain Certificate insertCrlEntry void getLeanCriEntries CRLEntry getUserPKByUserDN UserPK Abbildung 4 8 Enterprise JavaBeans CaStock KAPITEL 4 SYSTEMARCHITEKTUR 47 4 3 Architektur Web Tier Das Web Tier beinhaltet im derzeitigen Entwicklungsstand dieser Certification Autho rity ein JMX und Unittest Frontend Der Zugriff kann mit einem beliebigen Browser ber folgende Adressen erfolgen fiir das JMX Frontend http localhost 8080 jmx browser http localhost 8080 3jmx console und fiir die Unittests mit http localhost 8080 requesttests http localhost 8080 stocktests Datei Bearbeiten Ansicht Reiter Einstellungen Gehe zu Lesezeichen Werkzeuge Hilfe lt Zur ck z gt gt O 4 Abbrechen 100 e np 1ocamost80807mx browser I Bookmarklets Google Covel Gah W rterbuch Agent View x Agent View X EJTools i Agent View This agent is registered on the domain jboss This domain contains 156 MBean s Administration Notification Customization
57. altet alle Operationen die fiir das Spei chern und Auslesen von Daten notwendig sind Sie ist eine Spezialisierung der Klasse CaStock aus der Domine Sie ist die zentrale Instanz fiir die Verwaltung von Issuern Administratoren Usern Zertifikaten und Revokationen Klasse CaStockDAO Die Klasse CaStockDAO ist die Implementierung des Data Access Objects des CaStock und zeichnet sich fiir alle mit der persistenten Datenspeicherung zusammenh ngenden Pflichten verantwortlich KAPITEL 4 SYSTEMARCHITEKTUR 46 de tud cdc flexiTrust ca domain stock CaStock SessionBean CaStockEJB DataAccessObject CaStockDAO ctx SessionContext caStockDAO CaStockDAO certificateLocalHome CertificateLocalHome issuerLocalHome lssuerLocalHome adminLocalHome AdminLocalHome userLocalHome UserLocalHome ERR_DUPLICATE KEY mt InitialAdminPKcint setSessionContext void ejbActivate void ejbPassivate void ejbRemove void TF ejbCreate void getRequestState int insertissuer void getlssuerBaseData lssuerBaseData getlssuerData IssuerData insertAdmin void getinitialAdminName Name getAdminData AdminData getAdminCertificate byte insertUser UserPK getUserData UserData getUserData UserData getCertChain X509Certificate insertPrivKey void getPrivKeyPass String getPrivKey PrivateKey insertCertificate void updateCrl void getLeanCrlEntries CRLEntry getX509Certificates byte getV
58. altet eine Auflistung aller in der CA im plementierten Benches Die in ihr definierten Konstanten werden von den Requests und Workbenches zur Identifizierung der Benchtypen ben tigt Da wir hier eine neue Bench definieren mu diese in der Klasse Equipment eingtragen werden Listing 9 3 domain bench Equipment package de tud cdc flexiTrust ca domain bench public class Equipment Type cryptobench a public static final int CRYPTOBENCH 1 Ak Type entrance f 85858 wu a H H 8 KAPITEL 9 ERWEITERUNG DES SYSTEMS 97 public static final int ENTRANCE 2 Type exit d public static final int EXIT 3 J Type pkcsllbench wa public static final int PKCS11BENCH 4 Die Zeile 23 definiert die Konstante der Pkcs11Bench 9 3 4 Die Klasse EntranceEJB Die Stateless Session Bean ejbs entrance EntranceEJB beinhaltet alle Operatio nen die fiir die Bearbeitung von Issuer und Admin Requests in Verbindung mit wei teren Enterprise JavaBeans notwendig sind Sie stellt daher ein Bindeglied zwischen der in der Dom nenklasse implementierten Logik und dem clusterweiten EJB Tier der FlexiTRUST CA dar Fiir eine n here Beschreibung dieser Klasse sei auf den Abschnitt 4 2 2 Entrance verwiesen Fiir die in diesem Kapitel beschriebene Erweiterung der CA um eine neue Workbench mu diese der EntranceEJB als m gliches Ziel des Requests angegeben werden Listing 9 4 ejbs entrance EntranceEJ
59. andbuches Kapitel 1 VD GJ HN Bu WN Inhalt Einleitung JWorkshop Die FlexiTRUST CA Systemarchitektur Umsetzung der fachlichen Anforderungen Datenmodell Installation des Systems Betrieb des Systems Erweiterung des Systems Abschlie ende Bemerkungen 1 3 Konventionen Dieses Handbuch verwendet folgende Konventionen Benutzereingabe n dieser Schriftart sind die vom Benutzer w rtlich ein zugebenden Kommandos und Texte dargestellt Ausgabe des Systems In dieser Schriftart werden Ausgaben des Systems darge stellt Sie wird auch verwendet um Dateiinhalte zu zei gen oder um im fortlaufenden Text einen exakten Datein amen ein Kommando einen Pfadnamen oder ein Ver zeichnis anzugeben lt Dateiname gt In Beispielen Kommandos oder fortlaufendem Text wer den italics benutzt um Platzhalter zu kennzeichnen die im aktuellen Kontext vom Benutzer entsprechend einzu setzen sind Option Beschreibung von Optionen sind fett und in eckigen Klammern angegeben Die im Handbuch angegebenen Kommandos entsprechen der UNIX Syntax 1 4 Verwendete Werkzeuge Wesentliche Werkzeuge im Rahmen des Designs und der Entwicklung sind e Together J Version 6 0 f r die Gesch ftsklassenmodellierung und als Front End zum Debugging Tog02 KAPITEL 1 EINLEITUNG 11 DbVisualizer 3 1 Sof02 als Frontend f r den Datenbankzugriff Java 2 Platform Standard Edition 1 4 1_01 als Entwicklungsumgebung Aspec
60. arbeit ist eine leistungsf hige und moderne Certification Authority f r FlexiTRUST entstanden die aufgrund ihrer Modularit t und ihrer auf JWorkShop basierenden Architektur leicht erweiterbar ist Der neu implementierte JWorkShop liefert eine Architektur in der auch andere Berei che von FlexiTRUST neu entwickelt werden k nnen um eine Heterogenit t bez glich Architektur und Technologien bei den Hauptkomponenten von FlexiTRUST zu errei chen Abkurzungsverzeichnis API Application Programming Interface CA Certification Authority CRL Certificate Revocation List CRLEntry Certificate Revocation List Entry CVS Concurrent Versions System DAO Data Access Object DV Datenverarbeitung EAS Enterprise Application Server EIS Enterprise Information Systems EJB Enterprise Java Bean HA JNDI High Availability Java Namnig and Directory Interface HTML HyperText Markup Language IP Internet Protocol IS Infrastructure Services J2EE Java 2 Platform Enterprise Edition J2SE Java 2 Platform Standard Edition JAAS Java Authentication and Authorization Service JDE Java Development Environment JMX Java Management Extensions JNDI Java Naming and Directory Interface 123 KAPITEL 10 ABSCHLIESSENDE BEMERKUNGEN JSP Java Server Pages JTA Java Transaction API JTS Java Transaction Service JVM Java Virtual Machine JWS JWorkShop MBean Managed Bean MVC Model View Controller PKI Public Key Infrastructure PK Primary Key RA Regist
61. asse AdminPK beschreibt den internen Primary Key eines Administrators 43 KAPITEL 4 SYSTEMARCHITEKTUR ploa Jesnajepdn PIOAISSNPEIOS Ad 3sn Jasnyasul Wdlesn NOUesr epuut Ad9SN Ay Are Agp ul ovalesn ovdiesn pelgosseooyereq plon ujwpyezepdn Don UIWPY 99 9S Ydulupy ulWupYypasul Ydulupy NquiUpyAgpuUL Yduiupy AeyArew gd gpuy Ovauiupy ovauwpy pelgosseooyereq HSN AaS Nb elegiesn uonejuosaldoyuesgrob PIOA paylpopyes ueg 00g pal poyysi Del UI Ni UU Die ejequiupy uoleJueseldayuesgreb PIOA paylpoyyes uea 00g pallpoyysi Ydlesn NaesnAgpulqle ydiesn Aey Meu gAgpuljqle Ydulupy NGuiupy gpursale Ydumupy AoyAreundAgpulggle ploauenssjajepdn ploAuenss jo9 es Md4 anss Janss Liasul Ydlenss Nquenss Agpul Wdienss Aoy Are Ag pul ovalenss ovdienss pelgossesovejeq Malanss Yalanss ja ejegeseglenssi ejegeseguenssjo ejeqlonssi uoeJusssidoyuesgjo ploa payy popyes LE9 009 pelIPOWSI YdJenss Nqenss Agpuljqla Ydlenss AsyAleWL JAQpuljqla Ploa eyeoyegeyepdn ploA 3 8911199 03 98 WdePWED SJe 0 eo uasul YP y Are A gp ul Ovasjesuniso OYID pelgosssooyereq E ejegesegaje9 1e9 uoejuasaldayeseguesgjeb eje galos uoejuesaideyuesgieb AdU AAEH ploa palJ poyyjes UES 009 PENIPOWSI at Agajeo eo eseu qAgpulsqle ploa a ea19 so yafe Mdlasn aj
62. asse RequestDAO e initWork Die Initialisierung des Requests sie wird von der EntranceEJB auf gerufen Zeile 124 ff e work Die eigentliche Arbeitsmethode Sie untergliedert sich innerhalb des Re quests in die je nach Typ notwendigen Arbeitsschritte Zeile 133 ff Listing 9 5 domain request X509P1 1 Request package de tud cdc flexiTrust ca domain request import import import import import import import import import JA java sql PreparedStatement java sql ResultSet java sql SQLException jws jws jws jws de tud cdc flexiTrust ca domain request data X509PllRequestData domain domain domain domain de tud cdc bench Bench worker GenericWorker worker Worker worker data WorkerData flexiTrust ca domain bench Equipment public class X509P11Request extends GenericWorker Ak Attribute Za private int attribute JA The generic Request 7 private Request request null JAR Constructor El public X509P11Request JA Constructor param request The generic Request f public X509P11Request Request request this request request KAPITEL 9 ERWEITERUNG DES SYSTEMS 101 47 JA 48 Constructor 49 param workerData The X509P11Request data 50 param request The Request 51 7 52 public X509P11Request WorkerData workerData Request request 53 54 this request request 55 updateBeanD
63. ata workerData 56 57 58 J 59 Updates our bean data 60 param workerData Bean data 61 af 62 public void updateBeanData WorkerData workerData 63 64 X509P11RequestData x509PllRequestData 65 X509P11RequestData workerData 66 67 attribute x509PllRequestData getAttribute 68 69 70 JA 1 Returns our bean representation 7 return Our bean representation 73 bd 74 public WorkerData getBeanRepresentation 75 76 X509P11RequestData x509P11RequestData 77 new X509PllRequestData 78 79 x509PllRequestData setAttribute attribute 80 81 return WorkerData x509P11RequestData 82 83 84 fr 85 Loads a part of the result set 86 param rs Result set 87 param offset Column offset 88 return New column offset 89 throws SQLException Database access error 90 SS 91 public int loadResultSetFragment ResultSet rs int offset 92 throws SQLException 93 94 attribute rs getInt offset 95 96 return offset 97 98 99 J 100 Stores a part of the prepared statement 101 param prepStmt Prepared statement 102 param offset Column offset 103 return New column offset 104 throws SQLException Database access error 105 EL 106 public int storePreparedStatementFragment PreparedStatement 107 prepStmt 108 int offset 109 throws SQLException 110 111 prepStmt setInt offset attribute 112 113 return offset 114 115 11
64. atePK CertificatePK loadResultSetFragment int storePreparedStatementFragment int storePreparedStatementFragment int data userDN String Stock lssuerData Eech CertificateData updateBeanData void lssuerBaseData loadResultSetFragment int CertificateBaseData storePreparedStatementFragment int getlssuerData lssuerData AdminData getAdminData AdminData UserData beanRepresentation UserData Abbildung 3 10 Gesch ftsklassen der Domain Stock Klasse Admin Diese Klasse beschreibt einen Administrator Neben den beschreibenden Attributen ist sie daf r zust ndig die Daten des Administrators zum Signieren ausgehender und zum Verifizieren eingehender Requests bereitzustellen Klasse CaStock Diese Klasse stellt die zentrale Verwaltung persistenter Daten der CA dar Klasse Certificate Die Klasse Certificate beschreibt ein X509v3 Zertifikat innerhalb der FlexiTRUST CA Klasse Issuer Diese Klasse beschreibt einen Issuer Neben den beschreibenden Attributen ist sie daf r zust ndig Zertifikatsantr ge zu unterschreiben KAPITEL 3 DIE FLEXITRUST CA 33 Klasse User Diese Klasse beschreibt einen User Zu jedem Zertifikat muf auch der zugeh rige User in der CA bekannt sein um das Zertifikat zuordnen zu k nnen Kapitel 4 Systemarchitektur Die Systemarchitektur der FlexiTRUST CA basiert auf der Java 2 Platform Enterprise Edition J2EE Inc02a J2EE ist eine von Sun Microsystems definierte und standar
65. attform XDoclet braucht normalerweise nur eine Datei n mlich die EJB Implementierung und generiert daraus alle weiteren notwendigen Dateien um eine EJB zu deployen N here Informationen zu XDoclet k nnen A502 entnommen werden Die Generierung der Interfaces und Deployment Deskriptoren wird w hrend des Build vorgangs der FlexiTRUST CA durch Ant Targets durchgef hrt 4 5 7 Value Objects Bei Enterprise JavaBeans handelt es sich um Remote Objekte die einen signifikan ten Anteil an Systemressourcen und Netzwerkbandbreite ben tigen Deshalb sollte ein KAPITEL 4 SYSTEMARCHITEKTUR 60 Gesch ftsobjekt das nur Daten h lt und diese ber Zugriffsmethoden dem Client zur Verfiigung stellt nicht als Enterprise Bean modelliert werden Eine bessere Alterna tive sind sogenannte Datentransferobjekte engl Value Object Sie sind serialisierbar und k nnen komplett als Werte zwischen Client und Server verschickt werden Oft ist es sinnvoll da Entity Beans einem Client ihre kompletten Daten durch nur einen Remoteaufruf in Form eines Value Objects zur Verfiigung stellen Zus tzlich zu die sem Performancevorteil ergibt sich der Nebeneffekt daf nicht s mtliche betroffenen Methodensignaturen ge ndert werden miissen wenn das Value Object erweitert wird Ein Beispiel hierf r ist das abschlie ende Verpacken eines Requests in eine signierte Datei durch den Pkcs7Server Hierf r fragt der Pkcs7Server die Request Entity nach ihrer Bean
66. beim Entfernen einer Bean instanz alle Referenzen auf andere Beans wieder freigegeben werden Nachdem der Request auf der EntranceEJB abgearbeitet ist wird er an die von ihm spezifizierte n chste Bench weitergegeben F r den Fall da dieses die Pkcs11Bench ist mu ein entsprechender Eintrag Zeile 86 ff im Switch Block erfolgen 9 4 PKCS 11 Request Beteiligte Komponenten Klasse Beschreibung X509P11Request X509P11 Request X509P11RequestData Value Object des X509P11Requests Request Gesch ftsklasse der Request EJB RequestEJB Allgemeine RequestEJB RequestDAO Data Access Object der RequestEJB Types Auflistung aller in der CA vorhandenen Requests An der Enterprise JavaBean RequestEJB m ssen keine Modifikationen durchgef hrt werden Sie ist nur der Vollst ndigkeit halber in obiger Liste enthalten 9 4 1 Die Klasse X509P11Request Die Klasse domain request X509P11Request implementiert einen Pkcs 11 Request Die grundlegende Struktur wird durch die Klasse GenericWorker definiert welche die KAPITEL 9 ERWEITERUNG DES SYSTEMS 100 Superklasse jedes Requests darstellt Zeile 19 Hierdurch wird sichergestellt da ein Request folgende Methoden implementiert e updateBeanData und getBeanRepresentation Aktualisieren bzw Liefern der requestspezifischen Attribute Zeilen 62 ff und 74 ff e loadResultSetFragment und storePreparedStatementFragment Behand lung der SQL Statements Zeilen 91 ff und 107 ff der Kl
67. bishe rigen Auswirkungen r ckg ngig gemacht e Consistency Die Auswirkungen einer Transaktion bewahren die Konsitenz e Isolation Zwischenzust nde sind f r andere Transaktionen unsichtbar e Durability Die Auswirkungen einer ausgef hrten Transaktion sind dauerhaft Diese Eigenschaften zusammen werden als ACID Pr missen bezeichnet Der von JBoss mitgelieferte Transaktionsmanager bietet Unterst tzung f r Dienste wie Abgrenzung einzelner Transaktionen und die bermittlung des Transaktionskon texts Die FlexiTRUST CA wurde als verteilte Applikation entworfen und somit k n nen Transaktionen mehrere Nodes umfassen Da diese verteilten Transaktionen jedoch KAPITEL 4 SYSTEMARCHITEKTUR 58 vom JBoss eigenen nach JTA Spezifikation implementierten Transaktions Monitor SJG02b nicht unterst tzt werden findet hier Tyrex 1 0 Gro02a als JBoss Plugin An wendung Tyrex ist eine OpenSource Implementierung der Java Transaction Service JTS Spezifikation Inc02f die von Sun Microsystems definiert wurde und verteilte Transaktionen beriicksichtigt 4 5 5 Unittests Dante could never have painted a more fearsome hell than the last few months of a large software project which did not make extensive use of unit testing unknown Fiir die Testf lle wird in diesem Projekt eine erweiterte Version von JUnit die JUnitEE verwendet Die Standardtestf lle mit JUnit arbeiten als Client des EJB Tiers und laufen in einer getrennten JVM Da
68. ch den Pkcs7EntranceService vgl Abschnitt 4 4 1 Anwendungs f lle des Pkcs7Server persistent in die Datenbank eingebracht An diesen Fall schlie t sich der Anwendungsfall process request an KAPITEL 3 DIE FLEXITRUST CA 23 process request Der Anwendungsfall beschreibt die erstmalige Bearbeitung des Requests innerhalb des EJB Tiers der FlexiTRUST CA Je nach Typ des Re quests werden unterschiedliche Verarbeitungsschritte durchgef hrt Alle Typen werden von spezialisierten und vom Request definierten Workbenches verarbei tet process admin request process issuer request Dies sind die Spezialisierungen des Anwendungs falls process request f r Admin und Issuer Request 3 4 3 Anwendungsfalle der Domain Exit Die nachfolgende Abbildung 3 3 zeigt alle Anwendungsf lle des Bereichs Exit und ihre Beziehungen untereinander ee EE lt request prepare to leave gt A delegate to server session gt Su we lt lt include gt gt _ gt lt lt include gt gt e Se 2 Exit Abbildung 3 3 Anwendungsfalle der Domain Exit process request Dieser Anwendungsfall der ExitEJB beinhaltet abschlie Bende Verarbeitungsschritte des Requests Im einzelnen werden hier Requests auf das Verlassen des EJB Tiers vorbereitet und schlie lich an den Pkcs7Exit Service geleitet Er untergliedert sich daher in die F lle request prepare to leave und delegate to server session request prepare to leave In diesem
69. char sigAlg varchar sigAlg varchar secProv varchar cards secProv varchar certChain blob EEP bigint certChain blob cardinfo blob KA certificates adminRequests requests Re bigint QUEPA varchar FEUER varchar issuerPK int e adminDN varchar state int requestPK varchar admins adminPrivKey blob creationDate bigint userPK int Eam mt certificate blob retirementDate bigint certificate blob adminDN varchar we certSerial bigint s type int validFrom bigint adminPrivkey blob issuerDN varchar sigDat blob validUntil bigint certificate blob validFrom bigint nextBench varchar revocPass varchar certSerial bigint validUntil bigint certRole int issuerDN varchar revocPass varchar valldFrem bigint keyPass varchar xo validUntil bigint SGAS SEHEN revocPess varchar secProv varchar Users keyPass varchar USEPA int sigAlg varchar userDN varchar secProv varchar Abbildung 6 1 Datenmodell 6 2 Die Tabellen Tabelle requests In dieser Tabelle werden alle requestspezifischen Daten gespei chert die jeder Request ben tigt Dazu geh ren der systemweit eindeutige Prim r schl ssel des Requests der Requeststatus der Zeitpunkt der Erstellung der Zeitpunkt 63 KAPITEL 6 DATENMODELL 64 zu dem eine zu lange andauernde Bearbeitung abgebrochen werden soll der Typ des Requests die signierten Daten des Requests und die n chste zu benutzende Bench Abh ngig vom Requesttyp m ssen weitere Daten gespeichert werden dazu erh lt jeder Requ
70. ches die n chste Bench ist und ruft deren processRequest Methode auf 4 2 5 Stock Im Paket Stock sind die Enterprise JavaBeans des Stocks und die dazugeh rigen Hilfs klassen zusammengefa t In den Abbildungen 4 7 und 4 8 sind die Entity Beans Admin EJB CertificateEJB IssuerEJB und UserEJB ihre Data Access Objects AdminDAO CertificateDAO IssuerDAO und UserDAO und die Primary Key Klassen AdminPK CertificatePK IssuerPK und UserPK dargestellt Weiterhin ist die Session Bean CaStockEJB mit ihrem DataAccessObject CaStockDAO aufgefiihrt Die in den Abbildungen 4 7 und 4 8 dargestellten Klassen werden in den nachfolgenden Abschnitten beschrieben Klasse AdminEJB Die Entity Bean AdminEJB enth lt die Daten eines einzelnen Administrators im EJB Tier Sie ist eine Spezialisierung der Klasse Admin aus der Dom ne Die EJB kann eine Darstellung des Administrators in Form einer JavaBean Komponente liefern sowie Daten auch umgekehrt wieder in die EJB einbringen Bei dieser JavaBean Komponente handelt es sich um die Klasse AdminData aus dem Paket de tud cdc flexiTrust ca domain stock data Klasse AdminDAO Die Klasse AdminDAO ist die Implementierung des Data Access Objects des Admini strators und zeichnet sich fiir alle mit der persistenten Datenspeicherung zusammen h ngenden Pflichten verantwortlich Sie stellt SQL Statements zur Verfiigung deren Befiillung an die Dom nen Klasse Admin delegiert wird Klasse AdminPK Die Kl
71. da als Vorlage f r die Konfigurationsdatei my cnf die Datei ca install mysql max my cnf replicant verwendet wird hierbei m ssen eindeutige Server IDs vergeben werden und hier als Master Host die IP Adresse oder dessen Name falls dieser auf gel st werden kann einzutragen ist Zus tzlich mu auf dem Master ein neuer Benutzer replicant mit Pa wort replicant eingetragen werden der die Rechte Select Reload Process File ben tigt und von allen Hosts auf den Master zugreifen k nnen mu Bevor der Replikant wieder reaktiviert werden kann mu die gesicherte Snapshotdatei siehe Abschnitt 7 2 2 Snapshot im MySQL Verzeichnis Windows C mysql data Unix var lib mysql als user mysql entpackt werden Der darauf folgende Start des Replikanten initialisiert nun die Verbindung zum Master und das Update ber das Master Log 7 2 4 Update der Anwendung Bei einem eventuellen Update des Datenbank Management Systems sind s mtliche dokumentierte nderungen gegen ber dem bestehenden System mit gr ter Sorgfalt zu berpr fen und es ist sicherzustellen da die bestehende Datenbank vollst ndig und ohne Nebeneffekte bernommen werden kann andernfalls ist mit Datenverlust zu rechnen Eine berpr fung auf Ver nderung der Transaktionseigenschaften und Ein haltung der Referenzbedingungen des verwendeten Tabellentyps InnoDB ist sehr zu empfehlen da ansonsten eine unkorrekte Speicherung im laufenden Betrieb dazu f
72. der RA einen Antrag oder ein Gesamtpaket unterschreibt in der CA bekannt sein da f r die Verifikation der Antr ge und Gesamtpakete der ffentliche Schl ssel des unterschreibenden Admini strators ben tigt wird Der Besitzer eines Zertifikats wird in FlexiTRUST User genannt Der Aussteller eines Zertifikats wird in einer Public Key Infrastruktur PKT Issuer genannt KAPITEL 3 DIE FLEXITRUST CA 17 Dieser Vorgang ist bei allen Antr gen die in die CA gebracht werden gleich Vervollst ndigung und Signierung des Zertifikats Der n chste Schritt ist die Vervollst ndigung der Daten des Zertifikats Hier wird der Signaturalgorithmus eingetragen und eine Seriennummer fiir das Zertifikat generiert Die Seriennummer und der Issuer zusammen liefern eine eindeutige Identifikation des Zertifikats Innerhalb der FlexiTRUST CA ist hierf r allerdings bereits die Seriennum mer ausreichend Anschlie end wird das Zertifikat mit dem privaten Schl ssel des Is suers signiert und in dem Antrag gespeichert Persistente Speicherung Das Zertifikat wird zus tzlich in der CA persistent gespeichert Hierfiir wird zun chst der Besitzer angelegt sofern er noch nicht in der CA bekannt ist Danach wird es Zertifikat mit seinem RevokationspaBwort gespeichert und mit Antrag Besitzer und Issuer verk pft Dadurch ist es m glich jederzeit festzustellen mit welchem Antrag ein Zertifikat in die CA gebracht wurde wem es geh rt und wer es ausgestellt
73. des EJB Tiers der FlexiTRUST CA vor fail Tritt im Workflowverlauf eines Requests ein Fehler auf der zum Abbruch der Bearbeitung f hrt wird er in der Datenbank mit failed gekennzeichnet 3 4 5 Anwendungsf lle der Domain Stock Die nachfolgende Abbildung 3 5 zeigt alle Anwendungsf lle des Bereichs Stock und ihre Beziehungen untereinander KAPITEL 3 DIE FLEXITRUST CA 25 en N be fetch users data Ki EE gt 7 fetch issuers data N Y SCH pS x insert users private key Se A Y n A pia 3 HE eege Ze mid pe lt fetch issuers base data SCH K a we ef he A pet EF Teen userenenifikales a d d 2 2 fetch users certificates eg Be Y g e Ge Se H S ai GC ee j p Be a ur fe A check request state IN e Se N I ssinclude gt gt aa i ES a a d Sc F a hy fetch admins data e N eo ee we A S S lt insert new certificate dp A ee Pi _ lt Update revocation list gt e A Ki SSES nems lt _eteh complete cr entries gt fetch certificate chain Abbildung 3 5 Anwendungsf lle der Domain Stock Anwendungsf lle Bereich Request e check request state Wird der aktuelle Status eines Requests ben tigt liefert der Stock diesen aus der Datenbank zur ck Anwendungsf lle Bereich Issuer e insert new issuer Soll ein neuer Issuer eingefiigt werden darf dieser Issuer nicht bereits eingetragen worden sein und mu eindeutig im
74. die ber Issuerantr ge in die CA ein gebracht werden KAPITEL 3 DIE FLEXITRUST CA 19 Issuerantrag Dieser Antrag wird vollst ndig bef llt in die CA eingebracht Er enth lt unter anderem den Namen des neuen Issuers dessen Zertifikat die Seriennummer des Zertifikats das Pa wort f r eine eventuelle Revokation des Zertifikats den privaten Schl ssel des Is suers und das Pa wort f r den Zugriff darauf Zus tzlich enth lt der Antrag noch eine Kette von Zertifikaten Dieser Kette kann rekursiv entnommen werden wer das jewei lige Zertifikat ausgestellt hat und letztendlich verantwortlich f r die Ausstellung des einzubringenden Issuerzertifikats und damit f r die Vertrauensw rdigkeit des neuen Issuers verantwortlich ist Die Einbringung des Antrags erfolgt analog zu Abschnitt 3 2 1 Ausstellung eines X509v3 Zertifikats Persistente Speicherung Der neue Issuer wird mit allen Daten persistent gespeichert Hierbei wird sichergestellt da nicht bereits ein anderer Issuer mit demselben Namen eingetragen wurde Der Antrag wird nun ohne die pers nlichen Daten des Issuers analog zu Abschnitt 3 2 1 Ausstellung eines X509v3 Zertifikats an die IS bergeben 3 2 4 Einbringen eines Administrators Die CA unterst tzt mehrere Administratoren die ber Antr ge in die CA eingebracht werden k nnen Das Einbringen eines neuen Administrators erfolgt analog zu Abschnitt 3 2 3 Ein 4 bringen eines neuen Issuers
75. disierte Plattform fiir die Entwicklung von Java basierten mehrschichtigen multi tier Gesch ftsanwendungen Sie definiert ein klares Architekturmodell und bietet eine ein heitliche Plattform fiir die Erstellung die Integration und den Betrieb der Anwendun gen Business Tier EIS Tier ip a gt A f JSP Pages Entity Beans Session Beans Message Driven Beans JavaBeans Components Optional Servlets Po J2EE Server Abbildung 4 1 Business Tier und EIS Tier J2EE unterscheidet das EIS Tier mit externen legacy Systemen zu denen auch re lationale Datenbanksysteme gerechnet werden das Middle Tier hier als J2EE Server zusammengefasst in dem z B die Business Logik implementiert ist und das Client Tier J2EE stellt insbesondere Komponenten fiir das Middle Tier zur Verfiigung Im einzelnen sind das Enterprise JavaBeans EJB Servlets Java Server Pages JSP und unterst tzende Dienste Inc02b Enterprise Information System 34 MW KAPITEL 4 SYSTEMARCHITEKTUR 35 EJBs sind das Kernst ck der J2EE Sie erm glichen die Erstellung von robusten objek torientierten verteilten Anwendungen EJBs modellieren im wesentlichen Gesch fts objekte oder ber Verwaltungsobjekte Funktionalit ten Sie werden in einem EJB Container verwaltet der den Enterprise JavaBeans definierte Schnittstellen zu den vom Applikationsserver verwalteten Ressourcen anbietet Zu diesen Diensten geh ren z B Security Transaktion
76. dung 4 11 Anwendungsf lle des Pkcs7Server Exit Anwendungsfalle der Domain Exit Die nachfolgende Abbildung 4 11 zeigt alle Anwendungsfalle der Komponente Exit des Pkcs7Servers und ihre Beziehungen untereinander Diese beschreiben die vom System durchzuf hrenden Anwendungsf lle f r das Signie ren und Schreiben der bearbeiteten Requests die das EJB Tier der FlexiTRUST CA durchlaufen haben Es k nnen die Hauptkomponenten Pkcs7Exit und Pkcs7Writer unterschieden wer den Der Pkcs7Exit ist f r die Konfiguration dieses Teils des Pkcs7Severs verant wortlich der Pkcs7Writer signiert die abgearbeiteten Requests und erzeugt signierte Packages f r die weitere Bearbeitung durch das Trustcenter Anwendungsf lle Bereich Pkcs7Exit e create pkcs7writer Der Pkcs7Exit ist f r den Lebenszyklus des Writers verantwortlich Seine prim re Aufgabe ist die abgearbeiteten Requests zu si gnieren und in signierten Paketen in das Filesystem zu schreiben e configure Pkcs Writer In diesem Fall wird der Writer mit vom Administra tor festgelegten Properties konfiguriert Anwendungsf lle Bereich Pkcs7Writer KAPITEL 4 SYSTEMARCHITEKTUR 51 e accept finished request Nach Abschlu der Bearbeitung der Requests in nerhalb des EJB Tiers werden sie dem Writer von der Session Bean ExitEJB bergeben e sign request Der Pkcs Writer signiert die abgearbeiteten Requests e sign file Der Pkcs7Writer signiert vor dem Schreiben auf die Festp
77. e gt 3 4 1 Anwendungsf lle der Domain Bench 21 3 4 2 Anwendungsfalle der Domain Entrance 22 3 4 3 Anwendungsfalle der Domain Exit 23 3 4 4 Anwendungsfalle der Domain Request 24 3 4 5 Anwendungsf lle der Domain Stock 24 3 5 Identifikation der Gesch ftsklassen o 21 3 5 1 Gesch ftsklassen der Domain Bench 2 3 5 2 Gesch ftsklassen der Domain Entrance 28 3 5 3 Geschaftsklassen der Domain Exit 29 3 5 4 Gesch ftsklassen der Domain Request 30 3 5 5 Gesch ftsklassen der Domain Stock 31 4 Systemarchitektur 34 4 1 Architektur EIS Tier onen 36 4 2 Architektur EJB Tier 2 2 eee 36 4 2 1 Bench 2 a Sack Bae RR Bee E es RS 37 42 2 Entr nce e ENEE EEN bean 38 4 23 PO 62 it bb ee 39 4 24 Request ee EEN a Laem Ae er 39 O A eg ee ence EE pes ER 42 4 3 Architektur Web Tier 2 222 oo onen 47 4 4 Architektur Client Tier o 48 4 4 1 Anwendungsf lle des Pkcs7Server 48 4 4 2 Architektur Pkcs7Server 51 INHALTS VERZEICHNIS 4 5 Grundlagen und Begriindungen f r die vorgestellte Architektur 4 5 1 Local Interfaces der Entity Beans 4 5 2 HA JNDI und die Pkcs7Server Session 4 5 3 EJBServiceLocator 4 5 4 Transaction Handling
78. elt sich hierbei um Verantwortungsbereiche deren Bearbeitung haupts chlich durch den jeweils zugeordneten Diplomanden vorgenommen wurde Diese Aufteilung umfasst jedoch nicht s mtliche Aufgabengebiete daher werden zur Kennzeichnung der jeweiligen Bearbeiter der einzelnen Kapitel und Abschnitte zus tz lich die K rzel MW f r Markus Winkler und LF f r Lutz Feldgen angegeben Inhaltsverzeichnis 1 Einleitung 1 1 ber dieses Handbuch 1 2 Struktur dieses Handbuches 1 3 Konventionen 1 4 Verwendete Werkzeuge 1 5 Zielumgebung 1 5 1 Hardware 1 5 2 Software 2 JWorkshop 2 1 Beschreibung des JWorkshop 2 2 Umsetzung des JWorkshop 3 Die FlexiTRUST CA 3 1 Beschreibung einer CA 3 2 Funktionalit ten der FlexiTRUST CA 3 2 1 Ausstellung eines X509v3 Zertifikats 3 2 2 Revokation eines Zertifikats 3 2 3 Einbringen eines Issuers 3 2 4 Einbringen eines Administrators 3 2 5 Zugriff auf gespeicherte Daten 3 3 Abbildung der CA auf den JWorkShop 10 10 10 11 11 11 12 12 13 15 15 16 16 17 18 19 19 INHALTS VERZEICHNIS 2 33 1 Antr ge aci a eh 20 3 3 2 Speicherung von Daten 20 3 3 3 Funktionen zur Bearbeitung von Antr gen 20 3 3 4 Antragstellung 20 3 3 5 Antragsfertigstellung 20 3 4 Spezifikation der Anwendungsf ll
79. ep one private void doStepl Your code here request setState Worker DOSTEP2 request setNextBench Equipment PKCS11BENCH J Does the work of step two private void doStep2 Your code here 190 191 192 193 194 em A nner wn ee 11 12 KAPITEL 9 ERWEITERUNG DES SYSTEMS 103 request setState Worker DONE request setNextBench Equipment EXIT 9 4 2 Die Klasse X509P11RequestData Die Klasse domain request data X509P11RequestData implementiert ein Value Object und beinhaltet alle den speziellen Request bezeichnenden Attribute Sie ist eine Spezialisierung der Klasse jws domain worker data WorkerData in der die allge meinen Attribute enthalten sind Beide Klassen zusammengefa t liefern eine Darstel lung eines von der FlexiTRUST CA zu bearbeitenden Requests hier eines X509P11 Requests In der Klasse WorkerData sind folgende Attribute spezifiziert e workerPK Der Primary Key des Requests e state Der aktuelle Status des Requests Folgende Stati sind in der Klasse jws domain worker Worker definiert UNDEFINED DOSTEP1 5 DONE und FAILED e creationDate Der Erzeugungszeitpunkt e retirementDate Das Ablaufdatum e type Typ des Requests vgl Abschnitt 9 4 5 Die Klasse Types e sigDat Die signierten Daten e nextBench Die aktuelle n chste Bench vgl Abschnitt 9 3 3 Die Klasse Equip ment Weitere f r den Pkcs11 Request spezifische Attribute
80. equest void waitUntilEmpty void waitWVhileEmpty void nextWorkerlD int waitUntilFull void alive boolean waitWhileFull void capacity int size int empty boolean full boolean Abbildung 4 13 MBean Service Pkcs7Entrance Klasse Pkcs7Entrance Die Klasse Pkcs7Entrance implementiert eine Managed Bean Sie halt eine Instanz des Pkcs7Readers die von ihr zur Laufzeit konfiguriert KAPITEL 4 SYSTEMARCHITEKTUR 53 wird Klasse Pkcs7Reader Die Klasse Pkcs7Reader zeichnet sich fiir das Einlesen der von der FlexiTRUST CA zu bearbeitenden Request Packages im p7 Format verant wortlich Diese Packages enthalten DER encoded SignedData Objekte wobei jedes davon ebenfalls signiert ist und die Daten genau eines Request Objekts enth lt Die Request Authority ein Bestandteil der FlexiPKI Infrastruktur erzeugt Pakete mit Requests welche vom Pkcs7Reader tiber die Dateischnittstelle eingelesen und veri fiziert werden Der Reader packt fiir die weitere Verarbeitung die Requests aus und bergibt sie ber den Pkcs7Sender einzeln dem EJB Tier der CA f r die Verarbei tung Beim Start des Pkcs7Readers wird einmalig ein ThreadPool mit einer beliebi gen aber festen Anzahl von Pkcs7Sender Threads erzeugt Die Benutzung eines Pools mit beschr nkter aber konfigurierbarer vgl Abschnitt 8 3 Betrieb des Pkcs7Servers Anzahl von instantiierten Threads gew hrleistet hierbei da mit steigender Zahl von Anfragen die Belastung des Systems begre
81. erantwortlich und enthalten nur eingeschr nkt dar ber hinaus gehende Funktionalit t Hierf r spezifiziert J2EE Stateless Session Beans die diese als unab h ngige Services einer Entity Bean zur Verf gung stellen Da Exit Entrance Bench und Stock dem Worker solche Funktionalit ten zur Verf gung stellen werden sie als KAPITEL 2 JWORKSHOP 14 Stateless Session Beans realisiert ber abstrakte Klassen und Interfaces im JWS wird die Struktur f r auf JWS aufset zende Applikationen definiert F r weitergehende Informationen ber die verschiedenen Bean Typen sei an dieser Stelle auf die Studi enarbeit Win02 verwiesen Kapitel 3 Die FlexiTRUST CA 3 1 Beschreibung einer CA FlexiTRUST ist ein am Fachgebiet Theoretische Informatik der TU Darmstadt ent wickeltes Trustcenter Ein Trustcenter bietet die M glichkeit die Authentizit t Inte grit t und Verbindlichkeit von digitalen Daten zu verifizieren Kern der Verfahren die dies erm glichen sind digitale Signaturen und Zertifikate f r deren Erstellung eine Certification Authority CA zust ndig ist ber einen Operator werden Antr ge von einer Registration Authority RA zur Er stellung von Zertifikaten und Antr ge auf deren Revokation an die CA herangetragen Eine Revokation ist das Zuz ckziehen eines Zertifikats Da die Daten die eine CA verarbeitet u erst sensibel sind werden hohe Anforderungen an die Sicherheit und Richtigkeit der verarbeiteten Daten
82. ert die Bearbeitung Anwendungsfalle Bereich Pkcs7Entrance e create pkcs7reader Der Pkcs7Entrance ist fiir den Lebenszyklus des Rea ders verantwortlich Seine prim ren Aufgaben sind die Requests einzulesen sie zu verifizieren und in die CA einzubringen e configure pkcs7reader In diesem Fall wird der Reader mit vom Administra tor festgelegten Properties konfiguriert Anwendungsf lle Bereich Pkcs7Reader e create pkcs7sender pool Der Pkcs7Reader besitzt einen Thread Pool va riabler Gr e mit Sendern f r die weitere Verarbeitung Zwischen den in Bear beitung befindlichen Requests und den Threads besteht eine 1 zu 1 Beziehung e read file Der Pkcs7Reader liest eine signierte Datei mit zu bearbeitenden Requests von der Festplatte ein e verify file Der Pkcs7Reader verifiziert die Signatur der eingelesenen Datei e verify request Der Pkcs7Reader verifiziert die in der eingelesenen Datei verpackten Requests und bergibt sie nacheinander dem Sender Anwendungsf lle Bereich Pkcs7Sender e enter request Der Pkcs7Sender erzeugt eine Bean Repr sentation des Re quests innerhalb des EJB Tiers Der Request wird persistent in die Datenbank eingebracht e process request Der Pkcs7Sender initiiert die Bearbeitung des Requests KAPITEL 4 SYSTEMARCHITEKTUR 50 o CT create pkes7writer gt Z Pkcs7Exit configure pkes7writer amp sign file gt O accept finished request Z SS Pkes7Writer Abbil
83. ert sind eine Verbindung zum Master herstellen und ber die Binary Logs des Masters dessen nderungen an der Datenbank bernehmen Binary Logging bedeutet da jede nde rung der Datenbank unmittelbar nach dem commit in ein bin res Log geschrieben wird LF KAPITEL 7 INSTALLATION DES SYSTEMS 70 Da die Aktualisierung ber dieses Binary Log innerhalb weniger Sekunden nach Log Ausgabe des Masters erfolgt ist es m glich diese Ausgabe zu verz gern um gr ere nderungen am St ck aktualisieren zu lassen Durch dieses Vorgehen wird sicherge stellt da immer mindestens eine vollst ndige Kopie des Masters verf gbar ist Der Einsatz von Replikanten ist nicht ausreichend f r eine hoch zuverl ssige Sicherung der Daten f r eine zus tzliche regelm ige Sicherung hat der Datenbank Administrator zu sorgen MySQL bietet zahlreiche Einstellungsm glichkeiten wie die Gr e der Datenbank datei die Anzahl der maximal zul ssigen Verbindungen Cache Gr en und Buffer Gr en hier mu experimentell in einem realistischen Test Betrieb die beste Konfigu ration f r den Betrieb mit der FlexiTRUST CA ermittelt werden In dieser Installationsanleitung wird als Datenbankname caDB benutzt 7 2 1 Systemvoraussetzungen Systemvoraussetzungen der Hardware sind e Pentiumclass System gt 500 MHz e 256MB Arbeitsspeicher e ausreichend Speicherplatz Systemvoraussetzungen der Software sind e Betriebssystem Linux Kernel 2 4
84. erten Requests X509P11Request Die Klasse X509P11Request beschreibt einen X509v3 Certifica tion Request und erzeugt ein PKCS 11 Ergebnis Types Die Klasse Types beinhaltet eine Auflistung aller in der CA implementierten Requesttypen Im Vergleich zu Abschnitt 3 9 Gesch ftsklassen der Domain Request ist sie um den X509P11Request erweitert 9 2 Systemarchitektur Die nachfolgenden Abschnitte beschreiben die neuen und erweiterten Komponenten der FlexiTRUST CA und ihre Aufgaben entsprechend ihrer Zuordnung zu den ver KAPITEL 9 ERWEITERUNG DES SYSTEMS 88 schiedenen Schichten der J2EE Architektur 9 2 1 Architektur EJB Tier Bench Im Paket Bench sind die Enterprise JavaBeans der Workbenches zusammengefa t In Abbildung 9 7 ist die Session Bean Pkcs11BenchEJB dargestellt de tud cdc flexiTrust ca domain bench Pkcs11Bench SessionBean BenchEJB Pkcs11BenchEJB ctx SessionContext exitHome ExitHome requestLocalHome RequestLocalHome pkcs11SessionHome Pkcs11SessionHome setSessionContext void ejbActivate void ejbPassivate void ejbRemove void ejbCreate void processRequest void readData Object writeData void calculate Object Abbildung 9 7 Enterprise JavaBeans Bench Die in Abbildung 9 7 dargestellte Klasse wird in dem nachfolgenden Abschnitt be schrieben Klasse Pkcs11BenchEJB Die Stateless Session Bean Pkcs11BenchEJB beinhaltet alle bislang implementierten Operationen die f r den Kr
85. ertificate byte getissuerBaseData lssuerBaseData getInitialAdminData AdminData getAdminData AdminData insertCertificate void updateCrl X509Crl insertPrivKey void Abbildung 4 3 Enterprise JavaBeans Bench Die in Abbildung 4 3 dargestellte Klasse wird in dem nachfolgenden Abschnitt be schrieben Im Rahmen einer Erweiterung der CA sind die Enterprise JavaBeans neuer Workbenches innerhalb dieses Packages zu implementieren vgl hierzu Kapitel 9 Er weiterung des Systems Klasse CryptoBenchEJB Die Stateless Session Bean CryptoBenchEJB beinhaltet alle Operationen die f r das Verifizieren und Signieren in Verbindung mit weiteren Enterprise JavaBeans notwen dig sind Sie stellt daher ein Bindeglied zwischen der in der Dom nenklasse imple mentierten Logik und dem clusterweiten EJB Tier der FlexiTRUST CA dar Sie ist eine Spezialisierung der Klasse CryptoBench aus der Dom ne ber ihre Methode processRequest akzeptiert sie den Primary Key eines Requests und instantiiert eine Repr sentation f r die Bearbeitung innerhalb der eigenen Java Virtual Machine Nach Abschluss der Arbeitsschritte des Requests bez glich der Funk tionalit ten der CryptoBenchEJB leitet diese den Primary Key des Requests an die n chste von ihm definierte Bench weiter KAPITEL 4 SYSTEMARCHITEKTUR 38 4 2 2 Entrance Im Paket Entrance sind die Enterprise JavaBeans des Entrance zusammengefa t In Abbildung 4 4 ist die Session Bean Ent
86. ertifikat selbst den G ltigkeitszeitraum des Zertifikats abgegrenzt durch Validit tsbeginn und Validit tsende das Revokationspa wort und die Rolle die das Zertifikat im System einnimmt Tabelle crlEntries In dieser Tabelle werden der Prim rschl ssel des revozierten Zer tifikats der CRLEntry und das Ablaufdatum des revozierten Zertifikats gespeichert Tabelle privKeys In dieser Tabelle werden die Private Keys der User gespeichert Dazu werden zus tzlich der Prim rschl ssel des Zertifikats zu dem der Private Key geh rt und das Pa wort f r den Private Key abgelegt Tabelle cards Diese Tabelle h lt die Informationen zu einer Chipkarte neben dem Prim rschl ssel des zugeh rigen Zertifikats Kapitel 7 Installation des Systems In den folgenden Abschnitten wird die Installation und Konfiguration des Systems be schrieben Weiterhin werden die fiir die Kompilierung notwendigen Schritte erl utert 7 1 Systemarchitektur MW F r das Gesamtsystem ergibt sich die in Abbildung 7 1 dargestellte Struktur 7 1 1 Die Ant Build Files F r das bersetzen der Quelltexte das Packaging das Deployment und das Erstellen der Distributionsversionen existieren diverse Build Files f r Ant Sie sind entsprechend der einzelnen Komponenten der FlexiTRUST CA angelegt Das zentrale Build File befindet sich in ca src und wird durch das Skript build sh bzw unter Windows build bat ausgewertet Es bietet folgende elementare Tasks
87. es Datensatzes Update Aktualisieren eines Datensatzes Delete L schen eines Datensatzes Mindestens die ersten drei F lle m ssen f r neue Requests implementiert werden Listing 9 8 ejbs request RequestDAO package de tud cdc flexiTrust ca ejbs request Imports public class RequestDAO extends DataAccessObject implements WorkerDAO J This constant describes the SQL error code for a duplicate primary key ay private static final int ERR_DUPLICATE_KEY 1062 JAR Constructor throws NamingException If the lookup failed 3 public RequestDAO throws NamingException super JB RAR a e e a e I Ak E e k k e k Finder Methods 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 Eu 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 88 89 90 91 92 93 94 95 96 97 KAPITEL 9 ERWEITERUNG DES SYSTEMS 107 EA EE JB RRR AA III kk Request Methods EA ES Zi Removes a Request param con Connection param workerPK The primary key of the request param worker The Request throws SQLException Database access error public void deleteWorker Connection con HX XX HH HH af WorkerPK workerPK Worker worker throws SQLException String deleteStatement delete from requests where requestPK Pre
88. es ist zur Laufzeit m glich Die Erzeugung einer Distributionsversion schlie t die Unittests nicht mit ein Kapitel 8 Betrieb des Systems Fiir die Uberwachung des Systems werden umfangreiche Log Files erzeugt Einzelne Komponenten bieten eine Laufzeit berwachung ber das JMX Frontend 8 1 Datenbank Server LF MySQL erzeugt im laufenden Betrieb eine Datei lt hostname gt err Die Dateiendung l t zwar vermuten da hier nur Fehler protokolliert werden die Datei wird aber f r alle von MySQL erzeugten Meldungen verwendet 8 2 Application Server MW Zur Laufzeit der FlexiTRUST CA werden im Verzeichnis SJBOSS_HOME server flexiTRUST log Log Files der einzelnen Komponenten erzeugt Dies sind im Einzelnen e boot log Meldungen w hrend des Systemstarts e cluster log Meldungen des Cluster Systems e flexitrust log Meldungen der FlexiTRUST CA e server log Meldungen des Application Servers zur Laufzeit 79 KAPITEL 8 BETRIEB DES SYSTEMS 80 8 3 Pkcs7Server Der Pkcs7Server besteht aus zwei MBeans die Services fiir die FlexiTRUST CA bereit stellen Dies ist zum einen der Pkcs7Entrance der die signierten Requests aus dem Ver zeichnis p7In entnimmt verifiziert und an das EJB Tier weitergibt Zum anderen der Pkcs7Exit der die bearbeiteten Requests entgegennimmt signiert und in das p70ut Verzeichnis schreibt Beide Services k nnen entweder ber die Konfigurationsdatei ca properties oder zur Laufzeit ber das JMX
89. esloale A plor ajes19 soyqle MUI py ajesidqlo A4 proa a ea19 soJafe Ad anss sjesiogle Bey ploA a ea19 s04q 9 Adajeomao sjesloale A4 pioa peoTqfe plon e1ojgafe ploa eaoweyale piongjenssegale ploa ayeanoyale PIOA REUOH NUFIESUN plOAROJLOOAWUTes ploa peoTgla A 310 Sq a ploa anculayqla pioA a eAisse glas Pron ajenoyalo ploaxejuoD een DEET ploA peoTgle ploa aoygqla Plon snowsyqle ploa ayeaisseqa ploa ejenyoyale PIOA ROWLOH NUFIOSUN Do xeu p yus pioa peoqqle proa aloJsqfe ploa an0uayqle ploa ajeAsseyqle proa ajennoydle ploaxajuoD Au SUN PIOA XEJUOY NUFISS uea oog pIgst oOvalesn ovalesn Adiesh Mdlesn peg Mun ueajoog AUICsI Ovduiupy Ovquiupe AdulupyAdulupe He HUE 9 ueajoog ALIsI Ovalenss Ovdienss Yalonss Ydlonssi Trauer uz eg U eioog AUIGSI OYALI OYIGE deele deeler HERE NASEN YIS SOS BOES OPO pr ap eralssn ueeghnuz Jos yos UleWOP EI gsn xa opo pny ap En Mouluipy 19038 SO BI SN IX po pn ap araulupy ueeghnuz uupy yogs UIEWOP ESP US opo DP ep Es Me Jangsy 49078 SGE 80 JSMif Kaif DPI pn ap gra nss ueaghquz J9NSS 90 S U ewop ed snx opo pny SP bs Mo OOOO YOO S GO BD Aen Lett OPI DO ap graa ueegAyquz eepo Yoo s ulewop ed jsnd Dal OPO pny ep En JavaBeans Stock 1se Enterpr Abbildung 4 7 KAPITEL 4 SYSTEMARCHITEKTUR 44 Klasse Cer
90. esttyp eine eigene Tabelle Tabelle issuerRequest Diese Tabelle enth lt den Prim rschl ssel des Requests als Fremdschl ssel zur korrekten Zuordnung zu den Daten in der Tabelle requests Zu s tzlich werden hier der Name der Private Key und das Zertifikat des Issuers das Pa wort zum Private Key der Signaturalgorithmus des Issuers das Pa wort zum Re vozieren des Zertifikats der verwendete Security Provider und die CertificateChain gespeichert Tabelle adminRequest Diese Tabelle enth lt den Prim rschl ssel des Requests als Fremdschl ssel zur korrekten Zuordnung zu den Daten in der Tabelle requests Zu s tzlich werden hier der Name der Private Key und das Zertifikat des Administrators das Pa wort zum Private Key der Signaturalgorithmus des Administrators das Pa wort zum Revozieren des Zertifikats und der verwendete Security Provider gespeichert Tabelle x509CrtRequests Diese Tabelle enth lt den Prim rschl ssel des Requests als Fremdschl ssel zur korrekten Zuordnung zu den Daten in der Tabelle requests Zus tzlich wird hier das Zertifikat das Pa wort zum Revozieren des Zertifikats der Private Key des Users und das Pa wort zum Private Key gespeichert Tabelle x509CrlRequests Diese Tabelle enth lt den Prim rschl ssel des Requests als Fremdschl ssel zur korrekten Zuordnung zu den Daten in der Tabelle requests Zus tzlich wird der Name des Issuers der CRLEntry und das Revokationspa wort des zu revozierenden
91. ezifizierte Bench verschoben Dieses Verschieben ist durch die Weitergabe des Primary Keys des Requests realisiert Zeile 191 ff Weiteren Businessmethoden delegieren Aufrufe des Requests an den Pkcs11Server Die Beanklasse ist eine Spezialisierung der Gesch ftsklasse 9 3 2 Die Klasse Pkcs11Bench Die Klasse domain bench Pkcs11Bench stellt die Superklasse der Pkcs11BenchEJB dar und implementiert die von der Bench dem Request zur Verfiigung zu stellenden Funktionalit ten KAPITEL 9 ERWEITERUNG DES SYSTEMS 96 Listing 9 2 domain bench Pkcs11Bench package de tud cdc flexiTrust ca domain bench import jws domain bench Bench JA ds public abstract class PkcsllBench implements Bench Reads an object from the card return The read object ay public abstract Object readData J Write an object to the card param obj The object to be written to card EZ public abstract void writeData Object obj JAR Do some calculations on an object param obj The object to be calculated return The modified object public abstract Object calculate Object obj J A method usable by the worker aA public void doSomething Write some code here Beispiele fiir die dem Request zur Verfiigung gestellten Funktionen sind in den Zeilen 14 20 27 und 32 bzw aus der Klasse domain bench CryptoBench ersichtlich 9 3 3 Die Klasse Equipment Die Klasse domain bench Equipment beinh
92. geben e insert users private key Wird ein neues Zertifikat ausgestellt kann der zu ihm passende Private Key gespeichert werden Zugriff auf diesen Private Key darf nur erfolgen wenn das richtige Pa wort des Schl ssels angegeben wurde e fetch users data Dieser Anwendungsfall tritt nur dann auf wenn getestet werden soll ob die Einbringung eines Users erfolgreich war e fetch users certificates Wenn nicht bekannt ist welches der Zertifikate eines Users gebraucht wird k nnen alle Zertifikate eines Users vom Stock ange fordert werden um anschlie end das entsprechende Zertifikat auszuw hlen Anwendungsf lle Bereich Zertifikate e insert new certificate Jedes von der CA erstellte Zertifikat mu gespei chert werden Hierbei wird berpr ft ob das Zertifikat anhand seiner Seriennum mer eindeutig identifiziert werden kann Desweiteren mu sichergestellt sein da der Antragsteller im System bekannt ist Zus tzlich wird berpr ft ob der Besitzer des Zertifikats im System bekannt ist oder ob er in die Datenbank ein gef gt werden mu e update revocation list Verliert ein Zertifikat seine G ltigkeit mu dies der CA respektive dem Stock angezeigt werden Bei einem solchen Revokati onsantrag wird berpr ft ob das zur ckzuziehende Zertifikat im Datenbestand vorhanden ist und ob es nicht bereits zur ckgezogen wurde e fetch actual crlentries Es mu m glich sein eine Liste mit den aktuellen Revokatio
93. geht in den meisten F llen ein Lookup auf deren Home Interface innerhalb eines JNDI Baumes voraus Der Client hat im An schluss daran die in dem Interface spezifizierten M glichkeiten an Instanzen dieser Bean zu gelangen Im geclusterten Fall ist ein einfacher INDI jedoch nicht ausreichend da dieser keine Kenntnis von den Eintr gen auf den anderen Nodes hat Daher existiert hier ein clusterweit replizierter INDI Context den die Clients f r die Lookups verwen den und Objekte an ihn binden k nnen Dieser node bergreifende JNDI nennt sich im Fall des in diesem Projekt verwendeten Application Servers High Availability INDI HA INDD SLJGO2 Der Pkcs7Server stellt Services f r Festplattenzugriff zur Verf gung Die dazugeh rigen Objekte sind nicht serialisierbar Daher k nnen sie nicht an den HA JNDI ge bunden werden wodurch sie f r andere Nodes im Cluster nicht zugreifbar sind Um dieses Problem zu umgehen existiert die Stateless Session Bean Pkcs7SessionEJB die als Wrapper f r das EJB Tier der FlexiTRUST CA fungiert Diese Session Bean bindet sich an den globalen HA JNDI an und stellt somit das Bindeglied zwischen dem lokalen JNDI in den diese Objekte eingebunden werden und HA JNDI dar KAPITEL 4 SYSTEMARCHITEKTUR 57 4 5 3 EJBServiceLocator Enterprise JavaBeans fiihren h ufig Lookups auf von ihnen ben tigte Service Objekte beispielsweise Home oder Remote Interfaces ber den HA JNDI aus Bei jedem Lookup wird ein Initial
94. her besitzen sie einen eigenen Context und es sind somit nur reine Black Box Tests m glich Unittests in Verbindung mit JUnitEE erm glichen es nun die Testf lle innerhalb des Application Servers ablaufen zu lassen Die Testf lle werden zasammen mit einem ein fachen Web Front End in ein Web ARchive WAR File eingepackt dynamisch durch den Server geladen und sind somit jederzeit ber einen beliebigen Browser ausf hrbar Der gr te Vorteil jedoch ist da sie sich auch im gleichen Context befinden wodurch die Interaktion der Beans untereinander testbar wird F r die hier implementierte FlexiTRUST CA wurden Testf lle geschrieben die das gesamte Leistungsspektrum der bislang umgesetzten Funktionen testen k nnen Diese Tests untergliedern sich in die Hauptbereiche Request und CaStock wobei die Workbenches ebenfalls mitgetestet werden Der Zugriff auf die Unittests erfolgt mit einem Browser ber die Adresse http localhost 8080 requesttests bzw http localhost 8080 stocktests Die folgende Tabelle gibt Aufschlu ber die bislang implementierten Testf lle Weite re k nnen in dem Verzeichnis SFLEXITRUST_HOME ca tst und dessen Unterverzeich nissen implementiert werden KAPITEL 4 SYSTEMARCHITEKTUR 59 Testname Beschreibung TestAdminRequest Erzeugt einen neuen Administrator TestCertChain Fordert die Zertifikatskette eines Zertifikats an TestInitKeyRequest Erzeugt einen initialen Issuer und einen initialen Adm
95. hergeht KAPITEL 7 INSTALLATION DES SYSTEMS 69 Ergebnismatrix Die folgende Matrix gibt Aufschluf dariiber welche Komponenten von den oben er w hnten Targets erzeugt werden 8 A N St O vc 40 oO oO p 4 A A Al E H SS n nD p Q O z 10 Ss C Ho H D H H Y l N u E oO oO gt gt S N oH O O o A n ai 4 6 l 4 4 H O a a o Q a a o H g Q Q A A De oO o 3 5 BD Mm o o x od o 0 T 3 a DB O JBoss DI D Server Dist Gi CA Dist Interfaces O Q CA EJBs 0 CA Library y Pkcs11Server O Pkcs7Server D Q Di Unittests O JavaDoc CheckStyle Start JBoss 7 2 Datenbank Server Die dieser Diplomarbeit vorausgegangene Studienarbeit Fel02 gab die Empfehlung fiir MySQL als zu verwendendes Datenbank Management System Daher kommt fiir die persistente Speicherung der anfallenden Daten MySQL Max ab Version 3 23 52 Com02a zum Einsatz Da die Tabellen der Standardversion von MySQL keine Trans aktionalitat liefern ist die Max Version zwingend vorgegeben um die Unterstiitzung von InnoDB Tabellen welche Transaktionalit t liefern zu gew hrleisten MySQL bietet die M glichkeit eine aktive Datenbank im folgenden Master genannt auf anderen Datenbankservern im folgenden Replikanten genannt zu replizieren Das bedeutet da ein oder mehrere MySQL Server die als Replikanten konfiguri
96. ht und ber cksichtigt bereits Implemen tierungsaspekte vgl hierzu Win02 Gesch ftsklassen der Domain Bench Im Paket Bench sind die zentralen Klassen der Workbenches mit den notwendigen Funktionalit ten zur Requestbearbeitung zusammengefa t Equipment Bench CRYPTOBENCH int Pkcs11Bench ENTRANCE int EXIT int PKCS11BENCH int PKCS7EXIT int readData Object writeData void calculate Object Abbildung 9 5 Gesch ftsklassen der Domain Bench Die in Abbildung 9 5 dargestellten Klassen werden in dem nachfolgenden Abschnitten beschrieben Klasse Pkcs11Bench Die Klasse Pkcs11Bench stellt Funktionalit ten f r die Bear beitung von SmartCards wie Lesen und Schreiben der Karten zur Verf gung Weiter hin werden Methoden f r die Durchf hrung von Berechnungen auf den SmartCards bereitgestellt Diese Funktionalit ten k nnen direkt von den Requests in Anspruch ge nommen werden Klasse Equipment Die Klasse Equipment beinhaltet eine Auflistung aller in der CA implementierten Benches Im Vergleich zu Abschnitt 3 6 Gesch ftsklassen der Domain Bench ist sie um die Pkcs11Bench erweitert Gesch ftsklassen der Domain Request Im Paket Request sind die zentralen Klassen der Requests zusammengefa t Die in Abbildung 9 6 dargestellten Klassen werden in dem nachfolgenden Abschnitten beschrieben KAPITEL 9 ERWEITERUNG DES SYSTEMS 87 EE GenericWorker X509P11Request Worker Re
97. i nistrator TestInsertUser Erzeugt einen neuen User TestIssuerRequest Erzeugt einen neuen Issuer TestRequest Test der Basisfunktionalit ten der Request Bean TestUserCertificates Fordert alle Zertifikate eines gegebenen Users an TestX509CrlRequest Erzeugt einen X509v3 Certificate Revocation Request TestX509CrtRequest Erzeugt einen X509v3 Certification Request 4 5 6 XDoclet XDoclet ist ein Java Dienstprogramm das die Verwaltung der Metadaten von Kompo nenten mit Hilfe von JavaDoc hnlichen Kommentaren in einer gemeinsamen Quellda tei erm glicht und die Entwicklung von J2EE Komponenten wie Enterprise JavaBeans MBeans u a auf diese Weise deutlich vereinfacht Am Beispiel einer Enterprise JavaBean sei dies verdeutlicht Zu einer EJB geh ren neben der EJB Implementierung Interfaces welche die Zugriffsm glichkeiten auf die Bean beschreiben Dieses k nnen Home Remote LocalHome und Local Interfaces sein In einem Remote Interface beispielsweise werden die Signaturen aller aufruf baren Methoden der Bean aufgez hlt Bei bis zu vier Interfaces entsteht dadurch viel redundanter Code Neben den Interfaces werden noch Deployment Deskriptoren ben tigt die die Eigenschaften der Beans und ihre Anforderungen an die Laufzeitumgebung beschreiben Dies umfasst u a die Spezifikation von Abh ngigkeiten zwischen mit gelieferten und noch fehlenden Komponenten sowie zu den ben tigten Services und Ressourcen auf der noch unbekannten Zielpl
98. inbringung des Antrags erfolgt analog zu Abschnitt 3 2 1 Ausstellung eines X509v3 Zertifikats Revokation Zun chst wird berpr ft ob das zu revozierende Zertifikat in der CA existiert Wei terhin wird das bergebene Pa wort mit dem gespeicherten Pa wort des Zertifikats verglichen und die Revokation zur ckgewiesen wenn sie nicht bereinstimmen Ist das Pa wort korrekt wird berpr ft ob das Zertifikat bereits zur ckgezogen wur de Ist dies der Fall wird die Revokation selbst abgebrochen der Antrag aber weiter verarbeitet um die Revokationsliste zu liefern Ist das Zertifikat noch g ltig wird der Revokationseintrag mit dem Verfallsdatum des Zertifikats persistent gespeichert und mit dem zur ckgezogenen Zertifikat verkn pft Revokationsliste Anschlie end wird die Liste von Revokationseintr gen erzeugt Diese Liste beinhaltet unter anderem den Issuer des Revokationsantrags das Erstellungsdatum und die Re vokationseintr ge In diese Liste nimmt die FlexiTRUST CA nur Revokationseintr ge auf wenn die Verfallsdaten der zur ckgezogenen Zertifikate noch nicht berschritten sind Es kann allerdings auch eine vollst ndige Liste mit allen Revokationseintr gen erstellt werden Anschliessend wird der Antrag mit der erstellten Revokationsliste analog zu Abschnitt 3 2 1 Ausstellung eines X509v3 Zertifikats an die IS bergeben 3 2 3 Einbringen eines Issuers Die FlexiTRUST CA unterst tzt mehrere Issuer
99. inhaltet eine Auflistung aller in der CA implementierten Request typen Die in ihr definierten Konstanten werden von den Requests und Workbenches zur Identifizierung verwendet 3 5 5 Geschaftsklassen der Domain Stock Im Paket Stock sind die zentralen Klassen des Stock mit den notwendigen Funktiona lit ten zur Persistenzverwaltung zusammengefa t Die in Abbildung 3 10 dargestellten Klassen werden in den nachfolgenden Abschnitten beschrieben KAPITEL 3 DIE FLEXITRUST CA 32 Admin Issuer El Certificate adminDN String issuerDN String issuerPK IssuerPK adminPrivKey PrivateKey issuerPrivKey PrivateKey userPK UserPK certificate byte certificate bytel validFrom long certSerial BigInteger certSerial Biginteger validUntil long issuerDN String revocPass String workerPK WorkerPK validFrom long keyPass String certificate byte validUntil long sigAlg String revocPass String revocPass String secProv String certRole int keyPass String certChain Certificate sigAlg String updateBeanData void secProv String Hissuer loadResultSetFragment int lssuer storePreparedStatementFragment int Admin updateBeanData void Admin getBeanRepresentation lssuerData beanRepresentation CertificateData updateBeanData void getlssuerBaseData lssuerBaseData beanBaseRepresentation CertificateBaseData getBeanRepresentation AdminData loadResultSetFragment int certific
100. ird er von dieser an die von ihm spezifizierte n chste Bench weitergegeben e sign binary message sign data in signed data sign certificate und KAPITEL 3 DIE FLEXITRUST CA 22 sign certificate revocation list Die CryptoBench stellt den Requests Methoden zur Signierung unterschiedlicher Objekte zur Verfiigung e verify binary message verify data in signed data verify certificate verify certificate revocation list Die CryptoBench stellt den Requests Methoden zur Verifikation unterschiedlicher Objekte zur Verfiigung e update crl Bietet die M glichkeit Revokationslisten zu aktualisieren 3 4 2 Anwendungsf lle der Domain Entrance Die nachfolgende Abbildung 3 2 zeigt alle Anwendungsf lle des Bereichs Entrance und ihre Beziehungen untereinander enter request Entrance GC process request gt H ei Se lt lt include gt gt 7 i gt lt lt include gt gt ee gt l Ss s lt lt include gt gt H ge H et A rere lt process admin request gt G process issuer request gt e y 7 N Soest KR delegate to bench S 7 3 7 K fy d K l N E lt sinclude gt gt lt lt include gt gt 5 a xe s lt lt include gt gt i d l l N fe y 12 delegate to exit Abbildung 3 2 Anwendungsf lle der Domain Entrance e enter request Soll ein neuer Request von der CA verarbeitet werden wird er initiiert dur
101. it Im Paket Exit sind die zentralen Klassen des Exit zusammengefasst Bench Exit Abbildung 3 8 Gesch ftsklassen der Domain Exit Die in Abbildung 3 3 dargestellte Klasse wird in dem nachfolgenden Abschnitt be schrieben Klasse Exit Der Exit stellt innerhalb des EJB Tiers den Ausgang dar Alle Requests werden vom ihm entgegengenommen und an den MBean Service Pkcs7Exit bergeben vgl Ab schnitt 4 4 2 Architektur Pkcs7Server KAPITEL 3 DIE FLEXITRUST CA 30 3 5 4 Gesch ftsklassen der Domain Request Im Paket Request sind die zentralen Klassen der Requests zusammengefasst mu GenericWorker oa GenericWorker a GenericWorker AdminRequest IssuerRequest X509CrtRequest request Request request Request cert byte adminDN String adminPrivKey PrivateKey certificate bytel certSerial Biginteger issuerDN String validFrom long validUntil long revocPass String keyPass String sigAlg String secProv String issuerDN String issuerPrivKey PrivateKey certificate byte certSerial BigInteger revocPass String keyPass String sigAlg String secProv String certChain Certificate lssuerRequest AdminRequest AdminRequest AdminRequest updateBeanData void loadResultSetFragment int initWork void work void step1_VerifySig void step2_InsertAdmin void storePreparedStatementFragment int IssuerRequest lssuerRequest updateBeanData void
102. izableFactory import org jboss system ServiceMBeanSupport Ak jmx mbean e description PkcsllCardAccess Service x name service Pkcs7ExitService A extends org jboss system ServiceMBean RER public class PkcsliCardAccess extends ServiceMBeanSupport implements PkcsllCardAccessMBean J The JndiName for this MBean Z i public static final String JNDI_NAME Java PkcsllCardAccessService J A property private long property 1 JA Starts this MBean service throws NamingException If the lookup failed EL public void startService throws NamingException Add security provider Get properties from System Properties Service Instantiate a thread if needed and start it InitialContext ctx new InitialContext bind myself into JNDI at java Pkcsl1CardAccessService NonSerializableFactory bind JNDI_NAME this StringRefAddr addr new StringRefAddr nns JNDI_NAME Reference ref new Reference this getClass getName addr NonSerializableFactory class getName null ctx bind JNDI_NAME ref Stops this MBean service throws NamingException If the lookup failed KAPITEL 9 ERWEITERUNG DES SYSTEMS 115 62 throws NameNotFoundException If the jndi name was not found 63 RE 64 public void stopService 65 throws NamingException NameNotFoundException 66 67 InitialContext ctx new InitialContext 68 69 ctx unbind JNDI_NAME 70 N
103. kcs7Reader Pkes7Entrance p7InDir File JNDI_NAME String p7ErrDir File pkcs7Reader Pkcs7Reader startService void stopService void threadPoolSize int p7InDirName String p7ErrDirName String filePollinginterval long entranceHome EntranceHome requestHome RequestHome caStockHome CaStockHome finish boolean threadPool ThreadPool run void quit void setP7InDir void setP7ErrDir void setContext void unsetContext void loadWorkers void verify void startWorkers void handleExceptions void classloaderDummy void Runnable Pkes7Sender entranceHome EntranceHome workerData WorkerData pkcs7Reader Pkcs7Reader threadPoolSize int p7InDirName String p7ErrDirName String filePollingInterval long inputFile File failed WorkerPK ly ThreadPool idleWorkers ObjectFIFO workerList ThreadPoolWorker ThreadPool execute void stopRequestidleWorkers void stopRequestAllWorkers void iy ThreadPoolWorker ObjectFIFO Pkcs7Sender run void idleWorkers ObjectFIFO queue Object workerlD int head int handoffBox ObjectFIFO tail int internalThread Thread noStopRequested boolean ObjectFIFO add void ThreadPoolWorker addEach void zeroNextWorkerlD void remove Object process void removeAll Object runWork void removeAtLeastOne Object runit void waitUntilEmpty boolean stopR
104. lass Types Type admin request El public static final int ADMIN 1 Ak Type issuer request E public static final int ISSUER 2 J Type x509 crt request wa public static final int X509CRT 3 Ak Type x509 crl request wa public static final int X509CRL 4 Type x509 p11 request 7 public static final int X509P11 I a Die Zeile 28 definiert die Konstante des X509P1 1Requests 95 PKCS 11 MBean Service Beteiligte Komponenten Klasse Beschreibung PkcsllCardAccess MBean Klasse des CardAccess PkcsllSessionEJB Beanklasse Pkcs11SessionEJB Die nachfolgenden Abschnitte beschreiben die beteiligten Komponenten zur Realisie rung des Hardwarezugriffs von Pkcs11 und ihre Aufgaben entsprechend ihrer Zuord nung zu den verschiedenen Schichten der J2EE Architektur KAPITEL 9 ERWEITERUNG DES SYSTEMS 114 9 5 1 Die Klasse Pkcs11CardAccess Die Klasse pkcsl1server cardaccess Pkcs11CardAccess soll einen Service f r den Zugriff auf die SmartCard Hardware zur Verfiigung stellen Sie wird analog zu den Services des Pkcs7Service als MBean implementiert Listing 9 10 pkcs1 1 server cardaccess Pkcs11CardAccess package de tud cdc flexiTrust ca pkcsilserver cardaccess import javax naming InitialContext import javax naming NamingException import javax naming NameNotFoundException import javax naming Reference import javax naming StringRefAddr import org jboss naming NonSerial
105. latte das Package mit einem oder mehreren Requests Anwendungsf lle der Domain Session Die nachfolgende Abbildung 4 12 zeigt alle Anwendungsf lle der Komponente Ses sion des Pkcs7Servers und ihre Beziehungen untereinander a LC accept request gt Pkcs7Session delegate to mbean service Abbildung 4 12 Anwendungsf lle des Pkcs7Server Session Sie beschreiben vom System durchzuf hrende Anwendungsf lle bez glich der Weiter leitung der Requests von dem EJB Tier zu der Komponente Exit e accept request Die Pkcs7Session akzeptiert den Primary Key PK eines Requests der innerhalb der CA abgearbeitet worden ist e delegate to mbean service PKs werden an die Komponente Exit weiter geleitet 4 4 2 Architektur Pkcs7Server Der Pkcs7Server implementiert den Dateizugriff und stellt diesen der FlexiTRUST CA als Service zur Verf gung Derartige Services werden in J2EE als Managed Beans MBeans realisiert SJGO2a Er untergliedert sich in die Komponenten Entrance Exit und Session welche im folgenden beschrieben werden KAPITEL 4 SYSTEMARCHITEKTUR 52 Entrance Im Paket Entrance sind die MBean Service Klassen des Pkcs7Ent rance und die da zugeh rigen Hilfsklassen zusammengefasst In Abbildung 4 13 sind die MBean Pkcs7 Entrance der Pkcs7Reader und die Klassen des ThreadPools dargestellt und in den nachfolgenden Abschnitten beschrieben oo ServiceMBeanSupport ma Thread Pkes7EntranceMBean P
106. le abgeleitet und deren Strukturen im System dokumentiert Diese Anwendungsf lle sind nach der in Abschnitt 3 3 Abbildung der CA auf den JWorkshop ermittelten Struktur gegliedert und ber cksichtigen bereits Implementierungsaspekte Die Darstellung erfolgt in UML Notation 3 4 1 Anwendungsfalle der Domain Bench Die nachfolgende Abbildung 3 1 zeigt alle Anwendungsf lle des Bereichs Bench und ihre Beziehungen untereinander process request sign binary message gt sign data in signed data bw E Sr A a se or lt lt include gt gt Ss a r CC sign certificate gt Se A at Sen Ss 7 a his pr sept oe delegate to exit Lem A g sign certificate revocation list gt 7 CryptoBench a Se w wor ig a ee eg de gt S verify certificate A pee Ke Deeg See ot Es verify binary message gt Mr ms s K Bag T BW a des oe Si A Sy update crl verify certificate revocation list verify data in signed data Abbildung 3 1 Anwendungsf lle der Domain Bench e process request Im Anwendungsfall findet die Abarbeitung eines oder meh rerer Arbeitsschritte des Requests auf der Bench statt Hier wird eine lokale In stanz des Requests erzeugt und dessen Methode work aufgerufen Die Bench stellt ihm hierbei ihre spezifischen Funktionalit ten zur Verf gung delegate to exit Nachdem ein Request alle auf der Bench m glichen und durchzuf hrende Arbeitsschritte abgeschlossen hat w
107. lichkeit des Load Balancings und Fail Over genommen wird Dem gegen ber steht der Per formancegewinn durch lokale Aufrufe innerhalb der selben JVM denn Remote Calls sind aufgrund der Stubs Skeletons Netzwerkzugriffe dem Marshalling Demarshal ling und dem EJB Object Interceptor sehr teuer ER02a Daher sind in der hier vorlie genden Implementierung Workbenches als Session Beans implementiert und fungieren als Wrapper f r die Entity Beans RequestEJB IssuerEJB etc vgl Abbildung 4 16 Damit erfolgt Load Balancing und Fail Over ber diese Session Beans KAPITEL 4 SYSTEMARCHITEKTUR 56 initial r CryptoBenchElB IN Client 1 processRequest Workerpk void e V 1 1 request findByPrimaryKey workerPK de tud cdc flexiTru d ty 1 2 1 work this void ty 13 1 create de tud cdcflexiTrust ca interfaces exit Exit gt 13 2 processRequest workerPK void V 13 3 nextBench int throw ex Abbildung 4 16 Sequenzdiagramm processRequest 4 5 2 HA JNDI und die Pkcs7Server Session In dem Abschnitt 4 4 2 ber die MBean Services wurde die Session Bean Pkcs7Ses sionEJB beschrieben die einen sehr geringen Funktionsumfang aufweist Warum die se jedoch notwendig ist soll hier erl utert werden Als Grundlage hierf r wird zun chst erkl rt wie das Java Naming und Directory Interface JNDI in einem Cluster arbei tet Dem Zugriff auf eine Enterprise JavaBean
108. llCardAccess PkcsllCardAccess ic lookup jJava PkcsllCardAccessService catch NamingException ex throw new EJBException ex 103 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 KAPITEL 9 ERWEITERUNG DES SYSTEMS 118 JAR RRA RARA RRA ARK ARK RR RARA RR RRA RR RR ARA RRA RARA RARA Business Methods EA JA Reads an object from the card return The read object ejb interface method SN view type remote SE public Object readData Object obj null obj pkcsl1lCardAccess readData j return obj J Write an object to the card param obj The object to be written to card ejb interface method view type remote af public void writeData Object obj pkcesllCardAccess writeData obj van Do some calculations on an object param obj The object to be calculated return The modified object ejb interface method view type remote ES Ra public Object calculate Object obj obj pkcsl1lCardAccess calculate obj return obj 9 6 Buildfiles F r die in den letzen Abschnitten beschriebenen Erweiterungen der FlexiTRUST CA m ssen neue Buildfiles f r Ant geschrieben bzw existierende angepa t werden Neue Buildfiles werden f r die Packages pkcs11server cardaccess und pkcs11
109. lle des Pkcs7Server Session o 51 MBean Service Pkcs7Entrance o a 32 MBean Service Pkcs7EXit Comm 54 Enterprise JavaBeans Pkcs7Session o o 55 Sequenzdiagramm processRequest 56 Datenmodell caco a o EEN ee E 63 Systemarchitektur ee 67 MBean Detail Pkes7Entrance o a 80 MBean Detail Pkcs7Exit e 81 Anwendungsf lle der Domain Bench 83 Anwendungsf lle der Domain Request 84 Anwendungsf lle des Pkcsl1Server CardAccess 84 Anwendungsf lle des Pkcs11Server Session 85 Gesch ftsklassen der Domain Bench 86 Gesch ftsklassen der Domain Request 87 Enterprise JavaBeans Bench o o 88 MBean Service Pkesl1CardAccess ooo o 89 Enterprise JavaBeans Pkes11Session oo 90 Listings 7 1 antproperties es o o Hmm 74 TZ Ca properties lt gk eee IER ar NEE Br AE 73 9 1 domain bench Pkcsl1BenchEJB 91 9 2 domain bench PkeslIBench o o 96 9 3 domain bench Equipment o a 96 9 4 ejbs entrance EntranceEJB o o 97 9 5 domain request XS09P11Request o o 100 9 6 domain request data X309P11RequestData 103 9 7 domain request Request o o e e 104 9 8 ejbs request RequestDAO nn 106 9 9 domain req
110. long getProperty return property In den Zeilen 13 und ff werden analog zu den bereits besprochenen XDoclet Tags der Enterprise JavaBeans entsprechende JMX Tags definiert Die Methode startService Zeile 37 ff die vom Application Server beim Systemstart aufgerufen wird ist fiir die initiale Konfiguration des Services das Starten eventuell ben tigter Threads und das Einbinden in den JNDI Namespace verantwortlich Das Gegenst ck dazu stellt die Methode stopService Zeile 64 ff dar F r Attribute die zur Laufzeit des Services ber die JMX Schnittstelle konfigurierbar sein sollen sind get set Methoden dem Beispiel im Listing entsprechend Zeilen 124 ff vorzusehen 9 5 2 Die Klasse Pkcs11SessionEJB Die Klasse pkcs1lserver session Pkcs11Session stellt analog zur Klasse Pkcs7 SessionEJB die Schnittstelle zwischen dem Service und dem EJB Tier der Flexi TRUST CA dar Listing 9 11 pkcs1 1server session Pkcs1 1SessionEJB package de tud cdc flexiTrust ca pkcsllserver session import javax ejb CreateException import javax ejb EJBException import javax ejb SessionBean import javax ejb SessionContext import javax naming NamingException import javax naming InitialContext import de tud cdc flexiTrust ca pkcsllserver cardaccess PkcsllCardAccess xk Geib bean display name Pkcs11SessionEJB name ejb Pkcs11SessionEJB S jndi name ejb CDC FlexiTRUST Pkcs11SessionEJB type Stateless transaction
111. m bei Ausfall des Masters den Replikanten unmittelbar als zu verwendenden Daten bank Server anschliessen zu k nnen mu der Replikant daf r konfiguriert werden Zur Zeit ist der Replikant nur f r Replizierungsaufgaben konfiguriert da nicht gen gend Zeit blieb ad quate Tests durchzuf hren Grunds tzlich sollte es hier ausreichen Binary Logging zu aktivieren und den instandgesetzten bisherigen Master als neuen Replikanten ber nderungen an dessen Konfigurationsdatei an den neuen Master an zuschliessen 119 MW LF KAPITEL 10 ABSCHLIESSENDE BEMERKUNGEN 120 Momentan ist es leider noch nicht m glich einen aktuellen Snapshot des Masters zu verwenden da der Replikant beim Start versuchen wiirde die bereits erstellten Tabellen erneut zu erstellen Da beim Start mit der initialen Datenbank s mtliche Daten ber das Binary Log aktualisiert werden ist dies nicht weiter von Bedeutung eine andere L sung w re jedoch w nschenswert Eine andere M glichkeit stellt Two Way Replication dar Das bedeutet den Replikan ten so zu konfigurieren da er Binary Logs erstellt die jede nderung au er den vom Master erhaltenen nderungen ber dessen Binary Log enthalten Ebenso w r de der Master so konfiguriert sich ber die Binary Logs des Replikanten zu aktua lisieren Dadurch w re es m glich bei Ausfall des Masters durch nderung der Da tei SJBOSS_HOME server flexiTRUST deploy mysql service xml JBoss auf den Replikanten
112. n Hilfsklassen zusammengefa t In Abbildung 4 6 ist die Entity Bean RequestEJB ihr KAPITEL 4 SYSTEMARCHITEKTUR 40 Data Access Object DAO RequestDAO und die Primary Key Klasse RequestPK dar gestellt Fiir n here Informationen zu dem Designpattern Data Access Object sei auf Inc02g und Win02 verwiesen Es de tud cdc flexiTrust ca domain request Request WorkerPK DataAccessObject EntityBean Serializable WorkerDAO WorkerEJB RequestPK RequestDAO RequestEJB ERR_DUPLICATE_KEY int RequestPK RequestPK RequestPK ctx EntityContext workerPK WorkerPK requestDAO RequestDAO isDirty boolean RequestDAO findByPrimaryKey WorkerPK deleteWorker void tinsertWorker void selectWorker void setEntityContext void updateWorker void unsetEntityContext void setFailed void ejbActivate void deletex509CrtRequest void ejbPassivate void ejbRemove void ejbStore void ejbLoad void insertX509CrtRequest void updateX509CrtRequest void deleteX509CrlRequest void insertX509CrlRequest void updateX509CrIRequest void insertlssuerRequest void updatelssuerRequest void insertAdminRequest void updateAdminRequest void TT ejbCreate WorkerPK ejbPostCreate void Al ejbFindByPrimaryKey WorkerPK isModified boolean setModified void getBeanRepresentation WorkerData nextBench int getWorkerPK WorkerPK initWork void work void leave void setFailed void
113. n und Ausgang von Requests vorgesehen Dieses wird fiir PKCS 7 Requests durch den im folgenden beschriebenen Pkcs7Server durchgefiihrt Die dazugeh rigen Anwendungsf lle werden im n chsten Abschnitt beschrieben 4 4 1 Anwendungsf lle des Pkcs7Server Der Pkcs7Server untergliedert sich in die drei Komponenten Entrance Exit und Session deren Anwendungsf lle in den folgenden Abschnitten beschrieben werden Anwendungsf lle der Domain Entrance Die nachfolgende Abbildung 4 10 zeigt alle Anwendungsf lle der Komponente En trance des Pkcs7Servers und ihre Beziehungen untereinander create pkes7reader Pkcs7Entrance amp configure pkes7reader gt lt create pkcs7sender pool gt lt verify request y read file gt u Po ne er at ye Sg e ee a a enter request E P Pkcs7Reader DN Pkcs7Sender dl Abbildung 4 10 Anwendungsf lle des Pkcs7Server Entrance KAPITEL 4 SYSTEMARCHITEKTUR 49 Diese beschreiben die vom System durchzuf hrenden Anwendungsfalle f r das Einle sen und die Verifikation der signierten Request Packages Weiterhin initiiert der Pkcs7 Server Entrance die Bearbeitung der Requests im EJB Tier der FlexiTRUST CA Es k nnen die drei Hauptkomponenten Pkcs7Entrance Pkcs7Reader und Pkcs7 Sender unterschieden werden Der Pkcs7Entrance ist fiir die Konfiguration dieses Teils des Pkcs7Servers verantwortlich der Pkcs7Reader bearbeitet die Packages und der Pkcs7Sender initii
114. n Dateizugriff besondere Vorkehrungen getroffen werden Da nicht jeder Node Zugriff auf Dateisyste me besitzt wird dieser ber einen clusterweit verf gbaren Service realisiert Umgesetzt wurde dieser Services durch den Pkcs7Server der im Abschnitt 4 4 2 Architektur Pk cs7Server beschrieben wird 5 4 Konfi guration und Management Die Konfiguration der Anwendung erfolgt durch eine Property Datei Diese wird beim Systemstart vom SystemPropertiesService welcher Bestandteil des JBoss Appli cation Servers ist eingelesen und der CA zur Verf gung gestellt Die Property Datei und ihre einzelnen Konfigurationsparameter werden in Abschnitt 7 3 3 Installation der Anwendung beschrieben Zur Laufzeit kann der Zustand der Anwendung ber die JMX Management Console abgefragt werden Kapitel 6 Datenmodell LF In diesem Kapitel wird das verwendete Datenmodell beschrieben und erl utert 6 1 bersicht issuerRequests x509CrtRequests x509CriRequests erlEntries privKeys issuers SEET vercrar NEAR ER rar MP ue AN Rn issuerDN varchar 509Certificate blob issuer varchar erlEntry blob userPrivKey blob issuerDN varchar issuerPriv lt ey blob revocPass varchar erlEntry blob validUntil bigint keyPass varchar issuerPrivKey blob certificate blob privkey blob revocPass varchar certificate blob certSerial bigint keyPass varchar 509Crl blob certSerial bigint revocPass varchar oe u o revocPass varchar keyPass varchar keyPass var
115. nd IssuerBaseData aus dem Paket de tud cdc flexiTrust ca domain stock data wobei die Klasse IssuerBase Data nur Basisdaten enth lt Klasse IssuerDAO Die Klasse IssuerDAO ist die Implementierung des Data Access Objects des Issuers und zeichnet sich f r alle mit der persistenten Datenspeicherung zusammenh ngenden Pflichten verantwortlich Sie stellt SQL Statements zur Verf gung deren Bef llung an die Dom nen Klasse Issuer delegiert wird KAPITEL 4 SYSTEMARCHITEKTUR 45 Klasse IssuerPK Die Klasse IssuerPK beschreibt den internen Primary Key eines Issuers Klasse UserEJB Die Entity Bean UserEJB enth lt die Daten eines einzelnen Users im EJB Tier Sie ist eine Spezialisierung der Klasse User aus der Dom ne Die EJB kann eine Darstellung des Users in Form einer JavaBean Komponente liefern sowie Daten auch umgekehrt wieder in die EJB einbringen Bei dieser JavaBean Komponente handelt es sich um die Klasse UserData aus dem Paket de tud cdc flexiTrust ca domain stock data Klasse UserDAO Die Klasse UserDAO ist die Implementierung des Data Access Objects des Users und zeichnet sich f r alle mit der persistenten Datenspeicherung zusammenh ngenden Auf gaben verantwortlich Sie stellt SQL Statements zur Verfiigung deren Befiillung an die Dom nen Klasse User delegiert wird Klasse UserPK Die Klasse UserPK beschreibt den internen Primary Key eines Users Klasse CaStockEJB Die Stateless Session Bean CaStockEJB beinh
116. ndlage dient hierfiir die bestehende Implementierung der FlexiTRUST CA Wie01 3 2 Funktionalit ten der FlexiTRUST CA Die Hauptaufgabe der FlexiTRUST CA ist die Austellung von Zertifikaten und deren Revokation Daraus ergeben sich die im folgenden beschriebenen Grundfunktionalit ten die ber Antr ge in Anspruch genommen werden k nnen 3 2 1 Ausstellung eines X509v3 Zertifikats Ausstellungsantrag Ein solcher Antrag beinhaltet ein von der RA vorbereitetes und teilweise bef lltes Zer tifikat Dieses enth lt unter anderem den Namen des zuk nftigen Besitzers des Zertifi kats den Namen des Ausstellers den Zeitraum f r die G ltigkeit des Zertifikats und den ffentlichen Schl ssel des Besitzers Zus tzlich zu dem Zertifikat wird in dem An trag ein Pa wort f r die Authorisation zu einer eventuellen Revokation des Zertifikats abgelegt Empfang und Verifikation des Antrags Der Antrag mu digital signiert der CA bergeben werden Die CA verifiziert den Antrag um dessen Echtheit sicherzustellen Die Operator Aufgaben Signierung und bergabe an die CA bernimmt ein Administrator Mit dessen privaten Schl ssel wird der Antrag unterschrieben F r die effizientere bergabe an die CA k nnen mehrere solcher Antr ge zusammengefasst werden das Gesamtpaket wird wiederum mit dem privaten Schl ssel des Administrators unterschrieben Es k nnen mehrere Administra toren existieren allerdings mu jeder Administrator der in
117. nen anzufordern Der Stock liefert hier eine reduzierte Liste mit allen KAPITEL 3 DIE FLEXITRUST CA 27 Revokationen zu Zertifikaten die zum Zeitpunkt der Erstellung der Liste g ltig sind e fetch complete crlentries In manchen Fallen wird eine Liste aller Revo kationen ben tigt diese kann vom Stock angefordert werden e fetch certificate chain Wenn zu einem Zertifikat die Zertifikatskette der Issuer angefordert wird liefert der Stock eine Liste von Zertifikaten der jeweili gen Issuer bis hin zu dem Issuer der dieses Zertifikat in die CA gebracht hat 3 5 Identifikation der Gesch ftsklassen Die mit Hilfe der Anwendungsf lle erkannten Gesch ftsklassen werden in den folgen den Klassendiagrammen dargestellt Die Darstellung erfolgt in UML Notation Die Menge aller Gesch ftsklassen bildet die Grundlage des Design Modells d h die Dar stellung entspricht nicht mehr der Analysesicht und ber cksichtigt bereits Implemen tierungsaspekte vgl hierzu Win02 3 5 1 Gesch ftsklassen der Domain Bench Im Paket Bench sind die zentralen Klassen der Workbenches mit den notwendigen Funktionalit ten zur Requestbearbeitung zusammengefasst Die in Abbildung 3 6 dargestellten Klassen werden in den nachfolgenden Abschnitten beschrieben Im Rahmen einer Erweiterung der CA sind die Gesch ftsklassen neuer Workbenches innerhalb dieses Packages zu implementieren vgl hierzu Kapitel 9 Er weiterung des Systems Klasse C
118. nen beliebige Kombinationen der EAS verwendet werden wobei pro Node nur ein Application Server EAS m glich ist Bsp Node 1 amp 2 FlexiTRUST Server Nodes 3 4 amp 5 FlexiTRUST CA dist multi Erzeugt die Distributionsversionen der FlexiTRUST CA fiir den gleichzeitigen Betrieb zweier JBoss Instanzen pro Node Hiermit ist es m glich einen Flexi TRUST Server und eine FlexiTRUST CA auf einem Node zu starten Dadurch wird die Simulation eines Clusters mit nur einem Node m glich Das Hinzuf gen weiterer CAs und oder Server auf anderen Nodes ist zur Laufzeit m glich Bsp Node 1 FlexiTRUST Server amp FlexiTRUST CA Node 2 FlexiTRUST Server Node 3 4 amp 5 FlexiTRUST CA xdoclet Generiert die Interfaces und Deployment Deskriptoren der EJBs und MBeans der CA bzw des Servers lib calib Erzeugt ein Jar File mit von FlexiTRUST CA ben tigten Bibliotheken In ihr sind die Pakete FlexiCoreProvider Codec AspectJRT und JWS enthalten deploy scratch Erzeugt die FlexiTRUST CA und konfiguriert die Datenbank und den Applica tion Server Dieses Target ist insbesondere fiir Testzwecke geeignet deploy unittests Erzeugt die Unittests audit Erzeugt die JavaDoc und f hrt die Sourcecode Qualit ts berpr fung durch all Kombiniert die Targets deploy scratch und audit run Startet den JBoss Application Server Hier ist jedoch zu bemerken da JBoss von Ant gestartet wird und damit ein Performanceverlust ein
119. nzt bleibt Das Absehen von weiteren In stantiierungen und damit die sukzessive Wiederverwendung der Threads schont dar ber hinaus die Ressourcen des Servers vgl hierzu Abschnitt 5 1 Clustering Der Pkcs7Reader berwacht in einstellbaren Intervallen das vom System Administra tor spezifizierte p7In Verzeichnis vgl hierzu Abschnitte 7 3 3 Installation der An wendung und 8 3 Betrieb des Pkcs7Servers Klasse Pkcs7Sender Die Klasse Pkcs7Sender initiiert die Bearbeitung eines Re quests durch das EJB Tier Es besteht eine 1 zu 1 Beziehung zwischen Request und Pkcs7Sender Instanz Innerhalb eines ThreadPools werden eine konfigurierbare An zahl von Sender Instanzen vorgehalten Klasse ThreadPool Die Klasse ThreadPool stellt dem Pkcs7Reader einen Pool von Pkcs7Sendern zur Verf gung Durch die konfigurierbare Gr e dieses Pools wird die maximale Anzahl der sich gleichzeitig innerhalb der FlexiTRUST CA befindlichen Re quests beschr nkt Im Zusammenhang mit der Klasse ThreadPool stehen die Klassen ObjectFIFO und ThreadPoolWorker Klasse ThreadPoolWorker Die Klasse ThreadPoolWorker repr sentiert einen Thread innerhalb des Pools Klasse ObjectFIFO Die Klasse ObjectFIFO h lt eine Liste von Objekten die nach dem First In First Out Prinzip verwaltet wird KAPITEL 4 SYSTEMARCHITEKTUR 54 Exit Im Paket Exit sind die MBean Service Klassen des Pkcs7Exit und die dazugeh rigen Hilfsklassen zusammengefasst In Abbildung
120. ocationException verifvivold CaSignatureException CaRevocationException ere verify void verify void initialAdminData AdminData Abbildung 3 6 Gesch ftsklassen der Domain Bench Klasse CaException Die Klasse CaException beschreibt einen allgemeinen Fehler der innerhalb des Work flows der CA aufgetreten ist Klasse CaRevocationException Die Klasse CaRevocationException beschreibt die Fehler die bei der Revokation ei nes Zertifikats aufgetreten k nnen Sie ist eine Spezialisierung der Klasse CaException Klasse CaSignatureException Die Klasse CaSignatureException beschreibt die Fehler die bei der Verifikation ei ner Signatur aufgetreten k nnen Sie ist eine Spezialisierung der Klasse CaException 3 5 2 Gesch ftsklassen der Domain Entrance Im Paket Entrance sind die zentralen Klassen des Entrance der CA zusammengefasst Die in Abbildung 3 7 dargestellte Klasse wird im nachfolgenden Abschnitt beschrie ben KAPITEL 3 DIE FLEXITRUST CA 29 Bench Entrance insertlssuer void insertAdmin void Abbildung 3 7 Geschaftsklassen der Domain Entrance Klasse Entrance Der Entrance stellt innerhalb des Workflow Konzeptes der implementierten Flexi TRUST CA den Eingang in das EJB Tier dar Sie definiert direkt auf der Ent ranceEJB bereitzustellende Funktionalit ten Im momentanen Entwicklungsstand sind dies das Einfiigen von Issuern und Administratoren 3 5 3 Gesch ftsklassen der Domain Ex
121. on type Required jboss clustered jboss cluster config partition name _PARTITION_ u home policy org jboss ha framework interfaces RandomRobin bean policy org jboss ha framework interfaces RandomRobin public class Pkcs11BenchEJB extends de tud cdc flexiTrust ca domain bench PkcsllBench implements SessionBean BenchEJB JA The SessionContext Sc private SessionContext ctx JA The ExitHome private ExitHome exitHome JA The RequestHome private RequestLocalHome requestLocalHome J The Pkcs11SessionHome A private PkcsllSessionHome pkcs11SessionHome J Set the SessionContext The Container calls this method after creation of the instance param context The SessionContext for this instance v public void setSessionContext SessionContext context ctx context J ejbActivate SE public void ejbActivate J ejbPassivate public void ejbPassivate JA ejbRemove 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 KAPITEL 9 ERWEITERUNG DES SYSTEMS 93 EE public void ejbRemove exitHome null requestLocalHome null
122. onSerializableFactory unbind JNDI_NAME 71 72 Stop the thread if it was created and set it to null 73 74 75 JAR RARA RARA RARA RRA RR ARK ARRE RR RRA RR RR ARA RR RARA ARA AA 76 Business Methods 77 EA 78 79 JA 80 Reads an object from the card 81 return The read object 82 ry 83 public Object readData 84 85 Object obj null 86 87 Read an object from the card 88 89 return obj 90 91 92 J 93 Write an object to the card 94 param obj The object to be written to card 95 xy 96 public void writeData Object obj 97 98 Write an object on the card 99 100 101 fee 102 Do some calculations on an object 103 param obj The object to be calculated 104 return The modified object 105 ejb interface method 106 SS view type remote 107 K 108 public Object calculate Object obj 109 110 Do some calculations on the card 111 112 return obj 113 114 115 JB OR AR AAAI III Ok R 116 Set Get Methods 117 EE III 118 119 ER 120 Set a property 121 param property The property 122 jmx managed attribute 123 124 public void setProperty long property 125 126 this property property 127 128 129 pre 130 Get property 131 return The property 132 jmx managed attribute 133 KH 134 135 136 137 138 e ee A e bk an ee 27 W H H e KAPITEL 9 ERWEITERUNG DES SYSTEMS 116 public
123. or spezifizierte p7Out Verzeichnis abgelegt vgl hierzu Ab schnitte 7 3 3 Installation der Anwendung und 8 3 Betrieb des Pkcs7Servers Session Im Paket Session sind die Enterprise JavaBean der Pkcs7Session und die dazuge h rigen Hilfsklassen zusammengefa t In Abbildung 4 15 ist die Enterprise JavaBean KAPITEL 4 SYSTEMARCHITEKTUR 55 Pkcs7SessionEJB dargestellt die in dem nachfolgenden Abschnitt beschrieben wird SessionBean Pkcs7SessionEJB ctx SessionContext setSessionContext void ejbActivate void ejbPassivate void ejbRemove void classloaderDummy void ejbCreate void exitRequest void Abbildung 4 15 Enterprise JavaBeans Pkcs7Session Klasse Pkcs7SessionEJB Die Klasse Pkcs7SessionEJB stellt die Schnittstelle zwi schen dem EJB Tier der FlexiTRUST CA und dem Pkcs7Server dar 4 5 Grundlagen und Begr ndungen fiir die vorgestellte Architektur W hrend der Entwurfs und Implementierungsphase der im Rahmen dieser Diplom arbeit entstandenen FlexiTRUST CA wurden durch die Problemstellungen bedingte Entscheidungen getroffen Einige der wesentlichen Aspekte werden hier im folgenden erl utert und begr ndet 4 5 1 Local Interfaces der Entity Beans Die FlexiTRUST CA wurde als verteilte Anwendung entwickelt Diesem Ansatz wi derspricht jedoch die Verwendung von Local Interfaces f r Entity Beans Dies liegt darin begr ndet da bei Nutzung dieser Art Interfaces dem Container die M g
124. ourceforge net sourceforge jboss JBoss 3 0QuickStart pdf 2002 LABORATORIES RSA PKCS 11 Crytographic Toke Interface Standard http www rsasecurity com rsalabs pkcs pkcs 11 2002 OESTEREICH Bernd Objektorientierte Softwareentwicklung Miinchen Oldenburg Verlag 2001 ISBN 3486255738 ORG AspectJ AspectJ http aspectj org 2002 PROJECT The J Log4j Project http jakarta apache org 1log4j docs index html 2002 ROSSMULLER Oliver JUnitEE http www junitee org 2002 LITERATURVERZEICHNIS 127 SJGO2a SJGO2b SLJGO2 Sof02 Sou02 Tog02 Wie01 Win02 Kap 2 The JBoss JMX Microkernel In STARK Scott THE JBoss GROUP JBoss Administration and Development Second Edition 2520 Sharondale Dr Atlanta GA 30305 USA JBoss Group LLC Okto ber 2002 S 39 94 Kap 4 Transactions on JBoss The JTA Transaction Service In STARK Scott THE JBoss GROUP JBoss Administration and Development Second Edition 2520 Sharondale Dr Atlanta GA 30305 USA JBoss Group LLC Oktober 2002 S 133 140 Kap 4 HA JNDI In SACHA LABOUREY Bill B THE JBOSS GROUP JBoss Clustering 2520 Sharondale Dr Atlanta GA 30305 USA JBoss Group LLC September 2002 S 24 29 SOFTWARE Ming DbVisualizer 3 1 http www ming se products dbvis info html 2002 SOURCEFORGE EJTools JMX Browser http ejtools sourceforge net 2002 TOGETHERSOFT Together ControlCenter 6 0 http ww
125. paredStatement prepStmt con prepareStatement deleteStatement workerPK storePreparedStatementFragment prepStmt 1 int rowCount prepStmt executeUpdate prepStmt close if rowCount 0 throw new NoSuchEntityException Remove for request workerPK failed switch worker getType case Types X509CRT deletex509CrtRequest con workerPK break case Types X509CRL deleteX509CrlRequest con workerPK break case Types X509P11 deleteX509P11Request con workerPK break default break Inserts a Request param con Connection param workerPK The primary key of the Request param worker The Request throws SQLException Database access error throws DuplicateKeyException An entity EJB object with the same key already exists public void insertWorker Connection con WorkerPK workerPK Worker worker throws SQLException DuplicateKeyException String insertStatement insert into requests requestPK state creationDate retirementDate type sigDat nextBench values 27 typ Li Big tr 23 98 99 100 101 102 103 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 145 146 147 148 149 150 151 152 153 154 155 157 158 159 160 161 162 163 165 166 167 168 169 KAPITEL 9 ERWEITERUNG DES SY
126. pplication Server e 19 8 3 Pkes Server a Bw er e 80 9 Erweiterung des Systems 82 9 1 Spezifikation der Anwendungsf lle und Klassen 82 9 1 1 Spezifikation der Anwendungsf lle 83 9 1 2 Identifikation der Gesch ftsklassen 85 9 2 Systemarchitektur 2 2 2222 Comm 87 9 2 1 Architektur EJB Tier o 88 9 2 2 Architektur PkesilServer 88 9 3 PKCS 11 Workbench o ern 90 9 3 1 Die Klasse Pkcs11BenchEJB 90 9 3 2 Die Klasse PkcsllBench 95 9 3 3 Die Klasse Equipment 96 9 34 Die Klasse EntranceEJB o 97 94 PROCS IT Request EEN 99 9 4 1 Die Klasse XS509P11Request 99 9 4 2 Die Klasse X309P11RequestData 103 9 4 3 Die Klasse Request oo 104 9 4 4 Die Klasse RequestDAO 106 INHALTS VERZEICHNIS 5 9 4 5 Die Klasse Types 2 2 su 22 288 ee 8 8 115 9 5 PKCS 11 MBean Service 2 22 Comm 113 9 5 1 Die Klasse PkeslICardAccess 114 9 5 2 Die Klasse Pkcsl1SessionEJB 116 96 Buldtiles 20m al do ew Boek e Auer er E A 118 10 Abschlie ende Bemerkungen 119 10 1 Ausblick occ AE 0 8 00 au Ba ser en A RE A 119 10 1 1 Datenbank e o e 119 10 1 2 Workbenches und Requests als Plug In 120 10 13 Cagtock 2 28 468 EE ERR EEN en 121 10 1 4 Benutzerschnittstelle
127. quest request Request obj Object attribute int request GenericWorker X509P11Request X509P11Request X509P11Request updateBeanData void loadResultSetFragment int storePreparedStatementFragment int updateBeanData void loadResultSetFragment int loadConcreteResultSetFragment int storePreparedStatementFragment int storePreparedConcreteStatementFragment int initWork void work void verifySig void initWork void work void beanRepresentation WorkerData doStep1 void workerPK WorkerPK doStep2 void beanRepresentation WorkerData Types data AdminRequestData ESCH SCH X509CrtRequestData Se X509P 11RequestData X509CRL int X509CrlRequestData X509P 11 int lesuerRequestData Abbildung 9 6 Gesch ftsklassen der Domain Request Request Die Klasse Request beschreibt einen Request innerhalb der FlexiTRUST CA Neben den beschreibenden Attributen beinhaltet sie einen Verweis auf einen der spezialisierten Requests Der Request bietet unterst tzende Funktionalit ten f r die persistente Datenspeicherung und stellt grundlegende f r alle Requests notwendige Methoden zur Verf gung Diese sind neben der Delegierung der Verifikation der Re questsignatur an die jeweilige Bench f r die Aktualisierung der Attribute verantwort lich Seine Hauptaufgabe besteht jedoch in der Delegierung der Arbeitsmethoden zu den im Anschlu folgenden spezialisi
128. r flexiTRUST deploy ajc use defined ajc list develop lst aj usejavac false ejtools use defined deploy cluster service xml _PARTITION_ partition name FlexiTRUST deploy mysql service xml 21 22 23 24 25 26 27 28 29 KAPITEL 7 INSTALLATION DES SYSTEMS 75 _MYSQLIP_ 134 101 26 85 mysql ip lt MySQL Server IP gt _MYSOLPORT_ 3306 mysql port lt MySQL Server Port gt JBoss Version 3 0 3 jboss version lt JBoss Version gt Zeile 1 ff Speicherorte der FlexiTRUST Komponenten all ca und jws relativ zu SFLEXITRUST_HOME Zeile 4 Verzeichnis der FlexiTRUST Konfiguration fiir JBoss relativ zu JBOSS_HOME Zeile 6 ff Verwendung des AspectJ Compilers Falls diese Property gesetzt wird mu auch ajc list einen g ltigen Wert definieren Zeile 10 Einbinden des erweiterten JMX Frontends der EJTools zus tzlich zu der JBoss eigenen JMX Console Ist dieses nicht gew nscht gen gt ein einfaches Aus kommentieren der Zeile Zeile 16 Definiert den Namen der Clusterpartition Durch Vergabe unterschiedlicher Partitionsnamen wird es m glich in einem LAN mehrere FlexiTRUST CA Cluster in Betrieb zu nehmen die unabh ngig voneinander arbeiten Zeile 22 ff Definiert die IP Adresse und den Port des zu verwendenden MySQL Datenbank Servers Zeile 30 ff Definiert die verwendete JBoss Version Die Konfigurationsdatei ca properties Die Konfigurationsdatei SFLEXITRUST_
129. ranceEJB dargestellt de tud cdc flexiTrust ca domain entrance Entrance SessionBean BenchEJB EntranceEJB ctx SessionContext caStockHome CaStockHome cryptoBenchHome CryptoBenchHome pkes11BenchHome Pkcs11BenchHome exitHome ExitHome requestHome RequestHome requestLocalHome RequestLocalHome setSessionContext void ejbActivate void ejbPassivate void ejbRemove void T ejbCreate void enterRequest void processRequest void insertlssuer void insertAdmin void Abbildung 4 4 Enterprise JavaBeans Entrance Die in Abbildung 4 4 dargestellte Klasse wird in dem nachfolgenden Abschnitt be schrieben Klasse EntranceEJB Die Stateless Session Bean EntranceEJB beinhaltet momentan alle Operationen die f r die Bearbeitung von Issuer und Admin Requests in Verbindung mit weiteren Enter prise JavaBeans notwendig sind siehe Abschnitt 10 1 3 CaStock Sie stellt daher ein Bindeglied zwischen der in der Dom nenklasse implementierten Logik und dem clusterweiten EJB Tier der FlexiTRUST CA dar Sie ist eine Spezialisierung der Klasse Entrance aus der Dom ne ber ihre Methode processRequest akzeptiert sie den Primary Key eines Requests Im Falle der oben genannten Typen instantiiert die EntranceEJB eine Repr sentation f r die Bearbeitung innerhalb der eigenen Java Virtual Machine Nach Abschluss der Arbeitsschritte des Requests bez glich der Funktionalit ten der EntranceEJB leitet diese
130. ration Authority SQL Structured Query Language UML Unified Modeling Language WAP Wireless Application Protocol WML WAP Wireless Markup Language XML EXtensible Markup Language 124 Literaturverzeichnis AS02 Com02a Com02b Com02c EGO1 EG02 ERO2a ERO2b Fel02 Fou02 Gro02a ANDREAL SCHAEFER et a XDoclet http xdoclet sourceforge net index hml 2002 COMPANY MySQL A MySQL http www mysql com 2002 COMPANY MySQL A MySQL Documentation http www mysql com doc en index html 2002 COMPANY MySQL A MySQL Installation Documentation http www mysql com doc en Installing html 2002 ERICH GAMMA et a Entwurfsmuster Elemente wiederverwendbarer objektorientierter Software 1 Aufl Addison Wesley 2001 ISBN 3827318629 ERICH GAMMA Kent B JUnit Testing Resources for Extreme Program ming http sourceforge net projects junit 2002 Kap 13 EJB Best Practices and Performance Optimizations In ED RO MAN Tyler J Mastering Enterprise JavaBeans Second Edition New York Wiley Computer Publishing 2002 S 400 402 ISBN 0 471 41711 4 Kap 14 Clustering In ED ROMAN Tyler J Mastering Enterprise Java Beans Second Edition New York Wiley Computer Publishing 2002 S 419 423 ISBN 0 471 41711 4 FELDGEN Lutz Analyse von Enterprise Application Servern und Daten bank Management Systemen fiir FlexiTRUST Darmstadt Technische Uni versit t Darmstadt
131. ren einge bracht werden Daher wurde zun chst auf eine Verifikation dieser Requests verzichtet Ans tze zur nderung w ren ein zus tzlicher InitKeyRequest mit einer zus tzlichen InitKeyRequestData im EJB Tier hierf r m sste allerdings eine Tabelle f r einen einzigen Datensatz angelegt werden Da dies nicht akzeptabel ist wurde auf diesen Ansatz bisher verzichtet m glicherweise kann er dennoch unter Umgehung einer zu s tzlichen Tabelle verfolgt werden Issuer und Administrator nehmen nicht aktiv an der Requestverarbeitung teil daher wurden sie in das Package stock integriert Diese L sung ist aber eher als eine Be helfsl sung anzusehen Da Issuer und Administrator eine Art Personal der CA darstel len k nnten sie m glicherweise in ein Package staff verschoben werden In der weiteren Entwicklung k nnte noch im Zertifikatsantrag von der RA definiert werden ob der private Schl ssel des Users gespeichert werden soll 10 1 4 Benutzerschnittstelle In einer eventuellen sp teren Erweiterung der FlexiTRUST CA um ein Administrations oder UserInterface wird eine Web Architektur mit JavaServlet und JavaServerPages basierend auf dem Model View Controller MVC Design Paradigma vorgeschlagen Diese Technologie wird u a von dem Struts Framework unterst tzt N here Informa tionen zu Struts und MVC k nnen Fou02 EGO1 und Oes01 entnommen werden KAPITEL 10 ABSCHLIESSENDE BEMERKUNGEN 122 10 2 Fazit Mit dieser Diplom
132. rver JBoss hat in den Versionen 3 0 x einen Fehler welcher die in diesem Pro jekt verwendeten verteilten Transaktionen verhindert F r die Version 3 0 3 befindet sich im Verzeichnis ca personal server ein Patch der dieses Problem behebt Dieser Patch wird bei der bersetzung der Quelltexte automatisch angewendet Aus diesem Grund ist die FlexiTRUST CA vorl ufig nur mit Version 3 0 3 lauff hig 19 KAPITEL 7 INSTALLATION DES SYSTEMS 74 HOME Bsp home username JAVA_HOME Bsp usr local bin java JBOSS_HOME Bsp JBoss e FLEXITRUST_HOME Bsp FlexiPKI FlexiTRUST Konfiguration der FlexiTRUST CA F r die Konfiguration der FlexiTRUST CA sind folgende Dateien unterhalb FLEXI TRUST_HOME relevant Verzeichnis Datei ca config props ca properties jndi properties ca personal props ant properties ca multi properties ca single properties server multi properties server single properties Vom FlexiTRUST CA Administrator sind insbesondere die Dateien ant properties und ca properties anzupassen ber die restlichen Konfigurationsdateien werden JBoss interne Parameter definiert die normalerweise nicht angepa t werden m ssen Die Konfigurationsdatei ant properties Die Konfigurationsdatei SFLEXITRUST_HOME ca personal props ant properties legt Parameter f r den bersetzungvorgang der FlexiTRUST CA fest Listing 7 1 ant properties all home all ca home ca jws home jws appserver deploy serve
133. ryptoBench Die Klasse CryptoBench stellt grundlegende kryptographische Funktionalit ten wie z B Verifizieren und Signieren von Byte Arrays SignedData Objekten und X509Cer tificate Objekten zur Verf gung Weiterhin werden Methoden f r die Generierung von KeyPairs bereitgestellt Diese Funktionalit ten k nnen direkt von den Requests in An spruch genommen werden Klasse Equipment Die Klasse Equipment beinhaltet eine Auflistung aller in der CA implementierten Ben ches Die in ihr definierten Konstanten werden von den Requests und Workbenches zur Identifizierung der Benchtypen ben tigt KAPITEL 3 DIE FLEXITRUST CA 28 Bench di EJ JwsException Equipment CaException CRYPTOBENCH int CryptoBench ENTRANCE int EXIT int PKCS7EXIT int insNested Throwable CaException CaException CaException CaException printStackTrace void printStackTrace void printStackTrace void generateKeys KeyPair generatePass String generatePin String getAdminCertificate byte getlssuerBaseData IssuerBaseData getAdminData AdminData message String insertPrivKey void insertCertificate void A ZA updateCr X509Crl sign bytell CaSignatureException CaRevocationException sign bytel sign bytel sign void sign void CaSignatureException CaRevocationException sign void CaSignatureException CaRevocationException verify void CaSignatureException CaRev
134. smanagement und Objektpersistenz Dar ber hinaus stehen die nicht unbedingt an die Server Seite gebundenen Dienste der Java Plattform wie Java Naming and Directory Interface INDI Transaction Service JTA Inc02e und Java Authentication and Authorization Service JAAS Inc02d etc zur Verf gung Die verbindliche Definition der Schnittstellen in der J2EE Spezifikation stellt sicher da EJBs in verschiedenen Implementierungen von Applikationsservern unver ndert ge nutzt werden k nnen Die Clients k nnen ebenfalls ber wohldefinierte vom Ap plikationsserver bereitzustellende Schnittstellen auf die EJBs zugreifen F r n here Informationen zu Enterprise JavaBeans und ihrer Modellierung wird auf die Studien arbeit Win02 verwiesen Servlets sind ein stabiler und sicherer Mechanismus f r die Ausf hrung von serversei tigem Code in Web basierten Anwendungen Servlets sind Klassen die als kleine Java Programme die Funktionalit t von Web Servern erweitern und damit die Generierung von dynamischen Web Seiten in Sprachen wie HTML WML oder XML erm glichen Innerhalb der Servlets besteht die Zugriffsm glichkeit auf spezifische Funktionalit ten des Web Servers wie z B Session Verwaltung aber auch auf s mtliche Java APIs der J2EE und damit insbesondere auf EJBs Die JavaServer Pages bilden ein Front End zu Servlets In JSPs kann statischer Text einer Web Seite mit Java Code f r die Erzeugung der dynamischen Daten gemischt
135. sse Pkcs11SessionEJB Die Klasse Pkcs11SessionEJB stellt die Schnittstelle zwischen dem EJB Tier der FlexiTRUST CA und dem Pkcs11Server dar KAPITEL 9 ERWEITERUNG DES SYSTEMS 90 SessionBean Pkes11SessionEJB ctx SessionContext pkcs11CardAccess Pkcs11CardAccess setSessionContext void ejbActivate void ejbPassivate void ejbRemove void T ejbCreate void readData Object writeData void calculate Object Abbildung 9 9 Enterprise JavaBeans Pkcs1 1 Session 9 3 PKCS 11 Workbench Beteiligte Komponenten Klasse Beschreibung Pkcs11BenchEJB Beanklasse der Pkcs11 Bench Pkcs11Bench Gesch ftsklasse der Pkcs11Bench Equipment Auflistung aller in der CA vorhandenen Workbenches EntranceEJB Beanklasse der Entrance Die nachfolgenden Abschnitte beschreiben die innerhalb des EJB Tiers beteiligten Komponenten zur Realisierung von Pkcs1 1 Funktionalit ten und ihre Aufgaben ent sprechend ihrer Zuordnung zu den verschiedenen Schichten der J2EE Architektur 9 3 1 Die Klasse Pkcs11BenchEJB Die Klasse ejbs bench Pkcs11BenchEJB realisiert eine Workbench f r Pkcs11 Funktionalit ten Es findet eine Trennung zwischen dem Containerspezifischen Teil und der Gesch ftslogik statt Die Deploymentkonfiguration f r den Application Server wird ber XDoclet Tags siehe Zeilen 22 ff umgesetzt KAPITEL 9 ERWEITERUNG DES SYSTEMS 91 Aus dem Tag ejb bean wird ersichtlich da die Pkcs11BenchEJB als Stateless
136. t MySQL erzeugt nun die erforderlichen Dateien Dieser Vorgang kann je nach konfigu rierter Datenbankgr e l nger dauern Falls die Datenbank repliziert werden soll siehe Abschnitt 7 2 3 Replikation der Da tenbank mu an dieser Stelle der Datenbankserver erneut deaktiviert werden um einen Snapshot der erzeugten Dateien zu sichern Daf r sichert man das Verzeichnis caDB in einem Archiv Windows WinACE WinZIP oder WinRAR Unix tar und o der gzip als user mysql Beispiel tar cvfz caDB initial snapshot tar gz Nun kann der Server wieder gestartet werden um die erforderlichen Benutzer anzule gen F r den Zugriff der CA auf die Datenbank muf ein Benutzer momentan flexiTrust mit PaBwort momentan flexiTrust mit vollen Zugriffsrechten von allen Hosts auf die Datenbank eingerichtet werden Die hierfiir erforderlichen Schritte sind dem My SQL Manual Com02b zu entnehmen Dieser Benutzer ist dem Application Server JBoss mitzuteilen Momentan geschieht dies ber die Konfigurationsdatei JBOSS_ HOME server flexiTRUST deploy mysql service xml Der geplante Einsatz von JAAS Inc02d wird dies berfl ssig machen und eine andere Handhabung einf hren Zum Anlegen der erforderlichen Tabellen ist das ant target db install im Ver zeichnis ca src aufzurufen KAPITEL 7 INSTALLATION DES SYSTEMS 72 7 2 3 Installation eines Replikanten Installation von MySQL Max analog zum Master siehe 7 2 2 mit der Ausnahme
137. tFileName StatFileName und StatDirName angegeben werden Ein StatPulseLimit 0 deak tiviert die Statistik Zeile 29 ff KeyStore Verzeichnis der Unittests relativ zu JBOSS_HOME bin Sourcecodeversion der FlexiTRUST CA Die Quelltexte der FlexiTRUST CA befinden sich im CVS Repository ed FLEXITRUST_HOME FlexiTRUST export CVSROOT ext lt username gt lt cvs server gt lt cvs directory gt FlexiTRUST export CVS_RSH ssh FlexiTRUST cvs co r ejb all ca jws Ubersetzt und konfiguriert wird die FlexiTRUST CA durch ein src build sh all im Verzeichnis ca src 7 3 4 Start der FlexiTRUST CA Der Application Server mit FlexiTRUST Konfiguration wird ber den Aufruf eines Startskripts im Verzeichnis JBOSS_HOME bin gestartet bin startFlexiTRUST sh KAPITEL 7 INSTALLATION DES SYSTEMS 77 7 3 5 Initialisierung der FlexiTRUST CA F r die Inbetriebnahme der CA m ssen ein initialer Issuer und ein initialer Admini strator erstellt werden Im momentanen Entwicklungsstand ist dieses durch den Unit test TestInitKeyRequest realisert F r den Issuer wird zun chst ein KeyPair erzeugt und ein mit dem Private Key signiertes Zertifikat erstellt Dieses wird mit einem Issu erRequest ber Funktionalit ten der Entrance direkt in den Stock der CA eingebracht Zus tzlich werden die erzeugten Daten f r weitere Verf gbarkeit in einen KeyStore im Datenverzeichnis der Unittests geschrieben Anschlie end wird ein Key
138. tJ 1 1 Org02 fiir die Generierung von Log Statements im Source Code Emacs JDE fiir die Source Code Erstellung und als Front End fiir die Kompilie rung und Versionsverwaltung CVS fiir die Versionsverwaltung Jakarta Ant 1 5 fiir die Ubersetzungs und Packaging Vorgiinge XDoclet fiir die Generierung der Interfaces und Deployment Deskriptoren der Enterprise JavaBeans EJTools JMX Browser als alternatives Web Front End Sou02 JUnit EGO2 in Verbindung mit JUnitEE Ros02 als Testumgebung 1 5 Zielumgebung Die CA soll auf geclusterten Windows und Unixsystemen lauff hig und an einen Da tenbankserver angeschlossen sein 1 5 1 Hardware Die CA ist als Plattformunabh ngige Java Applikation implementiert daher k nnen alle Systeme eingesetzt werden fiir die ein Java Runtime Environment existiert 1 5 2 Software Die CA wurde mit Linux Kernel 2 4 19 GLibc 2 2 5 und Windows2000 WindowsXP Betriebssystemen getestet Weitere Softweareanforderungen sind der Application Ser ver JBoss in Version 3 0 3 Gro02b und die Entwicklungsumgebung Java 2 Platform Standard Edition J2SE in Version 1 4 1_01 Sollen die Quelltexte bersetzt werden wird das Software Development Kit ben tigt fiir die Distributionsversion geniigt das Java Runtime Environment Inc02c Kapitel 2 JWorkshop Der JWorkshop ist die rudiment re Implementierung einer Applikationsstruktur und der in dieser vorkommenden allgemeinen Arbeitsschritte
139. tering durch einen clusterweit replizierten JNDI Baum eine kurze Beschreibung hiervon ist unter Abschnitt 4 5 2 HA JNDI und die Pkcs7Server Session zu finden Da geclusterte Datenbanken noch in der Entwicklungsphase sind greifen s mtliche Nodes auf einen Datenbankserver zu Der Ansatz zu m glichst gro er Ausfallsicherheit wird in Abschnitt 7 2 3 Replikation der Datenbank beschrieben 61 MW KAPITEL 5 UMSETZUNG DER FACHLICHEN ANFORDERUNGEN 62 5 2 Logging Zur Laufzeit der Anwendung sollen Informationen ber den Programmablauf protokol liert werden Hierf r kommt Log4J Pro02 zum Einsatz die dazugeh rigen Statements werden mit Hilfe von AspectJ Org02 generiert Auch zur Laufzeit kann JBoss ber die Log4J Konfigurationsdatei JBOSS_HOME server flexiTRUST conf log4j xml mitgeteilt werden welche Klassen von generierten Statements tats chlich ausgewertet werden sollen Zum einen werden alle Fehler die zur Laufzeit auftreten in Log Dateien geschrieben zum anderen k nnen beliebige Stellen im Quellcode mit Log Statements versehen wer den um Variableninhalte auszugeben Im Einzelnen werden im folgende Gr en ausgegeben e Zeitstempel Zeitpunkt der Meldung e Meldungsklasse Error Warning oder Info e Meldung detaillierte Beschreibung eines Fehlers oder Variableninhalte 5 3 Schnittstellen zu externen Systemen Aufgrund der verteilten Architektur der FlexiTRUST CA m ssen f r de
140. tificateEJB Die Entity Bean CertificateEJB enth lt die Daten die mit einem einzelnen X509v3 Zertifikats im EJB Tier zusammenh ngen Sie ist eine Spezialisierung der Klasse Cer tificate aus der Dom ne Die EJB kann zwei Darstellungen des Zertifikats in Form von JavaBean Komponenten liefern sowie Daten auch umgekehrt wieder in die EJB einbringen Bei diesen JavaBean Komponenten handelt es sich um die Klassen Certi ficateData und CertificateBaseData aus dem Paket de tud cdc flexiTrust ca domain stock data wobei die Klasse CertificateBaseData nur Basisdaten enth lt Klasse CertificateDAO Die Klasse CertificateDAO ist die Implementierung des Data Access Objects des Zertifikats und zeichnet sich f r alle mit der persistenten Datenspeicherung zusammen h ngenden Pflichten verantwortlich Sie stellt SQL Statements zur Verf gung deren Bef llung an die Dom nen Klasse Certificate delegiert wird Klasse CertificatePK Die Klasse CertificatePK beschreibt den internen Primary Key eines Zertifikats der gleichzeitig die Seriennummer des X509v3 Zertifikats ist Klasse IssuerEJB Die Entity Bean IssuerEJB enth lt die Daten eines einzelnen Issuers im EJB Tier Sie ist eine Spezialisierung der Klasse Issuer aus der Dom ne Die EJB kann zwei Darstellungen des Issuers in Form von JavaBean Komponenten liefern sowie Daten auch umgekehrt wieder in die EJB einbringen Bei diesen JavaBean Komponenten handelt es sich um die Klassen IssuerData u
141. ton Update bet tigen siehe auch Abbildung 8 1 KAPITEL 8 BETRIEB DES SYSTEMS 81 Es ist darauf zu achten da diese nderung nur bei Inaktivit t des EntranceService durchgef hrt wird da die in Arbeit befindlichen Requests ansonsten abgebrochen und mit dem Status failed in der Datenbank markiert werden F r die Konfiguration des Pkcs7Exit mu bei den JBoss Services der Service Pkcs7 ExitService ausgew hlt werden siehe Abbildung 8 2 H Datei Bearbeiten Ansicht Reter Einstellungen Gehe zu Lesezeichen Werkzeuge Hite SI Zurich r D r EES Bookmarklets Go ze Gael E MBean Detail x MBean Detail Agent View gt gt MBean Detail 100 DS lt Cese ear H S W rterbuch HETTools Domain jboss Name jhoss service Pkes7ExitService Class Name de tud cdc fiexiTrust ca pkcs server exit Pkes Exit Description Management Bean Constructor de tud cde flexiTrust ca pkes server exit Pkos7Exit crass ame access valve MaxProcessingDelay long RW frauoo StateSiring javalang Sting RO Started Idle Time long RW 553 State int RO 3 StatFileName Javalang String RW preaistates StatDirName javalang Sting RW D Sesgeresrer Name javalang String RO Pkes7Exit OutFileName javalang String RW eaout MaxProcessables mt RW ba OutFileExt javalang String RW pr P7OutDiName javalang Sting RW Serres P7EnDiNarne javalang String RW 7 FlexPKiFIe
142. uest Types o 113 9 10 pkcsl1server cardaccess Pkcs11CardAccess 114 9 11 pkcsl1server session Pkcs11SessionEJB 116 Kapitel 1 Einleitung MW LF 1 1 ber dieses Handbuch Das vorliegende Dokument beschreibt den Ansatz f r die Umsetzung der Funktiona lit ten der FlexiTRUST Certification Authority FlexiTRUST CA auf DV technischer Ebene Grundlage f r die Entwicklung der FlexiTRUST CA ist der ebenfalls im Rahmen dieser Diplomarbeit in J2EE neu entwickelte JWorkshop JWS Er definiert auf allgemeiner Ebene ein System f r die Durchf hrung von Arbeitsabl ufen und somit eine m gliche Architektur f r Applikationen wie die hier vorgestellte CA oder andere Anwendungen Weiterhin werden die Voraussetzungen f r den Betrieb der FlexiTRUST CA und die notwendigen Ma nahmen f r die Installation der verschiedenen Komponenten erl u tert Das Handbuch richtet sich an Entwickler welche die CA erweitern oder einen anderen Teil von FlexiTRUST in der gleichen Architektur implementieren wollen Hierf r wer den grundlegende Kenntnisse in der Programmierung in J2EE Inc02a vorausgesetzt Weiterhin ist es ein Installations und Benutzerhandbuch f r System Administratoren welche die CA installieren und administrieren Hier werden werden Kenntnisse in UNIX und oder Windows System Administration und Administration von MySQL Datenbanken vorausgesetzt KAPITEL 1 EINLEITUNG 10 1 2 Struktur dieses H
143. w togethersoft com products controlcenter 2002 WIESMAIER Alexander FlexiTRUST CA Ein flexibles skalierbares und dynamisch erweiterbares Trustcenter Darmstadt Technische Universitat Darmstadt Fachgebiet Theoretische Informatik Kryptographie und Com puteralgebra Diplomarbeit Februar 2001 WINKLER Markus Analyse der Enterprise Java Beans Spezifikation Ver sion 2 0 als Basis fiir FlexiTRUST Darmstadt Technische Universitat Darmstadt Fachgebiet Theoretische Informatik Kryptographie und Com puteralgebra Studienarbeit September 2002
144. xiTRUST CA darf bei einer Erweiterung der berblick ber das Gesamtsystem nicht verloren gehen Eine Art Plug In Architetur die es erm glicht eine weitere Workbench oder einen weiteren Request durch einfaches Hineinkopieren zu aktivieren w re durchaus w nschenswert Hierdurch w rde es auch einfach m glich unterschiedliche Lizensierungsmodelle um zusetzen Je nach Lizenz werden Plug Ins hinzugegeben entfernt oder durch modif zierte Versionen ersetzt KAPITEL 10 ABSCHLIESSENDE BEMERKUNGEN 121 Ein erster Ansatz w re eine Art zentrale Factory zu implementieren bei der sich die Plug Ins registrieren und somit den anderen Komponenten zur Verf gung stellen Als Basis kann hierfiir der bereits umgesetzte EJBServiceLoctor dienen Eine weitere M glichkeit k nnte in der Implementierung eines MBean Services be stehen der dem Gesamtsystem eine Objektstruktur mit Informationen ber installierte Plug Ins zur Verf gung stellt Sofern diese Struktur serialisierbar implementiert wird kann sie an den globalen HA JNDI gebunden werden und st nde somit auch cluster weit zur Verf gung 10 1 3 CaStock Momentan werden s mtliche Administratoren und Issuer Requests nicht auf der Cryp tobench verifiziert Grund hierf r ist da bei der Einbringung von initialem Issuer Ad ministrator keine Daten zur Verifikation oder Signierung im Stock vorliegen Die initia le Einbringung geht aber genauso vonstatten wie sp tere Issuer Administrato
145. xiTrust ca domain bench CaException import de tud cdc flexiTrust ca interfaces exit ExitHome import de tud cdc flexiTrust ca interfaces request Regquestlocal import de tud cdc flexiTrust ca interfaces request RequestLocalHome import de tud cdc flexiTrust ca pkcsllserver session Pkcsll1SessionHome xk E Geib Dean display name Pkcs11BenchEJB name ejb Pkcs11BenchEJB jndi name ejb CDC FlexiTRUST Pkcs11BenchEJB type Stateless transaction type Container reentrant false use soft locking true view type remote ejb ejb ref ejb name ejb RequestEJB view type local ref name ejb RequestLocalEJB ejb ejb ref ejb name ejb ExitEJB ejb ejb external ref ejb name ejb Pkcs11SessionEJB view type remote ref name ejb Pkcs11SessionEJB type Session home de tud cdc flexiTrust ca pkcsllserver session Pkcs11SessionHome H HF FF HH HH HF FH HH HH HH 45 46 47 48 49 50 51 52 53 54 55 67 110 111 112 KAPITEL 9 ERWEITERUNG DES SYSTEMS 92 a remote de tud cdc flexiTrust ca pkcsllserver session Pkcs11Session jboss ejb ref jndi ref name Pkcs11SessionEJB jndi name jnp localhost _HAJNDIPORT_ ca pkcsllserver ear ejb CDC FlexiTRUST Pkcs11SessionEJB Xx A ejb home remote class de tud cdc flexiTrust ca interfaces bench Pkcs11BenchHome ejb interface remote class de tud cdc flexiTrust ca interfaces bench Pkcs11Bench ejb transacti
146. yptographiestandard Pkcs 1 1 in Verbindung mit weiteren Enterprise JavaBeans notwendig sind Ihre wesentliche Aufgabe ist die Delegierung an den Pkcs1 1 Server der den Hardwarezugriff realisieren wird 9 2 2 Architektur Pkcs11Server Der Pkcs11Server implementiert den Hardwarezugriff auf die SmartCards Er un tergliedert sich in die Komponenten CardAccess und Session die im folgenden be schrieben werden KAPITEL 9 ERWEITERUNG DES SYSTEMS 89 CardAccess Im Paket CardAccess sind die MBean Service Klassen des Pkcs11CardAccess und die dazugeh rigen Hilfsklassen zusammengefa t In Abbildung 9 8 ist die MBean Pk csllCardAccess dargestellt E ServiceMBeanSupport Pkcs11CardAccessMBean Pkes11CardAccess JNDI_NAME String startService void stopService void readData Object writeData void calculate Object property long Abbildung 9 8 MBean Service Pkcs11CardAccess Die in Abbildung 9 3 dargestellte Klasse wird in dem nachfolgenden Abschnitt be schrieben Klasse Pkcs11CardAccess Die Klasse Pkcs7Exit implementiert eine Managed Bean und dient der Konfiguration der noch zu implementierenden Methoden und Klas sen f r den Hardwarezugriff Session Im Paket Session sind die Enterprise JavaBean der Pkcs11Session und die dazu geh rigen Hilfsklassen zusammengefa t In Abbildung 9 9 ist die Enterprise JavaBean Pkcs11SessionEJB dargestellt die in dem nachfolgenden Abschnitt beschrieben wird Kla
Download Pdf Manuals
Related Search
Related Contents
PIANO DI SICUREZZA E COORDINAMENTO Manual del usuario de la cortina de luz de seguridad GuardShield DIA-250 / DIA-376 / DIA-245 T MHC-GX99 MANUEL D` UTILISATION Sistema de Vigilância GLOUROS – Limpiador nº 1806 Panasonic NN-T694SF Microwave Oven Copyright © All rights reserved.
Failed to retrieve file