<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>knallisworld &#187; Tipps</title> <atom:link href="http://www.knallisworld.de/blog/category/tipps/feed/" rel="self" type="application/rss+xml" /><link>http://www.knallisworld.de/blog</link> <description>Where is the beef?</description> <lastBuildDate>Thu, 02 Feb 2012 23:10:07 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>[Howto] Maven: Wie man eine ausfÃ¼hrbare Jar in eine Java-Webanwendung (War) via Webstart integriert.</title><link>http://www.knallisworld.de/blog/2010/09/04/howto-maven-wie-man-eine-ausfuhrbare-jar-in-eine-java-webanwendung-war-via-webstart-integriert/</link> <comments>http://www.knallisworld.de/blog/2010/09/04/howto-maven-wie-man-eine-ausfuhrbare-jar-in-eine-java-webanwendung-war-via-webstart-integriert/#comments</comments> <pubDate>Sat, 04 Sep 2010 17:06:20 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Allgemeines]]></category> <category><![CDATA[Empfehlungen]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[Technologie/IT]]></category> <category><![CDATA[Tipps]]></category> <category><![CDATA[jar]]></category> <category><![CDATA[maven]]></category> <category><![CDATA[war]]></category> <category><![CDATA[webstart]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1225</guid> <description><![CDATA[Die Situation Es bestehen zwei lauffÃ¤hige, fertige Projekte in Maven, welche beide auch vollwertige Artefakte bilden kÃ¶nnen. Zum einen die Webanwendung &#8212; nennen wir sie hier mal webportal &#8212; mit einem WAR-Artefakt, etwa fÃ¼r einen Tomcat. Ob das Artefakt als Snapshot oder Release gemacht wird, ob es nur generiert oder auch in ein Repository deployt [...]]]></description> <content:encoded><![CDATA[<h3>Die Situation</h3><p>Es bestehen zwei lauffÃ¤hige, fertige Projekte in Maven, welche beide auch vollwertige Artefakte bilden kÃ¶nnen.</p><p><a
href="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-18.52.33.png"></a>Zum einen die Webanwendung &#8212; nennen wir sie hier mal <em>webportal</em> &#8212; mit einem WAR-Artefakt, etwa fÃ¼r einen Tomcat. Ob das Artefakt als Snapshot oder Release gemacht wird, ob es nur generiert oder auch in ein Repository deployt wird, ist hierbei nicht von weiterer Bedeutung.<a
href="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Nuvola_mimetypes_java_jar.png"><img
class="size-full wp-image-1232 alignright" title="Nuvola_mimetypes_java_jar" src="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Nuvola_mimetypes_java_jar.png" alt="" width="128" height="128" /></a></p><p>Zum anderen die normale Clientanwendung &#8212; nennen wir sie doch einfach <em>userclient</em> &#8212; mit einem JAR-Artefakt. Wichtig ist natÃ¼rlich, dass hier eine startfÃ¤hige Main-Klasse vorhanden ist. Dies sollte jedoch der Regelfall sein, daher nur der formale Hinweis.</p><p>Zusammengefasst, und der Auftrag an dieses Howto ist also: Wie konfiguriert und erweitert man den Buildzyklus in welchem Projekt an welcher Stelle am geschicktesten, um auf einfachem Wege die JAR-Datei <em>userclient</em> in die Webanwendung <em>webportal</em> als Java Webstart zu integrieren. Dabei ist es hilfreich, wenn man via <em>pom.xml</em> (und natÃ¼rlich der Macht der Properties) die Versionen spezifizieren kann. Der gesamte Prozess von auswÃ¤hlen, signieren und ausliefern soll dabei automatisch und ohne weiteres Eingreifen des Entwicklers geschehen kÃ¶nnen. Idealerweise sollte das ganze auch optional sein &#8212; dazu gibt es dann mehr unter &#8220;Optimierungen und Verbesserungen&#8221;.</p><p><span
id="more-1225"></span></p><h3>Die Grundlagen</h3><p><a
href="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-18.54.54.png"><img
class="alignleft size-full wp-image-1234" title="Java 6 Webstart" src="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-18.54.54.png" alt="" width="327" height="145" /></a>Ich mÃ¶chte jetzt nicht viel Ã¼ber die Grundlagen verlieren, nur so viel sei gesagt. Aus Sicht von Maven ist die Konfiguration &#8220;nur&#8221; ein weiteres Plugin von vielen. Daraus ergibt sich natÃ¼rlich auch die MÃ¶glichkeit, via Properties oder Profilen die Konfiguration sehr dynamisch zu halten. Webstart ist eine Technik, die an sich nichts mit Maven zu tun hat. Man kann auch &#8220;hÃ¤ndisch&#8221; seine Jar-Datei Ã¼ber eine URL verfÃ¼gbar machen. Man muss dann jedoch alles selber und richtig machen: Versionisierung, Signierung und Deployment. Die Signierung ist gerade dann wichtig, wenn die Applikation erweiterte/volle Rechte benÃ¶tigt.</p><h3>Die MÃ¶glichkeiten</h3><p>Es gibt eine Reihe von Maven-Plugins, die einen unterschiedliche AnsÃ¤tze und LÃ¶sungen bieten.</p><p>Das <a
href="http://maven.apache.org/plugins/maven-jar-plugin/">Maven Jar Plugin</a> bietet etwa unter anderem die MÃ¶glichkeit, die Jar-Dateien zu signieren. Dies wÃ¤re jedoch nur die halbe Miete, da weder die Jar-Dateien bekannt noch auslieferbar sind. Auch das <a
href="http://mojo.codehaus.org/keytool-maven-plugin/">Keytool plugin</a> ist nicht vollstÃ¤ndig, denn es unterstÃ¼tzt zwar das Keystore gestÃ¼tzte signieren, aber auch nicht mehr. Wohl aber kÃ¶nnen diese Plugin als Basis fÃ¼r andere dienen.</p><p>Weitaus mehr Funktionen kann das <a
href="http://mojo.codehaus.org/webstart/webstart-maven-plugin/">Webstart Maven Plugin</a> bieten. Es gibt verschiedene Arten der Erzeugung der Jnlp-Datei und dem damit verbundenen Sammeln, Bestimmen und Signieren der AbhÃ¤ngigkeiten in Form weiterer Jars oder Classfiles. Es ist auch ein hilfreiches Plugin, wenn man aus einem Projekt heraus direkt Jnlp &amp; Ressourcen erzeugen will.</p><p>In diesem Howto ist aber vor allem ein Ziel von Relevanz:Â Die Variante mit dem Jnlp-Download-Servlet: das Goal <a
href="http://mojo.codehaus.org/webstart/webstart-maven-plugin/jnlp-download-servlet-mojo.html">webstart:jnlp-download-servlet</a>.<a
href="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/jnlp.gif"><img
class="alignright size-full wp-image-1235" title="jnlp" src="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/jnlp.gif" alt="" width="128" height="128" /></a></p><p>Dieses Goal erzeugt im Buildprozess ein weiteres Verzeichnis mit den Ressourcen des <em>userclients</em> und der dazugehÃ¶renden Jnlps. Ein spezielles Servlet Ã¼bernimmt die Auslieferungen.</p><h3>Die Konfiguration im Projekt <em>userclient</em></h3><p>Das Projekt muss und sollte nicht &#8220;wissen&#8221;, dass es Ã¼ber Webstart irgendwo eingebunden wird. Daher sind keine Ã„nderungen nÃ¶tig. Wohl aber muss bekannt sein, wie die aktuelle bzw. die gewÃ¼nschte Version ist und ggf. das Maven-Repository der Deploys.</p><h3>Die Konfiguration im Projekt <em>webportal</em></h3><p><a
href="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-18.52.33.png"><img
title="Maven" src="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-18.52.33.png" alt="" width="170" height="50" /></a>Das <em>webportal</em> muss hingegen durchaus von der Existenz des <em>userclients</em> wissen, denn jenes es soll ja in diese Webanwendung integriert werden. Die Konfiguration besteht im Wesentlichen aus drei Schritten: JnlpDownloadServlet-AbhÃ¤ngigkeit einfÃ¼gen, Servlet in der web.xml registrieren und Build-Plugin in der pom.xml konfigurieren.</p><h4>JnlpDownloadservlet (pom.xml)</h4><p>Das Maven-Paket findet sich unter dem Namen <em>com.sun.java.jnlp</em> bzw.Â <em>jnlp-servlet</em> wieder. Als einfache AbhÃ¤ngigkeit ist es damit im Classpath und beispielsweise in der web.xml verwendbar. <a
href="http://coffeebreaks.org/tmp/maven-staging/webstart/site/jnlp101.html">Weitere Informationen.</a></p><pre class="brush: xml; title: ; notranslate">
&lt;dependency&gt;
    &lt;groupId&gt;com.sun.java.jnlp&lt;/groupId&gt;
    &lt;artifactId&gt;jnlp-servlet&lt;/artifactId&gt;
    &lt;version&gt;5.0&lt;/version&gt;
&lt;/dependency&gt;
</pre><h4>web.xml</h4><p>Zur Basiskonfiguration muss nur das Servlet registriert und mit einem URL-Pattern verknÃ¼pft werden. Das klingt trivial, und das ist es auch.</p><pre class="brush: xml; title: ; notranslate">
&lt;servlet&gt;
  &lt;servlet-name&gt;JnlpDownloadServlet&lt;/servlet-name&gt;
  &lt;servlet-class&gt;jnlp.sample.servlet.JnlpDownloadServlet&lt;/servlet-class&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
  &lt;servlet-name&gt;JnlpDownloadServlet&lt;/servlet-name&gt;
  &lt;url-pattern&gt;/webstart/*&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;</pre><p>Damit wird die URL domain.tld/context/webstart an das Servlet gemappt. Dadurch kann das Servlet auch auf &#8220;virtuelle Dateianfragen&#8221; reagieren, etwa nach Jar-Dateien ohne Versions-Qualifkation (obwohl sie als versionierte Artefakte vorliegen).</p><p>Die Konfiguration lÃ¤sst noch einige Dinge erweitern, verÃ¤ndern und tweaken (siehe Absatz Optimierungen und Verbesserungen). FÃ¼r den Haupteinsatzzweck &#8211; das Bereitstellen einer oder mehrerer Jars via Webstart ist das jedoch vÃ¶llig ausreichend.</p><p><a
href="http://download.oracle.com/javase/6/docs/technotes/guides/javaws/developersguide/downloadservletguide.html">Weitere Informationen bei Oracle/Java</a>.Â Und <a
href="http://mojo.codehaus.org/webstart/webstart-maven-plugin/examples/advanced_jnlp_download_servlet.html">weitere Informationen bei Codehaus</a>.</p><h4>pom.xml</h4><p>Neben der AbhÃ¤ngigkeit des <em>JnlpDownloadServlet</em> muss das eigentlichen <em>Maven Webstart Plugin</em> fÃ¼r seinen Einsatz konfiguriert werden. Das Build-Plugin benÃ¶tigt zudem noch ein Template (fÃ¼r die Generierung der Jnlp), die wird weiter unten beschrieben.</p><p>Zur Grundkonfiguration gehÃ¶rt:</p><ol><li>Wo liegt das Jnlp-Template?</li><li>Wie heiÃŸt der Ausgabename der Jnlp?</li><li>Welche AbhÃ¤ngigkeiten gibt es fÃ¼r das Paket &#8212; hier wÃ¤re das der <em>userclient</em>?</li></ol><p>Des Weiteren lÃ¤sst sich bestimmen, ob etwa weitere (transitive) AbhÃ¤ngigkeiten mitausgeliefert werden sollen (bei Webstart ist das wohl meist sinnvoll), ob die Ressourcen signiert werden sollen und ob alles nochmals komprimiert deployt werden soll. <a
href="http://mojo.codehaus.org/webstart/webstart-maven-plugin/examples/advanced_jnlp_download_servlet.html">Weitere Informationen</a>.</p><p>Prinzipiell ist man weder auf eine AbhÃ¤ngigkeit pro Paket/JNLP beschrÃ¤nkt noch auf eine JNLP pro Plugin-Call geschweige denn des gesamten Projekts. Ãœber das KonfigurationsschlÃ¼sselwort <em>commonJarResources</em> kÃ¶nnen sogar gemeinsam verwendete AbhÃ¤ngigkeiten definiert werden.</p><p>Da der userclient erweiterte Rechte benÃ¶tigt, mÃ¼ssen alle Classfiles und Jars signiert werden. Wahlweise verwendet dafÃ¼r einen vorhandenen Keystore oder erstellt einen neuen. FÃ¼r diese Zwecke wird pro Buildvorgang ein neuer Keystore angelegt, damit signiert und danach wieder gelÃ¶scht.</p><p>Die Execution ist sinnigerweise <em>process-resources</em> mit dem Goal <em>jnlp-download-servlet</em>, denn streng genommen sind es ja nur weitere Ressourcen.</p><pre class="brush: xml; title: ; notranslate">
&lt;plugin&gt;
  &lt;groupId&gt;org.codehaus.mojo.webstart&lt;/groupId&gt;
  &lt;artifactId&gt;webstart-maven-plugin&lt;/artifactId&gt;
  &lt;executions&gt;
    &lt;execution&gt;
      &lt;phase&gt;process-resources&lt;/phase&gt;
      &lt;goals&gt;
        &lt;goal&gt;jnlp-download-servlet&lt;/goal&gt;
      &lt;/goals&gt;
    &lt;/execution&gt;
  &lt;/executions&gt;
  &lt;configuration&gt;
    &lt;outputDirectoryName&gt;webstart&lt;/outputDirectoryName&gt;
    &lt;excludeTransitive&gt;false&lt;/excludeTransitive&gt;
    &lt;jnlpFiles&gt;
      &lt;jnlpFile&gt;
        &lt;templateFilename&gt;template.vm&lt;/templateFilename&gt;
        &lt;outputFilename&gt;UserClient.jnlp&lt;/outputFilename&gt;
        &lt;jarResources&gt;
          &lt;jarResource&gt;
            &lt;groupId&gt;org.example.userclient&lt;/groupId&gt;
            &lt;artifactId&gt;example-userclient&lt;/artifactId&gt;
            &lt;version&gt;1.0.0&lt;/version&gt;
            &lt;mainClass&gt;org.example.userclient.Main&lt;/mainClass&gt;
          &lt;/jarResource&gt;
        &lt;/jarResources&gt;
      &lt;/jnlpFile&gt;
    &lt;/jnlpFiles&gt;
    &lt;outputJarVersions&gt;true&lt;/outputJarVersions&gt;
    &lt;verbose&gt;false&lt;/verbose&gt;
  &lt;/configuration&gt;
&lt;/plugin&gt;
</pre><p>Mit dieser Konfiguration werden die Jar-Dateien inkl. AbhÃ¤ngigkeiten in das Verzeichnis <em>webstart</em> gepackt &#8212; remember? wie in der <em>web.xml</em>. Das Template heiÃŸt <em>template.vm</em> und ist per default unter <em>src/main/jnlp</em> zu finden. Dies lieÃŸe sich mit <em>templateDirectory</em> Ã¼berrschreiben. Der Name der Jnlp lautet <em>UserClient.jnlp</em>, damit ergibt sich die spÃ¤tere Web-Url: <em>http://example.org/context/webstart/UserClient.jnlp</em>. Die eigentlichen Ressourcen und AbhÃ¤ngigkeiten werden in <em>jarResources/jarResource</em> definiert. Bei einfachen Projekten wird dies nur eine Ressource sein, theoretisch wÃ¤ren auch mehrere mÃ¶glich. Die Konfiguration Ã¤hnelt der der <em>dependencies</em>.</p><h4>template.vm</h4><p>Im Prinzip ist das Template eine unfertige Jnlp. Sie wird durch das Maven Plugin mit den endgÃ¼ltigen Daten befÃ¼llt. Da bereits die pom.xml Ã¼ber einige Informationen wie Projektnamen, -beschreibung oder -url verfÃ¼gt, kÃ¶nnen so sehr einfach die Daten mit Ã¼bernommen werden. Man kann jedoch auch die Platzhalter entfernen &#8212; es ist eben nur ein Template.</p><p>Ein Beispiel kÃ¶nnte so aussehen:</p><pre class="brush: xml; title: ; notranslate">
&lt;jnlp spec=&quot;$jnlpspec&quot; codebase=&quot;$$codebase&quot;&gt;
  &lt;information&gt;
    &lt;title&gt;$project.Name&lt;/title&gt;
    &lt;vendor&gt;$project.Organization.Name&lt;/vendor&gt;
    &lt;homepage href=&quot;$project.Url&quot;/&gt;
    &lt;description&gt;$project.Description&lt;/description&gt;
    &lt;icon href=&quot;../resources/images/logo.png&quot;/&gt;
    &lt;icon href=&quot;../resources/images/logo.png&quot; kind=&quot;splash&quot;/&gt;
#if($offlineAllowed)
&lt;offline-allowed/&gt;
#end
  &lt;/information&gt;
#if($allPermissions)
&lt;security&gt;
&lt;all-permissions/&gt;
&lt;/security&gt;
#end
  &lt;resources&gt;
    &lt;j2se version=&quot;$j2seVersion&quot;/&gt;
$dependencies
  &lt;/resources&gt;
  &lt;application-desc main-class=&quot;$mainClass&quot;&gt;&lt;/application-desc&gt;
&lt;/jnlp&gt;
</pre><p>Mehr oder weniger simpel, oder? Eventuell sollte man die Adressen zum Logo anpassen (oder entfernen); gerade die letzte Zeile erzeugt einen netten Splashscreen (Ladebild) wÃ¤hrend dem Starten und Laden der Anwendung. Das ist immer gerne willkommen.</p><p>Wichtig: Im Gegensatz zu dem einen oder anderen Beispiel ist es hierbei wichtig, dass die Variable $$codebase heiÃŸt. Nicht etwa ${codebase}. Insgesamt sind in der JNLP &#8212; sofern man sie Ã¼ber das Servlet ausliefert &#8212; folgende Variablen verfÃ¼gbar: codebase, name, context und site.</p><h3>Optimierungen und Verbesserungen</h3><p
style="text-align: center;"><a
href="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/IMG_0095.jpg"><img
class="aligncenter size-large wp-image-1236" title="IMG_0095" src="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/IMG_0095-1024x475.jpg" alt="" width="768" height="356" /></a></p><h4>&#8220;Einmal signiert, bitte!&#8221;</h4><p>Um <em>all-permissions</em> nutzen zu kÃ¶nnen, mÃ¼ssen die Jars und Classfiles signiert werden. Das erreicht man, indem man unter dem XML-Knoten <em>configuration</em> einen Knoten <em>sign</em> anlegt, etwa:</p><pre class="brush: xml; title: ; notranslate">
&lt;sign&gt;
	&lt;keystore&gt;keystore.ks&lt;/keystore&gt;
	&lt;keypass&gt;pass&lt;/keypass&gt;
	&lt;storepass&gt;pass&lt;/storepass&gt;
	&lt;alias&gt;userclient&lt;/alias&gt;
	&lt;validity&gt;36500&lt;/validity&gt;
	&lt;dnameCn&gt;UserClient&lt;/dnameCn&gt;
	&lt;dnameOu&gt;Software Development&lt;/dnameOu&gt;
	&lt;dnameO&gt;The Example Networks&lt;/dnameO&gt;
	&lt;dnameL&gt;Cologne&lt;/dnameL&gt;
	&lt;dnameSt&gt;NRW&lt;/dnameSt&gt;
	&lt;dnameC&gt;DE&lt;/dnameC&gt;
	&lt;verify&gt;false&lt;/verify&gt;
	&lt;keystoreConfig&gt;
		&lt;delete&gt;true&lt;/delete&gt;
		&lt;gen&gt;true&lt;/gen&gt;
	&lt;/keystoreConfig&gt;
&lt;/sign&gt;
</pre><p>Hierbei wird der Keystore lokal erzeugt (keystoreConfig/gen ist true) und nach Gebrauch wieder gelÃ¶scht (keystoreConfig/delete ist true). SelbstverstÃ¤ndlich kann man hier auch a) noch einen Keystore-Generator (s.o.) nutzen oder einen fest konfigurierten, dauerhaften. Dann sollte man natÃ¼rlich die Konfiguration entsprechend anpassen.</p><h4>&#8220;Bitte Optional&#8221; &#8212; alles in ein Profil</h4><p>Die Profile in der <em>pom.xml</em> sind ein mÃ¤chtiges Werkzeug, um bestimmte Features zusammenzufassen. So kÃ¶nnte man das gesamte Build-Plugin in ein Profil &#8212; etwa mit dem Namen <em>with-webstart</em> &#8212; ablegen.</p><p>Selbst die AbhÃ¤ngigkeit zum JnlpDownloadServlet kann man dorthin verlagern &#8212; wenn man daran denkt, dass in diesem Falle auch die web.xml dynamisch erstellt werden soll.</p><h4>Macht der Properties</h4><p>Man kann die Gesamtkonfiguration um einiges komfortabler machen, indem man Properties einfÃ¼hrt und deren Standardwerte &#8220;oben&#8221; in der <em>pom.xml</em> definiert. Gute Kandidaten hierbei wÃ¤ren: userclient.version, keystore.file, keystore.keypass, keystore.storepass und keystore.alias.</p><h4>Noch mehr in Sachen Jnlp</h4><p>In der <em>web.xml</em> kann des Weiteren das verhalten des JnpDownloadServlet verÃ¤ndert werden. Ein Ãœberblick Ã¼ber einige MÃ¶glichkeiten: Â Mimetypen Ã¤ndern, Dateiendungen Ã¤ndern, weitere Mappings anlegen, spezielles Debugging.</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2010/09/04/howto-maven-wie-man-eine-ausfuhrbare-jar-in-eine-java-webanwendung-war-via-webstart-integriert/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>MacOS X Security</title><link>http://www.knallisworld.de/blog/2010/06/01/macos-x-security/</link> <comments>http://www.knallisworld.de/blog/2010/06/01/macos-x-security/#comments</comments> <pubDate>Mon, 31 May 2010 23:17:36 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Empfehlungen]]></category> <category><![CDATA[Leseempfehlungen]]></category> <category><![CDATA[MacOS X]]></category> <category><![CDATA[Technologie/IT]]></category> <category><![CDATA[Tipps]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1083</guid> <description><![CDATA[Boah, was fÃ¼r ein Artikel. Geht zusammengefasst um das Sicherheitskonzept von MacOS X, teilweise im direkten Vergleich zu Windows. Unter anderem auch mit der These: Der geringe Marktanteil von Mac OS X ist nicht Schuld an kaum Malware. Nicht Ã¼beraus technisch Ã¼berladen, also sehr verstÃ¤ndlich (auf deutsch) erklÃ¤rt. Es sind zu viele Informationen auf einmal [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://www.macmark.de/osx_security.php#scheinargument_marktanteil">Boah, was fÃ¼r ein Artikel.</a> Geht zusammengefasst um das Sicherheitskonzept von MacOS X, teilweise im direkten Vergleich zu Windows. Unter anderem auch mit der These: Der geringe Marktanteil von Mac OS X ist nicht Schuld an kaum Malware.</p><p>Nicht Ã¼beraus technisch Ã¼berladen, also sehr verstÃ¤ndlich (auf deutsch) erklÃ¤rt.</p><p>Es sind zu viele Informationen auf einmal gewesen, aber beim ersten Durchlesen sind mir keine Fehler aufgefallen. Einzig allein den Passus, dass &#8220;Mac OS X&#8221; in groÃŸen Teilen offen lÃ¤ge, finde ich unglÃ¼cklich formuliert. Der Autor meinte sicher, dass viele Komponenten (wie das in dem Kontext genannte Samba) offen sind und von Apple dort auch genutzt werden.</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2010/06/01/macos-x-security/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Context Affair</title><link>http://www.knallisworld.de/blog/2010/04/28/context-affair/</link> <comments>http://www.knallisworld.de/blog/2010/04/28/context-affair/#comments</comments> <pubDate>Wed, 28 Apr 2010 19:04:34 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Entwicklung]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[Kurz notiert]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Technik]]></category> <category><![CDATA[Tipps]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1022</guid> <description><![CDATA[Bei Spring ist die globale Einheit in der Konfiguration der so genannte ApplicationContext. Dieser Context ist etwa ein Container im Applicationserver (beispielsweiseÂ web.xml). Soweit so gut. TatsÃ¤chlich ist der WebApplicationContext eine Spezialisierung des oben genannten ApplicationContext &#8212; und zustÃ¤ndig fÃ¼r Webanwendungen. Da ein Servlet die Steuerung im Applicationserver Ã¼bernimmt, benÃ¶tigt der Spring-Context ein DispatcherServlet. Damit [...]]]></description> <content:encoded><![CDATA[<p>Bei <a
href="http://www.springsource.org/about">Spring</a> ist die globale Einheit in der Konfiguration der so genannte <em>ApplicationContext</em>. Dieser Context ist etwa ein Container im Applicationserver (beispielsweiseÂ <em>web.xml</em>). Soweit so gut.</p><p>TatsÃ¤chlich ist der <em>WebApplicationContext</em> eine Spezialisierung des oben genannten ApplicationContext &#8212; und zustÃ¤ndig fÃ¼r Webanwendungen. Da ein Servlet die Steuerung im Applicationserver Ã¼bernimmt, benÃ¶tigt der Spring-Context ein <em>DispatcherServlet</em>. Damit ist die &#8220;Verbindung&#8221; User-&gt;Server-&gt;Spring geschaffen. Soweit so gut.</p><p>Konfiguriert man das DispatcherServlet etwa &#8211; sinnigerweise &#8211; mit dem Namen&#8221;dispatcher&#8221;, dann sucht Spring standardgemÃ¤ÃŸ nach einer <em>dispatcher-servlet.xml</em>. Diese XML-Konfigurationsdatei kann Ã¤hnlich der applicationContext.xml (u.Ã¤.) ganz normale Bean-Konfigurationen enthalten. Interessant ist dabei, dass dabei ein zusÃ¤tzlicher ServletContext erstellt wird. Das hat zwei Auswirkungen:</p><ol><li>Beans aus dem ServletContext sind nicht im ApplicationContext verfÃ¼gbar</li><li>Annotations-gestÃ¼tzte Konfigurationen mÃ¼ssen jeweilse in beiden Contexten konfiguriert, also aktiviert, werden</li></ol> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2010/04/28/context-affair/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Shortcut of the week</title><link>http://www.knallisworld.de/blog/2010/04/26/shortcut-of-the-week/</link> <comments>http://www.knallisworld.de/blog/2010/04/26/shortcut-of-the-week/#comments</comments> <pubDate>Mon, 26 Apr 2010 18:48:37 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Empfehlungen]]></category> <category><![CDATA[Technologie/IT]]></category> <category><![CDATA[Tipps]]></category> <category><![CDATA[Video]]></category> <category><![CDATA[youtube]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1020</guid> <description><![CDATA[Das ursprÃ¼ngliche Problem: Ich habe eine URL zu einem MP4-Video, welches der Safari sofort abspielen will. Allerdings will ich das Video erst spÃ¤ter gucken, also speichern. Hm, dumme Sache. Dem Link folgen von der Â ursprÃ¼nglichen Seite ging aus bestimmten technischen GrÃ¼nden nicht &#8212; und ein Dokument/Seiten speichern scheint zu mindestens nicht zu funktionieren, so [...]]]></description> <content:encoded><![CDATA[<p>Das ursprÃ¼ngliche Problem: Ich habe eine URL zu einem MP4-Video, welches der Safari sofort abspielen will. Allerdings will ich das Video erst spÃ¤ter gucken, also speichern. Hm, dumme Sache. Dem Link folgen von der Â ursprÃ¼nglichen Seite ging aus bestimmten technischen GrÃ¼nden nicht &#8212; und ein Dokument/Seiten speichern scheint zu mindestens nicht zu funktionieren, so lange das Video noch lÃ¤dt.</p><p>Ãœberraschenderweise ist es einfacher, als man denkt: Das Safari-Downloads-Fenster nimmt die Tastenkombination ï£¿+V fÃ¼r EinfÃ¼gen an &#8212; dementsprechend auch jegliche Drag &#8216;n&#8217; Drop Aktionen, welche eine URL als Objekt haben.</p><p>Kurzer Gegenscheck: Nope, Firefox kann das nicht. <img
src='http://www.knallisworld.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2010/04/26/shortcut-of-the-week/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>iPhone Webapps &#8211; Autokorrektur komplett deaktivieren</title><link>http://www.knallisworld.de/blog/2010/04/08/iphone-webapps-autokorrektur-komplett-deaktivieren/</link> <comments>http://www.knallisworld.de/blog/2010/04/08/iphone-webapps-autokorrektur-komplett-deaktivieren/#comments</comments> <pubDate>Thu, 08 Apr 2010 19:36:04 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Entwicklung]]></category> <category><![CDATA[Technik]]></category> <category><![CDATA[Tipps]]></category> <category><![CDATA[Web]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1000</guid> <description><![CDATA[FÃ¼r Webapps, also HTML-Seiten, gibt in speziellen Sitationen wie Loginformulare Problemen mit der AutovervollstÃ¤ndigung bzw. -korrektur des iPhone OS. FÃ¼r input-Tags gibt es neben dem Attribut autocomplete=&#8221;off&#8221; (unterstÃ¼tzt bspw. durch den Firefox) noch zwei weitere Attribute: autocorrect=&#8221;off&#8221; &#8211; die Autokorrektur abschalten autocapitalize=&#8221;off&#8221; &#8212; die Auto-GroÃŸ/Kleinschreibung-Korrektur abschalten Alle drei Attribute zusammen schalten auf iPhone/iPad/iPad sÃ¤mtliche KorrekturvorschlÃ¤ge [...]]]></description> <content:encoded><![CDATA[<p>FÃ¼r Webapps, also HTML-Seiten, gibt in speziellen Sitationen wie Loginformulare Problemen mit der AutovervollstÃ¤ndigung bzw. -korrektur des iPhone OS.</p><p>FÃ¼r <em>input</em>-Tags gibt es neben dem Attribut <em>autocomplete=&#8221;off&#8221;</em> (unterstÃ¼tzt bspw. durch den Firefox) noch zwei weitere Attribute:</p><ul><li><em>autocorrect=&#8221;off&#8221; </em>&#8211; die Autokorrektur abschalten</li><li><em>autocapitalize=&#8221;off&#8221;</em> &#8212; die Auto-GroÃŸ/Kleinschreibung-Korrektur abschalten</li></ul><p>Alle drei Attribute zusammen schalten auf iPhone/iPad/iPad sÃ¤mtliche KorrekturvorschlÃ¤ge ab.</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2010/04/08/iphone-webapps-autokorrektur-komplett-deaktivieren/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Featurities meets Fallstrick: Die Spring Security 3.0 Konfigurationsodyssey</title><link>http://www.knallisworld.de/blog/2010/01/25/featurities-meets-fallstrick-die-spring-security-3-0-konfigurationsodyssey/</link> <comments>http://www.knallisworld.de/blog/2010/01/25/featurities-meets-fallstrick-die-spring-security-3-0-konfigurationsodyssey/#comments</comments> <pubDate>Mon, 25 Jan 2010 08:56:43 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Java]]></category> <category><![CDATA[Konfiguration]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Technik]]></category> <category><![CDATA[Technologie/IT]]></category> <category><![CDATA[Tipps]]></category> <category><![CDATA[security]]></category> <category><![CDATA[tomcat]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=944</guid> <description><![CDATA[Mit dem Majorrelease 3.0 wurde dem Modul Spring Security eine Menge von neuen Features angeignet. Spring Security ist die Modulkomposition, welches fÃ¼r das Java Framework Spring quasi die gesamte Authentifizierung, Autorisierung, Legitimierung jedwegiger Art ermÃ¶glicht. Leider wurden mit dem Release 2.x auf 3.0 eine Reihe von API-Changes vollzogen. Zugegeben, die waren auch sicher alle sinnvoll, [...]]]></description> <content:encoded><![CDATA[<p>Mit dem Majorrelease 3.0 wurde dem Modul Spring Security eine Menge von neuen Features angeignet. Spring Security ist die Modulkomposition, welches fÃ¼r das Java Framework Spring quasi die gesamte Authentifizierung, Autorisierung, Legitimierung jedwegiger Art ermÃ¶glicht.<img
class="alignright" src="http://www.springsource.com/sites/all/themes/spring09/logo.png" alt="" width="264" height="46" /></p><p>Leider wurden mit dem Release 2.x auf 3.0 eine Reihe von API-Changes vollzogen. Zugegeben, die waren auch sicher alle sinnvoll, weil Komponenten wie die Authentifizierung weiterÂ geteilt wurden und man somit wesentlich flexibler ist, neue Anforderungen zu ermÃ¶glichen (Baukastenprinzip). Aber die Dokumentation ist &#8211; gesamtheitlich betrachtet &#8211; irgendwie immer noch mies und oft nicht aktualisiert. Oder man findet im Internet einfach nur (alte) Beispiele.</p><p><img
class="alignleft" src="http://www.smileygarden.de/smilie/Crazy/65.gif" alt="" width="95" height="50" /></p><h3>Die http-Direktive</h3><p>Im Namespace von Spring Security existiert das Tagelement http, mit welchem man kurze, knappe und verstÃ¤ndliche Konfigurationen anlegen kann. Der Vorteil liegt klar auf der Hand: Man muss nicht alle Beans, Listener und Provider anlegen, denn das geschieht automatisch. Tja, wÃ¤ren da nicht ein paar EinschrÃ¤nkungen in der Funktionsvielfalt.</p><h3>Konkretes Beispiel: Remember Me</h3><p>Just wurde das <a
href="http://www.springsource.org/node/2280">Minor-Release 3.0.1 verÃ¶ffentlicht</a>, und nur wenige Tage spÃ¤ter zu erfahren, dass <a
href="http://forum.springsource.org/showthread.php?p=278747#post278747">Remember Me kaputt sei</a>. Egal, fahren wir erstmal weiter mit 3.0.0.</p><p>Laut Dokumentation ist es am einfachsten, wenn man die Direktive remember-me (Security Namespace) innerhalb der http-Direktive (Security Namespace) verwendet. Ohne irgendeine Angabe wird ein stinknormales, Cookie basiertes Tokenverfahren ohne (echten) privaten SchlÃ¼ssel verwendet. Reicht fÃ¼r den ersten Einsatz erstmal auf, soll ja erstmal funktionieren.</p><p><strong>FehlermÃ¶glichkeit 1a: Man loggt sich ein, und es passiert nichts (kein &#8220;RememberMe&#8221;-Cookie).</strong><br
/> LÃ¶sung: Wenn man einen eigenen Auth-Filter einsetzt, muss man diesem auch den RememberMe-Service &#8220;setten&#8221;. AuÃŸerdem muss der SecurityChainFilter (web.xml!) auch auf die login-Seite verweisen. Es dÃ¼rfen auch keine Filter bei der Konfigurierung von intercepted Urls (speziell hier: login, logout) gemacht werden.</p><p><strong>FehlermÃ¶glichkeit 1b: Es passiert noch immer nichts?</strong><br
/> LÃ¶sung: Vielleicht wurde vergessen, einen Parameternamen fÃ¼r den Request zu setzen. Der Standardname ist ein typischer Springname, der natÃ¼rlich unschÃ¶n ist. Und den kann man nicht Ã¼ber die RememberMe-Direktive setzen, also muss man eh einen eigenen Service definieren. BÃ¤m. Referenzierung geht dann zwar noch, aber fÃ¼r mehr ist die RememberMe-Direktive dann nicht mehr zu gebrauchen.</p><p><strong>FehlermÃ¶glichkeit 2a: Man besucht die Seite ohne Login, aber mit Cookie &#8211; und die Loginseite kommt (Log sagt kein gÃ¼ltiger Auth).</strong><br
/> LÃ¶sung: Man kann der Log trauen, wenn sie zwar beim Einloggen nun einen Token ablegt (kann man zum Beispiel sehr einfach mit <a
href="https://addons.mozilla.org/de/firefox/addon/573">diesem Firefox-Addon</a> inkl. Editor(!) verifizieren), dieses aber beim erneuten Besuchen der Seite (bzw. ohne JSPSESSION-Cookie) nicht verwendet bzw. wird nicht erkannt. Schlussendlich half u.a. das Umbenennen der Userservices-Bean in &#8220;userService&#8221;. AuÃŸerdem sollte die Loginseite keinen Filter/Access haben (s.o.) Lieber 2x prÃ¼fen!</p><p><strong>FehlermÃ¶glichkeit 2b: Es erscheint eine Ausnahme, dass der Key falsch sei.</strong><br
/> LÃ¶sung: Dazu muss man wissen: Sobald Â man eine individualisierte RememberMe-Konfiguration nutzt, wird auch der Key nicht mehr vernÃ¼nftig auf alle Komponenten (Provider, Filter, Manager) gesetzt. Beim Anlegen wird also der eigene Key verwendet, beim Auslesen der Standardkey. Yes! (s.o.)</p><p><strong>FehlermÃ¶glichkeit 3: Man besucht die Seite ohne Login, aber mit Cookie &#8211; aber wie in 2 nur die Loginseite.</strong><br
/> LÃ¶sung: Im Logger/Debugger kann man nun feststellen, dass zwar das Cookie gefunden wurde, das Token gefunden und validiert wurde aber dann keine Rechte existieren &#8211; aha? Wahrscheinlich fehlt im Provider noch ein zusÃ¤tzliches Setting der Komponenten. Am besten von RememberMe Service/Filter/Provider jeweils alle mÃ¶glichen Properties durchgehen. Jaja, wie gesagt.. <img
src='http://www.knallisworld.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p><p><strong>FehlermÃ¶glichkeit 4: Das Ausloggen (beispielsweise logout.html) hat nach Aktivierung von Rememberme plÃ¶tzlich keine Auswirkungen mehr.</strong><br
/> LÃ¶sung: Zwar wird die Seite gefunden, aber es wird kein &#8220;Logout&#8221; gemacht. Auch hier sollte man prÃ¼fen, ob ein SecurityChainFilter (web.xml) auch fÃ¼r die logout-Seite greift.</p><p><strong>FehlermÃ¶glichkeit 5: Das Besuchen der Seite wirft einen Fehler (ggf. &#8220;mit weiÃŸer Seite&#8221;), dass keine neue Session erstellt werden kann.</strong><br
/> LÃ¶sung: Richtig, nach einem Request ist ja dann auch zu spÃ¤t. Das Attribut create-session in der Direktive http sollte daher auf &#8220;ifRequeried&#8221; gestellt sein.</p><h3>Fazit:</h3><ul><li>SecurityChainFilter immer prÃ¼fen</li><li>Intercepted Urls prÃ¼fen</li><li>RememberMe-Direktive innerhalb der http-Direktive ist quasi abgesehen von der services-ref unbrauchbar.</li></ul><h3>Anmerkung:</h3><p>NatÃ¼rlich kann man sich das Problem mit den SecurityChains vom Hals schaffen, indem man stupide ein /* filtert. Das hat jedoch zur Auswirkung, das Spring Security auch jeden verdammten Request anguckt; bei zusÃ¤tzlichen (statischen) Inhalten wie Javascript, Stylesheets, Bildern, Flash u.Ã¤. ist das ein Overhead, der unnÃ¶tig ist.</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2010/01/25/featurities-meets-fallstrick-die-spring-security-3-0-konfigurationsodyssey/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>HTML5 &amp; Forms</title><link>http://www.knallisworld.de/blog/2009/12/30/html5-forms/</link> <comments>http://www.knallisworld.de/blog/2009/12/30/html5-forms/#comments</comments> <pubDate>Wed, 30 Dec 2009 15:31:19 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Empfehlungen]]></category> <category><![CDATA[Technik]]></category> <category><![CDATA[Technologie/IT]]></category> <category><![CDATA[Tipps]]></category> <category><![CDATA[Web]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=933</guid> <description><![CDATA[Als ErgÃ¤nzung zu meinem XForms-Vortrag in der FH, hier ein paar nette Details zu den Neuerungen von HTML5/Forms. Jaja, was fÃ¼r eine Ãœberaschung. Okay, nach dem Tod von XHTML2 (und demnach die Integration von XForms in XHTML) auch wieder nicht&#8230; Ganz allgemein scheint Dive Into HTML5 aber auch empfehlenswert zu sein, wenn auch noch in [...]]]></description> <content:encoded><![CDATA[<p>Als ErgÃ¤nzung zu meinem XForms-Vortrag in der FH, hier ein <a
href="http://diveintohtml5.org/forms.html">paar nette Details zu den Neuerungen von HTML5/Forms</a>. Jaja, was fÃ¼r eine Ãœberaschung. Okay, nach dem Tod von XHTML2 (und demnach die Integration von XForms in XHTML) auch wieder nicht&#8230;</p><p>Ganz allgemein scheint D<a
href="http://diveintohtml5.org/">ive Into HTML5</a> aber auch empfehlenswert zu sein, wenn auch noch in Arbeit. Nett gemacht.</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2009/12/30/html5-forms/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Tomcat Webapp Deployment/Build</title><link>http://www.knallisworld.de/blog/2009/12/02/tomcat-webapp-deployment/</link> <comments>http://www.knallisworld.de/blog/2009/12/02/tomcat-webapp-deployment/#comments</comments> <pubDate>Wed, 02 Dec 2009 20:54:22 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Aktuelles]]></category> <category><![CDATA[Allgemeines]]></category> <category><![CDATA[Technik]]></category> <category><![CDATA[Technologie/IT]]></category> <category><![CDATA[Tipps]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=915</guid> <description><![CDATA[Im Zuge eins kommenden Artikels/Howto Ã¼ber Webapp Deployment/Build suche ich noch bestehende LÃ¶sungen, gerne auch Scripts a la Ant. Auf letzterem basiert auch meine bisherige Vorgehensweise.. Update: Inkl. dem Buildprozess.]]></description> <content:encoded><![CDATA[<p>Im Zuge eins kommenden Artikels/Howto Ã¼ber Webapp Deployment/Build suche ich noch bestehende LÃ¶sungen, gerne auch Scripts a la Ant. Auf letzterem basiert auch meine bisherige Vorgehensweise..</p><p>Update: Inkl. dem Buildprozess.</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2009/12/02/tomcat-webapp-deployment/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Emoij auf dem iPhone</title><link>http://www.knallisworld.de/blog/2009/11/14/emoij-auf-dem-iphone/</link> <comments>http://www.knallisworld.de/blog/2009/11/14/emoij-auf-dem-iphone/#comments</comments> <pubDate>Sat, 14 Nov 2009 20:03:21 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Allgemeines]]></category> <category><![CDATA[Tipps]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=911</guid> <description><![CDATA[Siehe: http://www.waterworld.com.hk/en/spell_number_easter_egg (die alte Zeichenfolge funktioniert nicht mehr).]]></description> <content:encoded><![CDATA[<p>Siehe: http://www.waterworld.com.hk/en/spell_number_easter_egg</p><p>(die alte Zeichenfolge funktioniert nicht mehr).</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2009/11/14/emoij-auf-dem-iphone/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Ersatz fÃ¼r Thawte (personal e-mail certificates)</title><link>http://www.knallisworld.de/blog/2009/11/03/ersatz-fur-thawte-personal-e-mail-certificates/</link> <comments>http://www.knallisworld.de/blog/2009/11/03/ersatz-fur-thawte-personal-e-mail-certificates/#comments</comments> <pubDate>Tue, 03 Nov 2009 18:55:15 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Aktuelles]]></category> <category><![CDATA[Allgemeines]]></category> <category><![CDATA[Empfehlungen]]></category> <category><![CDATA[Sicherheit]]></category> <category><![CDATA[Technologie/IT]]></category> <category><![CDATA[Tipps]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=907</guid> <description><![CDATA[Kleine Randnotiz und Hinweis fÃ¼r diejenigen, die auch eine Alternative fÃ¼r Thawte suchen &#8211; zur Erinnerung: Die kostenlosen E-Mail-Zertifikate bzw. der Dienst dafÃ¼r lÃ¤uft in wenigen Tagen ab. Eine Alternative ist TrustCenter mit seinem Angebot TC Internet ID. Auch dies ist ein E-Mail-Adressen basiertes und kostenloses Zertifikat &#8211; und dieses PKI-Zertifikat ist auch beim &#8220;Rest&#8221; [...]]]></description> <content:encoded><![CDATA[<p>Kleine Randnotiz und Hinweis fÃ¼r diejenigen, die auch eine Alternative fÃ¼r Thawte suchen &#8211; zur Erinnerung: Die kostenlosen E-Mail-Zertifikate bzw. der Dienst dafÃ¼r lÃ¤uft in wenigen Tagen ab.</p><p>Eine Alternative ist TrustCenter mit seinem Angebot <a
href="http://www.trustcenter.de/products/tc_internet_id.htm">TC Internet ID</a>. Auch dies ist ein E-Mail-Adressen basiertes und kostenloses Zertifikat &#8211; und dieses PKI-Zertifikat ist auch beim &#8220;Rest&#8221; installiert und bekannt.</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2009/11/03/ersatz-fur-thawte-personal-e-mail-certificates/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
