<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2095830728962729389</id><updated>2012-02-16T10:54:36.612-08:00</updated><title type='text'>Venturing in the World of Web Applications</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-9146007766127728266</id><published>2008-07-28T06:54:00.000-07:00</published><updated>2008-07-28T07:36:25.687-07:00</updated><title type='text'>Bonjour Robert B3302!</title><content type='html'>Aha, there we go!  Finally our Tomcat Server was able to say Bonjour Robert!  Well, not quite, since Robert's first name is actually Robert B3302 but hey who would like their name not spelled entirely?&lt;br /&gt;&lt;br /&gt;So how did we get there?&lt;br /&gt;&lt;br /&gt;Well any HTTP Servlet should implement the following methods:&lt;br /&gt;&lt;br /&gt;doGet(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;doPost (HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;&lt;br /&gt;Whenever a GET or POST request is sent to the server from the &lt;a href="http://en.wikipedia.org/wiki/HTTP"&gt;HTTP&lt;/a&gt; Client, either the doGet or doPost method is triggered.  We can then use the request and response parameters to treat incoming information and return the results.&lt;br /&gt;&lt;br /&gt;This looks a bit like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Enumeration headers = request.getHeaderNames();&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        String message = new String("");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        message += "Bonjour " +request.getHeader("First_Name")+"!\n";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Writer w = response.getWriter();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        w.write(message);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    } &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This extracts the value of the "First_Name" header from the GET request and sends the response "Bonjour &lt;first_name&gt;!"&lt;br /&gt;&lt;br /&gt;Now how are we going to make sure the first name of Robert is present in this "First_Name" header.  Well since Robert &lt;/first_name&gt;&lt;first_name&gt;identified himself with his eID card, the informations of his certificate are set as &lt;a href="http://en.wikipedia.org/wiki/Environment_variable"&gt;environment variables&lt;/a&gt; on the apache server.  There is a &lt;a href="http://en.wikipedia.org/wiki/Common_Gateway_Interface"&gt;CGI&lt;/a&gt; script called "printenv" in any apache server that gives the current environment variables and their value.  If we connect in SSL on our proxy and trigger this script ( https://localhost/cgi-bin/printenv ), here is what we get:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;DOCUMENT_ROOT="/usr/local/apache2/htdocs"&lt;br /&gt;GATEWAY_INTERFACE="CGI/1.1"&lt;br /&gt;HTTPS="on"&lt;br /&gt;HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"&lt;br /&gt;HTTP_ACCEPT_CHARSET="ISO-885&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;9-1,utf-8;q=0.7,*;q=0.7"&lt;br /&gt;HTTP_ACCEPT_ENCODING="gzip,deflate"&lt;br /&gt;HTTP_ACCEPT_LANGUAGE="en-us,en;q=0.5"&lt;br /&gt;HTTP_CERTIFICATE_INFO="/C=BE/CN=Robert SPECIMEN (Authentication)/SN=SPECIMEN/GN=Robert B3302/serialNumber=71717100052"&lt;br /&gt;HTTP_CERTIFICATE_NAME="Robert SPECIMEN (Authentication)"&lt;br /&gt;HTTP_CONNECTION="keep-alive"&lt;br /&gt;HTTP_COUNTRY_CODE="BE"&lt;br /&gt;HTTP_HOST="192.168.212.128"&lt;br /&gt;HTTP_KEEP_ALIVE="300"&lt;br /&gt;HTTP_NATIONAL_REGISTER="71717100052"&lt;br /&gt;HTTP_USER_AGENT="Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1"&lt;br /&gt;HTTP_USER_NAME="(null)"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;HTTP_USER_SURNAME="(null)"&lt;br /&gt;PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin"&lt;br /&gt;QUERY_STRING=""&lt;br /&gt;REMOTE_ADDR="192.168.212.1"&lt;br /&gt;REMOTE_PORT="51616"&lt;br /&gt;REQUEST_METHOD="GET"&lt;br /&gt;REQUEST_URI="/cgi-bin/printenv"&lt;br /&gt;SCRIPT_FILENAME="/usr/local/apache2/cgi-bin/printenv"&lt;br /&gt;SCRIPT_NAME="/cgi-bin/printenv"&lt;br /&gt;SERVER_ADDR="192.168.212.128"&lt;br /&gt;SERVER_ADMIN="you@example.com"&lt;br /&gt;SERVER_NAME="192.168.212.128"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;SERVER_PORT="443"&lt;br /&gt;SERVER_PROTOCOL="HTTP/1.1"&lt;br /&gt;SERVER_SIGNATURE="&lt;address&gt;Apache/2.0.54 (Unix) mod_ssl/2.0.54+OCSP (1.0.8) OpenSSL/0.9.8g Server at 192.168.212.128 Port 443&lt;/address&gt;\n"&lt;br /&gt;SERVER_SOFTWARE="Apache/2.0.54 (Unix) mod_ssl/2.0.54+OCSP (1.0.8) OpenSSL/0.9.8g"&lt;br /&gt;SSL_CIPHER="DHE-RSA-AES256-SHA"&lt;br /&gt;SSL_CIPHER_ALGKEYSIZE="256"&lt;br /&gt;SSL_CIPHER_EXPORT="false"&lt;br /&gt;SSL_CIPHER_USEKEYSIZE="256"&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_A_KEY="rsaEncryption" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_A_SIG="sha1WithRSAEncryption" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_I_DN="/C=BE/CN=SPECIMEN Citizen CA/serialNumber=200501" &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_I_DN_C="BE" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_I_DN_CN="SPECIMEN Citizen CA" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_M_SERIAL="0100000000011AC9A7F30E" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_M_VERSION="3" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_S_DN="/C=BE/CN=Robert SPECIMEN (Authentication)/SN=SPECIMEN/GN=Robert B3302/serialNumber=71717100052" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_S_DN_C="BE" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_S_DN_CN="Robert SPECIMEN (Authentication)" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_S_DN_G="Robert B3302" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;CLIENT_S_DN_S="SPECIMEN" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_S_DN_serialNumber="71717100052" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_VERIFY="SUCCESS" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_V_END="Jun 27 10:53:24 2010 GMT" &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;SSL_CLIENT_V_START="Jun 27 10:53:24 2008 GMT" &lt;/span&gt;&lt;br /&gt;SSL_PROTOCOL="TLSv1"&lt;br /&gt;SSL_SERVER_A_KEY="rsaEncryption"&lt;br /&gt;SSL_SERVER_A_SIG="sha1WithRSAEncryption"&lt;br /&gt;SSL_SERVER_I_DN="/C=BE/ST=Belgium&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;/L=Wavre/O=Imexis/OU=eid.imexis/CN=jeango.imexis.net/emailAddress=jeangobert.decoster@imexis.net"&lt;br /&gt;SSL_SERVER_I_DN_C="BE"&lt;br /&gt;SSL_SERVER_I_DN_CN="jeango.imexis.net"&lt;br /&gt;SSL_SERVER_I_DN_Email="jeangobert.decoster@imexis.net"&lt;br /&gt;SSL_SERVER_I_DN_L="Wavre"&lt;br /&gt;SSL_SERVER_I_DN_O="Imexis"&lt;br /&gt;SSL_SERVER_I_DN_OU="eid.imexis"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;SSL_SERVER_I_DN_ST="Belgium"&lt;br /&gt;SSL_SERVER_M_SERIAL="F34F01731A03C4B7"&lt;br /&gt;SSL_SERVER_M_VERSION="1"&lt;br /&gt;SSL_SERVER_S_DN="/C=BE/ST=Belgium/L=Wavre/O=Imexis/OU=eid.imexis/CN=jeango.imexis.net/emailAddress=jeangobert.decoster@imexis.net"&lt;br /&gt;SSL_SERVER_S_DN_C="BE"&lt;br /&gt;SSL_SERVER_S_DN_CN="jeango.imexis.net"&lt;br /&gt;SSL_SERVER_S_DN_Email="jeangobert.decoster@imexis.net"&lt;br /&gt;SSL_SERVER_S_DN_L="Wavre"&lt;br /&gt;SSL_SERVER_S_DN_O="Imexis"&lt;br /&gt;SSL_SERVER_S_DN_OU="eid.imexis"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;SSL_SERVER_S_DN_ST="Belgium"&lt;br /&gt;SSL_SERVER_V_END="Jan 15 09:27:41 2014 GMT"&lt;br /&gt;SSL_SERVER_V_START="Jul 25 09:27:41 2008 GMT"&lt;br /&gt;SSL_SESSION_ID="AB9DEAC038C8A1F4625898D8141620FCEB596E1369E83ECAE76A704B8C23B0BA"&lt;br /&gt;SSL_VERSION_INTERFACE="mod_ssl/2.0.54+OCSP (1.0.8)"&lt;br /&gt;SSL_VERSION_LIBRARY="OpenSSL/0.9.8g" &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;As you can see there is a lot of information about the current SSL session.  The part highlighted in red is all information regarding the client that connected.  We can see that there is a variable containing robert's first name: SSL_CLIENT_S_DN_G&lt;br /&gt;&lt;/first_name&gt;&lt;br /&gt;&lt;first_name&gt;We can then use the RequestHeader primitive in the Apache configuration to add that information to a header we will call "First_Name":&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;RequestHeader set First_Name "%{SSL_CLIENT_S_DN_G}e"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;Now with our reverse proxy correctly configured, our tomcat server running with our implementation of doGet, let's see what happens.&lt;br /&gt;&lt;br /&gt;&lt;/first_name&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_THTfIClZUoY/SI3ZSQjFeOI/AAAAAAAAAI0/4MLXfOmS7EE/s1600-h/Picture+3.png"&gt;&lt;img style="cursor: pointer; width: 615px; height: 261px;" src="http://bp1.blogger.com/_THTfIClZUoY/SI3ZSQjFeOI/AAAAAAAAAI0/4MLXfOmS7EE/s400/Picture+3.png" alt="" id="BLOGGER_PHOTO_ID_5228073650150013154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yay!&lt;br /&gt;&lt;first_name&gt;&lt;br /&gt;&lt;br /&gt;&lt;/first_name&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-9146007766127728266?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/9146007766127728266/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=9146007766127728266' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/9146007766127728266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/9146007766127728266'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/bonjour-robert-b3302.html' title='Bonjour Robert B3302!'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_THTfIClZUoY/SI3ZSQjFeOI/AAAAAAAAAI0/4MLXfOmS7EE/s72-c/Picture+3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-2194558244497039957</id><published>2008-07-25T05:14:00.000-07:00</published><updated>2008-07-25T06:42:44.845-07:00</updated><title type='text'>What has kept me busy lately</title><content type='html'>&lt;span style="font-weight: bold;"&gt;It's been a while, hasn't it?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well I realize I haven't updated this blog a lot recently, but that's because I was working hard to get the first results towards "Bonjour Robert!"&lt;br /&gt;&lt;br /&gt;First thing first, the architecture has changed a bit compared to my first idea on how to say "Bonjour Robert!"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;From applet to Reverse Proxy architecture&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We figured out that the management of the smart card on the client's side was already done by firefox, through the registration of Belgian eID PKCS#11 module in the browser.  So the idea was to set up a reverse proxy that would ensure secure access to imexis' website http://www.imexis.net&lt;br /&gt;&lt;br /&gt;So this would consist of 3 steps&lt;br /&gt;&lt;br /&gt;1) install the reverse proxy&lt;br /&gt;2) configure the reverse proxy to map the access to www.imexis.net&lt;br /&gt;3) configure firefox and connect to the reverse proxy (which should result in an access to www.imexis.net)&lt;br /&gt;&lt;br /&gt;Well, step 1 was not really a piece of cake if you ask me.  First I wanted to install the proxy on my Mac, but I soon faced problems to compile the apache server and the openssl server (openssl is used to create self-signed certificates and private keys for the server).  After several attempts I decided to use a &lt;a href="http://en.wikipedia.org/wiki/Virtual_machine"&gt;Virtual Machine&lt;/a&gt; with a &lt;a href="http://en.wikipedia.org/wiki/Ubuntu"&gt;Ubuntu&lt;/a&gt; Linux &lt;a href="http://en.wikipedia.org/wiki/Linux_distribution"&gt;distribution&lt;/a&gt; on it.  This way it would be easier to have information on forums (running apache servers on Linux is a very common thing), and I would be sure not to have any compatibility issues. Moreover, the documentations I had available to me covered the case of a Linux installation.&lt;br /&gt;&lt;br /&gt;So I installed a program called &lt;a href="http://en.wikipedia.org/wiki/VMWare"&gt;VMWare&lt;/a&gt; that makes it possible to run my Virtual Machine, and installed Ubuntu (yeehaa, welcome to the Linux world).&lt;br /&gt;&lt;br /&gt;Next step was to follow the procedure found in the &lt;a href="http://www.uvcw.be/no_index/e-communes/dossier_eid/Belgian-eID%20Authentication-Reverse-Proxy-User-s-Guide-1.0.9.pdf"&gt;Belgian eID Authentication Reverse Proxy &lt;/a&gt;User's Guide.  The document may seem straightforward but it is important to understand every single step of it thoroughly.  This is of course what took me a while to realize.  It had already been 3 days since I first tried to install it on my Mac, and yet I hadn't progressed an inch with that installation.  It took me one more day to figure out how to get all the necessary components for Ubuntu, and to finish the compilation and installation of the apache and openssl server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Venturing in the World of Linux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I wanted to talk a bit about Ubuntu before I go on with this.  Since I spent a lot of time discovering all sorts of things with Linux and Ubuntu.&lt;br /&gt;&lt;br /&gt;First the most important thing to remember with Ubuntu is the &lt;a href="http://en.wikipedia.org/wiki/Apt-get"&gt;apt-get&lt;/a&gt; command.  If you need to install an application on your Operating System, like for example a text editor, or a &lt;a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection"&gt;GNU C Compiler&lt;/a&gt; you don't need to look it up on the internet (like you would for windows XP), there is probably a package made by its creator, that you can download and install simply by doing&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;apt-get install gcc&lt;/blockquote&gt;You don't need to do anything else, which is magical (and probably one of the reasons why people like Ubuntu so much).  There is also an application that provides a more graphical interface to apt-get which is called &lt;a href="http://en.wikipedia.org/wiki/Aptitude_%28program%29"&gt;aptitude&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I had used Linux before, but with a graphical interface, and at that time I didn't really use it in depth.  I still have a lot of things to discover of course, but it is really a pleasure to start with all this.  It can also be frustrating not to know how to do things but I hereby salute my friends who helped me out when I was lost, and also the internet community which is very active and contains zounds of useful informations.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configuring the proxy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let's get back to our reverse proxy :-)  So I had compiled and installed apache, now it was time to configure the beast, and that's also a tough task.  The documentation mentioned above contained all I needed of course, but in order to understand what I was doing, I used the apache documentation a lot.&lt;br /&gt;&lt;br /&gt;First thing, I had to configure the SSL part of apache (that enables secure connection).  This is all managed by an apache module named mod_ssl&lt;br /&gt;&lt;br /&gt;&lt;a href="http://httpd.apache.org/docs/2.0/mod/mod_ssl.html"&gt;http://httpd.apache.org/docs/2.0/mod/mod_ssl.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I then had to create the self-singned certificates by using openssl.  This is made in 3 steps:&lt;br /&gt;&lt;br /&gt;1) generate a private key for the server:&lt;br /&gt;&lt;br /&gt;This key will serve to encode outgoing information from the proxy, and can only be decoded by the public key (as I explained a few posts before)&lt;br /&gt;&lt;blockquote&gt; openssl genrsa -out server.key 1024&lt;/blockquote&gt;Openssl will create an 1024 bits RSA key.  You are then prompted by openssl to specify which &lt;a href="http://en.wikipedia.org/wiki/Hashing_algorithm"&gt;hashing algorithm&lt;/a&gt; will be used, as well as other options and specifications about the owner of the key.&lt;br /&gt;&lt;br /&gt;2) generate a certificate signing request&lt;br /&gt;&lt;br /&gt;A certificate needs to be signed in order to be accepted.  With our private key we can generate an signature request, that can then be sent to a &lt;a href="http://en.wikipedia.org/wiki/Certification_authority"&gt;Certificate Authority &lt;/a&gt;who will officially sign the certificate.  You can also sign it yourself, but in that case, whoever receives this certificate on his browser will be warned that it is not signed by a trusted source, and the user will be required to either accept or reject that certificate.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;openssl req -out req.csr -new -key server.key -sha1 days 2000&lt;br /&gt;&lt;/blockquote&gt;3) Self-sign the certificate&lt;br /&gt;&lt;br /&gt;Since this certificate will be used for testing, I don't really need to have it signed by a CA (I know I can trust myself =-)) so I can sign it myself this way&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;openssl x509 -in req.csr  -out server_cert.pem -req -signkey server.key -days 2000&lt;br /&gt;&lt;/blockquote&gt;Once that is done, I can then configure my apache server to use the server_cert.perm as a certificate, and use server.key as private key.&lt;br /&gt;&lt;br /&gt;Next step is then to configure the reverse proxy.  Without going into too many details, I can ask my reverse proxy to map incoming adresses to another adress I choose.  So if my apache server is called via https://www.jeango.com I can map the folder /imexis to http://www.imexis.net&lt;br /&gt;&lt;br /&gt;This way if someone goes to https://www.jeango.com/imexis he will actually see the page on www.imexis.net but this will be totally invisible to him.&lt;br /&gt;&lt;br /&gt;Amongst other things I had to configure, I had to include the &lt;a href="http://en.wikipedia.org/wiki/OCSP"&gt;OCSP&lt;/a&gt; access which is a protocol used to validate the status (valid, revoked, suspended, blocked) of the incoming certificates.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pains and Tribulations&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Needless to say this didn't happen with a snap of a finger, as a matter of fact I first had a lot of problems with the compilation of apache, and it took me a lot of time to understand every configuration of the proxy.  Then when I finally had this finished, the server wouldn't start in SSL mode, I found out that I had configured something twice in the files, which generated a conflict, but still it didn't work so I uninstalled everything, recompiled, re-installed, re-configured and today it finally works.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Identifying with eID&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now that our server is set up, it is still needed to configure firefox correctly, and for this, it is required to have installed the middleware for eID smartcards, and follow a procedure described in this document:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.be/search?q=firefox+eid&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a"&gt;http://www.google.be/search?q=firefox+eid&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The document says that when trying to access a server, the browser will automatically ask to insert the card in the reader if there is none, but here it doesn't work.  Instead I get a page saying that the SSL Handshake failed, I'll have to look into this.&lt;br /&gt;&lt;br /&gt;Anyways, after doing all this, I inserted Robert's ID card, typed in my browser the SSL adress of my apache server and magic happened, the browser asked me which certificate to use, then prompted for my PIN, and sure enough, I saw before my eyes the welcome page of our magnificent imexis website :D&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;So what's next?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well now I'll start playing with an &lt;a href="http://en.wikipedia.org/wiki/Apache_Tomcat"&gt;apache tomcat servlet&lt;/a&gt; and see how we can interact with the card to finally say "Bonjour Robert!".&lt;br /&gt;&lt;br /&gt;That's all for today ;) if you found the courage to read all this, send me a mail saying "bonjour robert!" (you should know my email, if you don't, well thanks for reading anyways :-))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-2194558244497039957?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/2194558244497039957/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=2194558244497039957' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/2194558244497039957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/2194558244497039957'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/what-has-kept-me-busy-lately.html' title='What has kept me busy lately'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-8376001952978251496</id><published>2008-07-11T07:45:00.000-07:00</published><updated>2008-07-11T08:21:45.341-07:00</updated><title type='text'>We're getting there</title><content type='html'>Today I walked through a first bit of the tutorial mentioned yesterday.  It uses the Sun PKCS Provider rather than the IAIK, but thanks to this I didn't have any problems doing things with my eID card yet :-)&lt;br /&gt;&lt;br /&gt;So what did I discover today:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) The application needs the PIN of the eID card in order to retrieve the &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://www.omii.ac.uk/docs/2.0.0/omii_2_user_guide/security/omii/what_is_keystore.htm"&gt;keystore&lt;/a&gt;&lt;span style="font-weight: bold;"&gt; from it.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I had first understood that the middleware is in charge of asking the PIN to the user whenever access is required on the card, but it appears that it is only when you try to sign a document using the eID certificate.  However, when trying to load the keystore, the card still requires a PIN, but the middleware does not take this in charge. My application will have to prompt the user for his PIN by itself.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) Java is not C&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sounds quite logical :-) But I had been used to program in C++ the last 5 years and some things you take for granted are just not the same between 2 different languages.&lt;br /&gt;&lt;br /&gt;- You can't pass parameters by adress in Java: I had been used with C to pass parameters using their adress in memory by declaring a function like this&lt;br /&gt;&lt;br /&gt;void myFunction(&amp;amp;myParameter)&lt;br /&gt;&lt;br /&gt;however Java doesn't allow this and I've had a couple of null pointer exceptions due to this :-)&lt;br /&gt;&lt;br /&gt;- if- statements in java only take boolean expressions: yup doing a "if(0)" doesn't work in java, you have to do "if(false)" which forces me to change the way I do things usually :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3) If you extract the private key from a card&lt;/span&gt;, you (of course) don't receive the key, however you receive an interface to it, so you can use the private key of the card in order to encrypt things with your own application.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4) This is what Robert's Keystore looks like:&lt;/span&gt;&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:78%;"&gt;Alias: Signature&lt;br /&gt;Certificate: [&lt;br /&gt;[&lt;br /&gt; Version: V3&lt;br /&gt; Subject: SERIALNUMBER=71717100052, GIVENNAME=Robert B3302, SURNAME=SPECIMEN, CN=Robert SPECIMEN (Signature), C=BE&lt;br /&gt; Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5&lt;br /&gt;&lt;br /&gt; Key:  Sun RSA public key, 1024 bits&lt;br /&gt; modulus: 111899004514677203975482680672457570043331903119364034993322459228336832793594157819803568047708327522971826323979035590293818486088844003602382173875129626305902858937460678602889653574636726434057504712532262721186297169714208939386549047411126558783930559439408311683949057257680413784877522799171531680927&lt;br /&gt; public exponent: 65537&lt;br /&gt; Validity: [From: Fri Jun 27 12:53:29 CEST 2008,&lt;br /&gt;              To: Sun Jun 27 12:53:29 CEST 2010]&lt;br /&gt; Issuer: SERIALNUMBER=200501, CN=SPECIMEN Citizen CA, C=BE&lt;br /&gt; SerialNumber: [    01000000 00011ac9 a806ad]&lt;br /&gt;&lt;br /&gt;Certificate Extensions: 7&lt;br /&gt;[1]: ObjectId: 2.16.840.1.113730.1.1 Criticality=false&lt;br /&gt;NetscapeCertType [&lt;br /&gt;  S/MIME&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;[2]: ObjectId: 2.5.29.35 Criticality=false&lt;br /&gt;AuthorityKeyIdentifier [&lt;br /&gt;KeyIdentifier [&lt;br /&gt;0000: D6 A5 FE 65 26 BF 28 6C   16 15 D7 FA 7E 3D DA 9F  ...e&amp;amp;.(l.....=..&lt;br /&gt;0010: A9 EE 7D 1D                                        ....&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;[3]: ObjectId: 2.5.29.31 Criticality=false&lt;br /&gt;CRLDistributionPoints [&lt;br /&gt; [DistributionPoint:&lt;br /&gt;    [URIName: http://crl.specimen-eid.belgium.be/eidc200501.crl]&lt;br /&gt;]]&lt;br /&gt;&lt;br /&gt;[4]: ObjectId: 1.3.6.1.5.5.7.1.3 Criticality=false&lt;br /&gt;Extension unknown: DER encoded OCTET string =&lt;br /&gt;0000: 04 0E 30 0C 30 0A 06 08   03 90 0E 07 01 05 02 01  ..0.0...........&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[5]: ObjectId: 2.5.29.15 Criticality=true&lt;br /&gt;KeyUsage [&lt;br /&gt; Non_repudiation&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;[6]: ObjectId: 2.5.29.32 Criticality=false&lt;br /&gt;CertificatePolicies [&lt;br /&gt; [CertificatePolicyId: [0.3.2062.7.1.1.402.1]&lt;br /&gt;[PolicyQualifierInfo: [&lt;br /&gt; qualifierID: 1.3.6.1.5.5.7.2.1&lt;br /&gt; qualifier: 0000: 16 29 68 74 74 70 3A 2F   2F 72 65 70 6F 73 69 74  .)http://reposit&lt;br /&gt;0010: 6F 72 79 2E 73 70 65 63   69 6D 65 6E 2D 65 69 64  ory.specimen-eid&lt;br /&gt;0020: 2E 62 65 6C 67 69 75 6D   2E 62 65                 .belgium.be&lt;br /&gt;&lt;br /&gt;]]  ]&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;[7]: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false&lt;br /&gt;AuthorityInfoAccess [&lt;br /&gt; [accessMethod: 1.3.6.1.5.5.7.48.2&lt;br /&gt;  accessLocation: URIName: http://certs.specimen-eid.belgium.be/belgiumrs.crt, accessMethod: 1.3.6.1.5.5.7.48.1&lt;br /&gt;  accessLocation: URIName: http://ocsp.specimen-eid.belgium.be]&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;]&lt;br /&gt; Algorithm: [SHA1withRSA]&lt;br /&gt; Signature:&lt;br /&gt;0000: 6E FF 99 0A 71 BB 84 A6   06 D1 04 A3 04 1F D3 18  n...q...........&lt;br /&gt;0010: 3F 01 50 9B 86 73 0C 5C   2E D7 5E E3 11 9C 5E 36  ?.P..s.\..^...^6&lt;br /&gt;0020: 6E B5 DD 0C 87 82 6A 0E   3A C7 1D F2 0D 22 15 48  n.....j.:....".H&lt;br /&gt;0030: 7E 15 5D 14 99 62 B1 B6   FC 69 2B DA C7 5C EE 8B  ..]..b...i+..\..&lt;br /&gt;0040: 12 83 E6 2D 76 51 BB 0C   DA DD 9C 2E 31 48 E9 50  ...-vQ......1H.P&lt;br /&gt;0050: 43 D4 6F CA 37 34 55 79   17 B7 67 6D 22 67 DB 47  C.o.74Uy..gm"g.G&lt;br /&gt;0060: 82 D5 B8 E8 0F B1 1D 7C   68 35 43 A9 B5 01 33 5D  ........h5C...3]&lt;br /&gt;0070: 08 A1 25 78 B8 2E EA 4E   00 82 F0 B3 E1 AC 1B 00  ..%x...N........&lt;br /&gt;0080: 19 64 AB 5F 6E 72 28 62   5B C8 EE 03 62 71 F8 34  .d._nr(b[...bq.4&lt;br /&gt;0090: 29 26 D0 9F 42 85 09 98   8A 25 D7 27 00 8B FA 33  )&amp;amp;..B....%.'...3&lt;br /&gt;00A0: D9 34 54 3F 91 0C DD DF   04 AC AE FE 8F A5 89 4E  .4T?...........N&lt;br /&gt;00B0: 36 29 97 F0 42 B3 AF 0F   57 7E C2 DF A9 38 34 80  6)..B...W....84.&lt;br /&gt;00C0: CA 4C 02 0A F5 77 A6 9D   03 F3 EA 00 46 B1 3D 84  .L...w......F.=.&lt;br /&gt;00D0: 1F 08 08 EE A5 5F 13 CF   C3 F9 26 CF 0D 53 0A 97  ....._....&amp;amp;..S..&lt;br /&gt;00E0: B2 03 B7 58 9B BF D9 28   FB 52 B7 3C 3A A1 01 12  ...X...(.R.&lt;:... 00F0: A8 9F 16 1B 2E 08 40 B7   E1 75 D3 A6 99 FA C4 55  ......@..u.....U  ] Private key: SunPKCS11-SmartCard RSA private key, 1024 bits (id 8, token object, sensitive, unextractable) Alias: CA Certificate: [ [   Version: V3   Subject: SERIALNUMBER=200501, CN=SPECIMEN Citizen CA, C=BE   Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5    Key:  Sun RSA public key, 2048 bits   modulus: 24309273447568538957156508466386268898415107335583551368823688961531705079858783447021374034717678833842586327744977882297899684641705067012968690088631174500351522865180182888170119129058775225366268794191985793208393299880134419639983160415259625386713053446067097986752764309316649169158468766774476967742379020065001838762054459624239706015643265240392612772679901414395230002154233213833013517108509388982200906819138940918447369151838771328362186158931798953602761192508322372556024064991148488514456745237140603698272392833864221074287313455535322067490438534891963751597500625651621237287559503514429481168119   public exponent: 65537   Validity: [From: Thu Dec 23 12:00:00 CET 2004,                To: Mon Jan 27 00:00:00 CET 2014]   Issuer: CN=SPECIMEN Belgium Root CA, C=BE   SerialNumber: [    11111111 11111111 11111111 11111115]  Certificate Extensions: 7 [1]: ObjectId: 2.16.840.1.113730.1.1 Criticality=false NetscapeCertType [    SSL CA    S/MIME CA    Object Signing CA]  [2]: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: D6 A5 FE 65 26 BF 28 6C   16 15 D7 FA 7E 3D DA 9F  ...e&amp;amp;.(l.....=.. 0010: A9 EE 7D 1D                                        .... ] ]  [3]: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 67 5C 8F 5D 98 A4 3C CC   C5 F6 1F 71 20 D3 86 0F  g\.]..&lt;....q ... 0010: 3D 1B 2F 35                                        =./5 ]  ]  [4]: ObjectId: 2.5.29.31 Criticality=false CRLDistributionPoints [   [DistributionPoint:      [URIName: http://crl.specimen-eid.belgium.be/belgium.crl] ]]  [5]: ObjectId: 2.5.29.32 Criticality=false CertificatePolicies [   [CertificatePolicyId: [0.3.2062.7.1.1.400.1] [PolicyQualifierInfo: [   qualifierID: 1.3.6.1.5.5.7.2.1   qualifier: 0000: 16 29 68 74 74 70 3A 2F   2F 72 65 70 6F 73 69 74  .)http://reposit 0010: 6F 72 79 2E 73 70 65 63   69 6D 65 6E 2D 65 69 64  ory.specimen-eid 0020: 2E 62 65 6C 67 69 75 6D   2E 62 65                 .belgium.be  ]]  ] ]  [6]: ObjectId: 2.5.29.15 Criticality=true KeyUsage [   Key_CertSign   Crl_Sign ]  [7]: ObjectId: 2.5.29.19 Criticality=true BasicConstraints:[ CA:true PathLen:0 ]  ]   Algorithm: [SHA1withRSA]   Signature: 0000: 2B 8A 4E 07 C9 B8 88 81   65 CD 65 5D 01 EF 08 8C  +.N.....e.e].... 0010: E4 88 BE 49 0A D6 32 08   A1 AB 0C 2C 40 8C F4 18  ...I..2....,@... 0020: FC A4 61 13 55 DE 02 C3   C2 F1 67 C3 6D 96 0C D6  ..a.U.....g.m... 0030: 13 F8 0B 27 C0 47 D1 ED   5D BF 79 C9 A4 0F 0F 3D  ...'.G..].y....= 0040: 57 07 CA D4 19 5F CD AF   FC 71 0F 9B 46 F3 F8 A4  W...._...q..F... 0050: 12 2F 4C 4D 72 8C 0D D8   63 80 A1 A5 02 59 9C E0  ./LMr...c....Y.. 0060: 1F 55 F6 85 B7 84 85 67   08 B2 EB 83 2E 92 37 5F  .U.....g......7_ 0070: 72 B9 30 AC DB D6 58 55   1F F0 DA D6 70 9E 8C C9  r.0...XU....p... 0080: D0 B6 20 05 EB A1 48 76   96 B9 AA 46 7B B1 4E A9  .. ...Hv...F..N. 0090: 83 C4 E5 01 B7 94 AC D0   E6 75 35 06 09 60 7E 9F  .........u5..`.. 00A0: 29 31 E7 07 6B B6 FB 6E   DC B8 45 61 47 D6 52 BC  )1..k..n..EaG.R. 00B0: F0 79 79 61 3D 12 AF 4D   E0 62 41 8B 61 C7 01 E1  .yya=..M.bA.a... 00C0: 23 FB 81 15 F5 CE FC 76   9D 8B 52 D7 5D 66 D2 0F  #......v..R.]f.. 00D0: C1 15 A8 D0 38 40 C5 3D   38 FF 46 57 0C E0 15 F2  ....8@.=8.FW.... 00E0: 36 75 F4 0D D0 EA C3 A5   D1 09 0E 7D 0E 40 89 CD  6u...........@.. 00F0: 1B 5E D5 3F 1F D2 7A 3B   B9 C3 CA E8 8E 44 8B 42  .^.?..z;.....D.B  ] Private key: null Alias: Root Certificate: [ [   Version: V3   Subject: CN=SPECIMEN Belgium Root CA, C=BE   Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5    Key:  Sun RSA public key, 2048 bits   modulus: 26691376432534724492914239230536419796245516068532173901583967047600268926599080494681481520702134118891565316669898570691114551706817351962178500667181029693650065893361463787785300509028117452231414940342359485172277604079140049287137596689084656358926439744495271507065982288770837970026835661043448496256726253647767817292995578739674090998624027230583215392405441418148657818976769620253079041070042952983293214469145330275436682586834300598436530165781418685318418982623744621632911090583722316269620253757229959960866058867588475478638980377832743068439889482014217721312571288986733070918469283356832727190777   public exponent: 65537   Validity: [From: Wed Aug 13 11:00:00 CEST 2003,                To: Mon Jan 27 00:00:00 CET 2014]   Issuer: CN=SPECIMEN Belgium Root CA, C=BE   SerialNumber: [    11111111 11111111 11111111 11111112]  Certificate Extensions: 6 [1]: ObjectId: 2.16.840.1.113730.1.1 Criticality=false NetscapeCertType [    SSL CA    S/MIME CA    Object Signing CA]  [2]: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 67 5C 8F 5D 98 A4 3C CC   C5 F6 1F 71 20 D3 86 0F  g\.]..&lt;....q ... 0010: 3D 1B 2F 35                                        =./5 ] ]  [3]: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 67 5C 8F 5D 98 A4 3C CC   C5 F6 1F 71 20 D3 86 0F  g\.]..&lt;....q ... 0010: 3D 1B 2F 35                                        =./5 ]  ]  [4]: ObjectId: 2.5.29.32 Criticality=false CertificatePolicies [   [CertificatePolicyId: [0.3.2062.9.6.1.31.1.1] [PolicyQualifierInfo: [   qualifierID: 1.3.6.1.5.5.7.2.1   qualifier: 0000: 16 2A 68 74 74 70 3A 2F   2F 72 65 70 6F 73 69 74  .*http://reposit 0010: 6F 72 79 2E 73 70 65 63   69 6D 65 6E 2D 65 69 64  ory.specimen-eid 0020: 2E 62 65 6C 67 69 75 6D   2E 62 65 2F              .belgium.be/  ]]  ] ]  [5]: ObjectId: 2.5.29.15 Criticality=true KeyUsage [   Key_CertSign   Crl_Sign ]  [6]: ObjectId: 2.5.29.19 Criticality=true BasicConstraints:[ CA:true PathLen:2147483647 ]  ]   Algorithm: [SHA1withRSA]   Signature: 0000: 2F CC F7 B0 2F 29 2B 00   5A 2C BC 31 5A 4A E5 20  /.../)+.Z,.1ZJ. 0010: 6B C8 06 09 4D 2F C9 1D   7E 6A 55 F4 D4 50 81 C5  k...M/...jU..P.. 0020: 75 49 DA DE 12 CD 14 A9   89 DB CA 16 8E E0 01 D3  uI.............. 0030: 85 2E E1 1F E6 61 76 61   BB 8E B1 E3 6C 19 A6 2C  .....ava....l.., 0040: 8F 82 99 0E 98 D1 8B 60   CE BB 3F 92 1A AA DD CB  .......`..?..... 0050: 5B CA 2A C7 77 47 B5 38   12 C1 67 1C 50 64 E4 98  [.*.wG.8..g.Pd.. 0060: B1 9D 70 E7 BC 3D A7 61   CE A3 76 E9 F7 23 8A 6D  ..p..=.a..v..#.m 0070: C1 2D E1 0E 75 20 71 45   B4 56 1E 4B E0 97 8C 3B  .-..u qE.V.K...; 0080: BB 77 FC DD EC A3 26 FD   D6 9A 58 14 9C 6A 30 A3  .w....&amp;amp;...X..j0. 0090: 26 DD 67 22 6A CD F7 DB   7F 2D 48 B5 93 3B 5C 4E  &amp;amp;.g"j....-H..;\N 00A0: EC 6C 86 BE 8F 47 7A DE   CD 69 BA 8A A1 22 B0 3E  .l...Gz..i...".&gt;&lt;br /&gt;00B0: 83 16 5F 9B B5 33 95 7C   5A 31 55 D8 9A CB CA EC  .._..3..Z1U.....&lt;br /&gt;00C0: 57 7C 18 DC 30 47 20 EA   35 15 7D B8 3C 60 B3 59  W...0G .5...&lt;`.Y 00D0: 56 50 B3 A8 03 C8 2D 28   0D 2D 12 1D 35 62 E0 AB  VP....-(.-..5b.. 00E0: ED E5 53 54 43 4B 68 BB   98 00 B6 78 E7 C7 93 06  ..STCKh....x.... 00F0: E4 46 C6 5C 65 19 C4 00   D3 79 4D C4 45 76 0F DF  .F.\e....yM.Ev..  ] Private key: null Alias: Authentication Certificate: [ [   Version: V3   Subject: SERIALNUMBER=71717100052, GIVENNAME=Robert B3302, SURNAME=SPECIMEN, CN=Robert SPECIMEN (Authentication), C=BE   Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5    Key:  Sun RSA public key, 1024 bits   modulus: 99118761443669422291498760732724032715373214217302511965045964772871859003736852323149962836757489278007171937318381868594464271689448425826496925091035462057600115094523702878251665568942712725243978766284465174977057852526309353417744114866030522499405177739161556746031358035987771634436298681323393403787   public exponent: 65537   Validity: [From: Fri Jun 27 12:53:24 CEST 2008,                To: Sun Jun 27 12:53:24 CEST 2010]   Issuer: SERIALNUMBER=200501, CN=SPECIMEN Citizen CA, C=BE   SerialNumber: [    01000000 00011ac9 a7f30e]  Certificate Extensions: 6 [1]: ObjectId: 2.16.840.1.113730.1.1 Criticality=false NetscapeCertType [    SSL client    S/MIME ]  [2]: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: D6 A5 FE 65 26 BF 28 6C   16 15 D7 FA 7E 3D DA 9F  ...e&amp;amp;.(l.....=.. 0010: A9 EE 7D 1D                                        .... ]  ]  [3]: ObjectId: 2.5.29.31 Criticality=false CRLDistributionPoints [   [DistributionPoint:      [URIName: http://crl.specimen-eid.belgium.be/eidc200501.crl] ]]  [4]: ObjectId: 2.5.29.15 Criticality=true KeyUsage [   DigitalSignature ]  [5]: ObjectId: 2.5.29.32 Criticality=false CertificatePolicies [   [CertificatePolicyId: [0.3.2062.7.1.1.401.1] [PolicyQualifierInfo: [   qualifierID: 1.3.6.1.5.5.7.2.1   qualifier: 0000: 16 29 68 74 74 70 3A 2F   2F 72 65 70 6F 73 69 74  .)http://reposit 0010: 6F 72 79 2E 73 70 65 63   69 6D 65 6E 2D 65 69 64  ory.specimen-eid 0020: 2E 62 65 6C 67 69 75 6D   2E 62 65                 .belgium.be  ]]  ] ]  [6]: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false AuthorityInfoAccess [   [accessMethod: 1.3.6.1.5.5.7.48.2    accessLocation: URIName: http://certs.specimen-eid.belgium.be/belgiumrs.crt, accessMethod: 1.3.6.1.5.5.7.48.1    accessLocation: URIName: http://ocsp.specimen-eid.belgium.be] ]  ]   Algorithm: [SHA1withRSA]   Signature: 0000: 48 89 61 2B EB DC 68 67   47 DA 33 9E 82 11 C4 40  H.a+..hgG.3....@ 0010: 6C 47 DD A7 6D 97 0D 95   C6 7C 81 FB 79 46 95 E1  lG..m.......yF.. 0020: 73 9C 5F 30 9B C3 96 42   E5 AE A6 FC 2F 54 9C 39  s._0...B..../T.9 0030: 1C B3 F7 5E 77 50 7B EB   C9 17 92 9B 09 3D A0 89  ...^wP.......=.. 0040: 76 B4 8B F4 AE 20 EC F0   80 01 F4 63 DD 29 A0 D8  v.... .....c.).. 0050: 77 DE AD 95 05 E9 F9 D5   7B 49 60 A1 24 F6 DF 28  w........I`.$..( 0060: ED 0C 83 71 14 BD BE EE   0A FB AE C3 B0 3D 15 FD  ...q.........=.. 0070: EF 58 14 54 40 80 07 2F   77 85 72 14 F1 90 B4 06  .X.T@../w.r..... 0080: F4 4B 35 A5 76 BF 6A 0C   3D AE 7C D4 95 8B 41 DD  .K5.v.j.=.....A. 0090: 57 D2 F3 1C FC B0 53 C6   9F D8 63 71 AB 00 9D 57  W.....S...cq...W 00A0: 4C 2D 58 43 56 44 9A 2B   34 3D 07 13 3C 7C F5 F3  L-XCVD.+4=..&lt;... 00B0: 17 96 31 E2 FE AC F4 65   25 78 05 C6 D3 62 30 0E  ..1....e%x...b0. 00C0: 28 2E 89 54 A6 49 B7 1C   AC A8 59 01 45 29 29 7B  (..T.I....Y.E)). 00D0: C4 66 07 13 91 A0 F7 DF   28 F9 A9 20 FC FF FC 07  .f......(.. .... 00E0: 7F 9E D9 0D A0 D4 36 14   CE C3 94 3E C2 30 EC C3  ......6....&gt;.0..&lt;br /&gt;00F0: 95 33 7A EE F7 28 C5 33   15 58 86 D6 48 77 3D E3  .3z..(.3.X..Hw=.&lt;br /&gt;&lt;br /&gt;]&lt;br /&gt;Private key: SunPKCS11-SmartCard RSA private key, 1024 bits (id 1, token object, sensitive, unextractable)&lt;br /&gt;Retrieving the Provider Name&lt;br /&gt;Unregistering the Provider SunPKCS11-SmartCard&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;4) Man, this is fun!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yeah, I just have to say that today I had a lot of fun putting some code together, and seeing how it works.  That's one thing I love about developments: making things work :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-8376001952978251496?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/8376001952978251496/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=8376001952978251496' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/8376001952978251496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/8376001952978251496'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/were-getting-there.html' title='We&apos;re getting there'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-6596989220129374645</id><published>2008-07-10T08:37:00.001-07:00</published><updated>2008-07-10T08:38:55.790-07:00</updated><title type='text'>Tutorial: How to build a java Applet to sign documents with a smart card</title><content type='html'>Wow! That was a long title :)&lt;br /&gt;&lt;br /&gt;Anyways, here is a very interesting tutorial that I am currently following to inspire myself for "Bonjour Robert!"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.developer.com/security/article.php/11580_3587361_1"&gt;http://www.developer.com/security/article.php/11580_3587361_1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-6596989220129374645?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/6596989220129374645/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=6596989220129374645' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/6596989220129374645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/6596989220129374645'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/tutorial-how-to-build-java-applet-to.html' title='Tutorial: How to build a java Applet to sign documents with a smart card'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-2077935161783727787</id><published>2008-07-10T07:47:00.000-07:00</published><updated>2008-07-10T08:26:53.686-07:00</updated><title type='text'>Decomposing "Bonjour Robert!"</title><content type='html'>"Bonjour Robert!" may seem a simple thing to do, but it is not really trivial in terms of programming.&lt;br /&gt;&lt;br /&gt;Let's make an overview of the different steps it will take before we can say "Bonjour Robert!":&lt;br /&gt;&lt;br /&gt;1) Someone says hello to me and presents his ID papers (eg. he inserts his card in the reader)&lt;br /&gt;2) I ask this person "Are these your papers?" (the program asks to prove that the person is the owner of the card)&lt;br /&gt;3) The person "proves" that these are indeed his papers (he gives the PIN code)&lt;br /&gt;4) I check if his papers are valid (are the certificates from the card valid, revoked, suspended?)&lt;br /&gt;5) I read his name from the papers (the program accesses the information found in the ID card)&lt;br /&gt;6) I say "Bonjour Robert!"&lt;br /&gt;&lt;br /&gt;Here we work in an environment composed of 3 distinct parts:&lt;br /&gt;&lt;br /&gt;- The program (in Java)&lt;br /&gt;- The card + reader&lt;br /&gt;- The &lt;a href="http://en.wikipedia.org/wiki/Middleware"&gt;middleware&lt;/a&gt; (software that enables communication between the program and the card)&lt;br /&gt;&lt;br /&gt;The card is provided by Robert, the middleware is installed on the computer and is standard, so the part we can work on is the Java program.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;The first and probably hardest part, will be to authenticate the card (steps 2-3-4) so I'll start there.  But how does authentication work then?  Well inside the card's chip there is a so-called "Private Key" and also a "Public Key".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Private Key / Public Key&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When the card sends information, it is encrypted with the card's Private Key.  This key is known only from the card and no-one can read it or access it.&lt;br /&gt;&lt;br /&gt;In order to read that information, it can only be decrypted with the Public Key, which can be known by anyone.&lt;br /&gt;&lt;br /&gt;On the opposite side, the program can send information to the card and encrypt that information using the public key.  Only the private key can be used to decrypt that message.&lt;br /&gt;&lt;br /&gt;What this means is that if the program receives an information from the card, if that information can be decrypted with the card's public key, then the program is certain that the information really comes from the card and not a third party that tries to hack the conversation. This way, a hacker can't fool the program into believing that he is the owner of the card, nor can that hacker read any information that the program sends to the card (he can't decode it because he doesn't have the private key).&lt;br /&gt;&lt;br /&gt;So this is how the program and the card establish a communication, however this still doesn't prove that the ID card is not a fake.  This is ensured by the use of Certificates (but I'll talk about this tomorow).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-2077935161783727787?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/2077935161783727787/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=2077935161783727787' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/2077935161783727787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/2077935161783727787'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/decomposing-bonjour-robert.html' title='Decomposing &quot;Bonjour Robert!&quot;'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-5982505042314522996</id><published>2008-07-10T01:09:00.000-07:00</published><updated>2008-07-10T01:31:48.380-07:00</updated><title type='text'>"Bonjour Robert!"</title><content type='html'>In the programming world, when you learn a new language, or you try to use a new technology, the very first program you make is usually a very simple one that says "&lt;a href="http://en.wikipedia.org/wiki/Hello_world"&gt;Hello world!&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;My current project is to make my own eID client-server program in which the client will authenticate itself to the server, and then the program will fetch the first name from the card and use it to say hello to the authenticated user.&lt;br /&gt;&lt;br /&gt;In this case the first name of our test card subject is Robert, as you can see on our specimen testcard:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_THTfIClZUoY/SHXHOpN5cvI/AAAAAAAAAIk/blEevohNoHs/s1600-h/CCF10072008_00000.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_THTfIClZUoY/SHXHOpN5cvI/AAAAAAAAAIk/blEevohNoHs/s320/CCF10072008_00000.jpg" alt="" id="BLOGGER_PHOTO_ID_5221298397402198770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now this is pure coïncidence, but there is actually a boardgame named "Bonjour Robert!"  So doing a "Hello Robert!" program is much less fun than doing a "Bonjour Robert!" :-)  Click on the image to know more about the "Bonjour Robert!" game.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.boardgamegeek.com/game/11606"&gt;&lt;img style="cursor: pointer; width: 419px; height: 216px;" src="http://www.legendesdautresmondes.com/images/ldm/photos/3700069200027.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-5982505042314522996?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/5982505042314522996/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=5982505042314522996' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/5982505042314522996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/5982505042314522996'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/bonjour-robert.html' title='&quot;Bonjour Robert!&quot;'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_THTfIClZUoY/SHXHOpN5cvI/AAAAAAAAAIk/blEevohNoHs/s72-c/CCF10072008_00000.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-5285197998475953123</id><published>2008-07-09T05:50:00.000-07:00</published><updated>2008-07-09T05:53:57.288-07:00</updated><title type='text'>Did You Know: eID Card Stop?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://eid.belgium.be/fr/binaries/bttn_cardStop_tcm146-10024.gif"&gt;&lt;img style="cursor: pointer; width: 167px; height: 163px;" src="http://eid.belgium.be/fr/binaries/bttn_cardStop_tcm146-10024.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you loose your eID card, you might want to consider calling eID Card Stop&lt;br /&gt;&lt;br /&gt;French speaking: +32(0)2 518 21 16&lt;br /&gt;Dutch   speaking: +32(0)2 518 21 17&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-5285197998475953123?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/5285197998475953123/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=5285197998475953123' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/5285197998475953123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/5285197998475953123'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/did-you-know-eid-card-stop.html' title='Did You Know: eID Card Stop?'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-3281620537028891861</id><published>2008-07-09T03:27:00.000-07:00</published><updated>2008-07-09T09:01:49.216-07:00</updated><title type='text'>More interesting websites</title><content type='html'>&lt;ul&gt;&lt;li&gt;I discovered this very interesting &lt;a href="http://en.wikipedia.org/wiki/Wiki"&gt;Wiki&lt;/a&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://wiki.yobi.be/wiki/Main_Page"&gt;http://wiki.yobi.be/wiki/Main_Page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;there is a section about security that is of particular interest for me, and a very extensive subject on eID&lt;br /&gt;&lt;br /&gt;Also, through yobi wiki, I discovered a blog about security that has countless information on security, and more specifically the belgian eID.  It presents a critical view of all the security issues and is very frequently updated with news on the subject.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://belsec.skynetblogs.be/"&gt;http://belsec.skynetblogs.be/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Also here is a forum about Eid&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="https://securehomes.esat.kuleuven.be/%7Edecockd/wiki/bin/view.cgi/Eid/EidForum"&gt;https://securehomes.esat.kuleuven.be/~decockd/wiki/bin/view.cgi/Eid/EidForum&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;There is also (but it is in french) the website of the "Agence Wallone des Télécommunications"&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;about eID: &lt;a href="http://www.awt.be/web/gov/index.aspx?page=gov,fr,fic,020,001"&gt;http://www.awt.be/web/gov/index.aspx?page=gov,fr,fic,020,001&lt;/a&gt;&lt;br /&gt;about Electronic Signature: &lt;a href="http://www.awt.be/web/sec/index.aspx?page=sec,fr,fic,150,001"&gt;http://www.awt.be/web/sec/index.aspx?page=sec,fr,fic,150,001&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-3281620537028891861?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/3281620537028891861/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=3281620537028891861' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/3281620537028891861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/3281620537028891861'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/more-interesting-websites.html' title='More interesting websites'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-6527560491474603075</id><published>2008-07-09T02:27:00.000-07:00</published><updated>2008-07-09T03:26:06.443-07:00</updated><title type='text'>Proxies and DMZ</title><content type='html'>Since I will probably be talking quite a bit about proxies in the future, I thought I might as well give a small introduction :-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Web_proxy"&gt;&lt;span style="font-weight: bold;"&gt;Proxy&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A Proxy is a system (computer, or software) that acts as a middle man between two systems (eg. two computers).  One of these systems, called the &lt;a href="http://en.wikipedia.org/wiki/Client_%28computing%29"&gt;client&lt;/a&gt;, wishes to gain access to a specific ressource (software, data, ...) that is present on another system (called the &lt;a href="http://en.wikipedia.org/wiki/Server_%28computing%29"&gt;server&lt;/a&gt;).  The client contacts a proxy, asking access to the ressource, then the proxy will ask the server for that ressource and will then forward the informations from that ressource to the client.&lt;br /&gt;&lt;br /&gt;In the the eyes of a client who uses the proxy, every ressource is an individual entity.  In the eyes of the server, there is no distinction made between the clients using one same proxy.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://en.wikipedia.org/wiki/Reverse_proxy"&gt;Reverse Proxy&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In some cases (&lt;a href="http://en.wikipedia.org/wiki/Web_services"&gt;web services&lt;/a&gt; for instance) one same service can consist of several ressources that are spead amongst several servers.  In order to present a single interface to the client, the provider of that service needs a system that will dispatch in-bound requests to the correct server.   This is what a Reverse Proxy does: present several ressources as one single entity to the client.  Also, since the reverse proxy is controlled by the provider of the service, additional security features can be implemented there, amongst other things (load distribution, data compression etc).&lt;br /&gt;&lt;br /&gt;When using eID as a means to authenticate a user, the reverse proxy will manage the verification of the certificate.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://en.wikipedia.org/wiki/Demilitarized_zone_%28computing%29"&gt;DeMilitarized Zone (DMZ)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A service provider may not feel comfortable receiving queries from an external network directly on their internal network.  Indeed, some information on their internal network may be sensitive data that the owner does not want to share with the world.  Though still he wishes to allow the external network to have acces to some public parts of his network while still being able to access it from his secured internal network.  This part of a network that is freely accessible to both the external network and the internal network is called a Demilitarized Zone (DMZ).  Usually the DMZ is located between two &lt;a href="http://en.wikipedia.org/wiki/Firewall"&gt;firewalls&lt;/a&gt;, one which separates the internal network, and one which separates the external network.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/thumb/6/60/DMZ_network_diagram_2_firewall.svg/400px-DMZ_network_diagram_2_firewall.svg.png"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/60/DMZ_network_diagram_2_firewall.svg/400px-DMZ_network_diagram_2_firewall.svg.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Typically, in the case of web services, the reverse proxy will be located in the DMZ, while the application servers (containing the different ressources accessed by the service) will be located in the internal network.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-6527560491474603075?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/6527560491474603075/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=6527560491474603075' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/6527560491474603075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/6527560491474603075'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/proxies-and-dmz.html' title='Proxies and DMZ'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-8467505899829688724</id><published>2008-07-08T08:17:00.000-07:00</published><updated>2008-07-08T09:28:00.688-07:00</updated><title type='text'>The IAIK JCE Provider</title><content type='html'>I talked earlier about the &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/index.html"&gt;Provider&lt;/a&gt; abstract class.  There can be different implementations of that abstract class.  The toolkit from certipost came with an implementation of the PKCS#11  Provider made by &lt;a href="http://jce.iaik.tugraz.at/"&gt;IAIK&lt;/a&gt; (Institute for Applied Information Processing and Communication).  I'll be working with that provider to manage eID authentication.&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;The CD received from certipost doesn't contain much information on how to use this provider (anyways, I couldn't locate that information on the CD).   The IAIK website does have a&lt;a href="http://javadoc.iaik.tugraz.at/pkcs11_provider/current/index.html"&gt; javad&lt;/a&gt;&lt;a href="http://javadoc.iaik.tugraz.at/pkcs11_provider/current/index.html"&gt;oc of the provider's API&lt;/a&gt; however the javadoc alone is not really sufficient to understand how to use the provider.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ibm.com/developerworks/web/library/wa-ajaxintro6/rabbit-hat.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 68px; height: 102px;" src="http://www.ibm.com/developerworks/web/library/wa-ajaxintro6/rabbit-hat.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;There was a link to some user guide in the javadoc, but the link was dead.  Fortunately, through some clever google shenanigans I eventually &lt;a href="http://jce.iaik.tugraz.at/sic/layout/set/print/products/core_crypto_toolkits/pkcs_11_provider/using"&gt;found the document.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This contains a lot of very useful information and I'm starting to see how this will all fit in an actual program.  Looking at the sample codes provided by certipost, I now start to have a better understanding of some strange programming choices.  I can feel your curiosity :-)  Here is a sample code that looked really strange:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;Security.insertProviderAt&lt;br /&gt;  (new iaik.pkcs.pkcs11.provider.IAIKPkcs11(), 2);&lt;br /&gt;Security.addProvider(new iaik.security.provider.IAIK());&lt;/blockquote&gt;Basically what this does is register which provider implementation is going to be used.  The strange thing about this is that the first provider is inserted at the second position, and then the second one is added at the next position (ie. the third position).  It turns out that the reason for this implementation is that there is a bug in java 1.4 that prevents inserting a provider at the first position.&lt;br /&gt;&lt;br /&gt;Funny :-)&lt;br /&gt;&lt;br /&gt;Now though I really have a lot to do yet to be ready for tomorow's presentation to the bosses :-( good new is I finally start to feel like I'm understanding things rather than hovering above a massive uncharted rainforest of knowledge.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-8467505899829688724?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/8467505899829688724/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=8467505899829688724' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/8467505899829688724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/8467505899829688724'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/iaik-jce-provider.html' title='The IAIK JCE Provider'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-3481886085606334836</id><published>2008-07-07T09:10:00.001-07:00</published><updated>2008-07-07T09:31:40.186-07:00</updated><title type='text'>At last some results</title><content type='html'>I still didn't manage to run that stupid client-server application, however I tried a simpler program that just gives back the information on the objects that are present on the eID card.  It appears that the PKCS Module's library must be addressed directly in the code:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;Module pkcs11Module = Module.getInstance(args[0]);&lt;/blockquote&gt;here the file name is passed as an &lt;a href="http://en.wikipedia.org/wiki/Parameter_%28computer_science%29"&gt;argument&lt;/a&gt; of the &lt;a href="http://en.wikipedia.org/wiki/Execution_%28computers%29"&gt;run&lt;/a&gt; command.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://en.wikipedia.org/wiki/Object_%28computer_science%29"&gt;instantiation&lt;/a&gt; of the pkcs module in the case of the client-server application is managed by a &lt;a href="http://en.wikipedia.org/wiki/Coupling_%28computer_science%29"&gt;dependency&lt;/a&gt;, so I'd have to dig in a little deeper if I wanted to get the thing to work, but right now it is not my primary concern.&lt;br /&gt;&lt;br /&gt;The information about the card that was displayed by the program was only information that is available through PKCS.  Namely, information about the &lt;a href="http://en.wikipedia.org/wiki/Public_key_certificate"&gt;certificates, and information about the keys&lt;/a&gt; (private and public).  However the actual data (first name, last name etc.) must be adressed specifically through eID API's.&lt;br /&gt;&lt;br /&gt;That will be the next point I'll work on.&lt;br /&gt;&lt;br /&gt;Meanwhile, if you are the happy owner of a MAC computer with OS-X installed, and if you have a smartcard reader, you'll be happy to know that it is possible to configure your MAC so that you log in with your eID card (and PIN) rather than your username and password.&lt;br /&gt;&lt;br /&gt;For more info on this, check out &lt;a href="http://christophe.vandeplas.com/2008/07/07/belgian-eid-login-mac-os-x"&gt;this blog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-3481886085606334836?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/3481886085606334836/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=3481886085606334836' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/3481886085606334836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/3481886085606334836'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/at-last-some-results.html' title='At last some results'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-5211340160116288515</id><published>2008-07-04T09:03:00.000-07:00</published><updated>2008-07-07T07:41:41.460-07:00</updated><title type='text'>Understanding the usage of PKCS</title><content type='html'>Yesterday afternoon I tried to &lt;a href="http://en.wikipedia.org/wiki/Compiler"&gt;compile&lt;/a&gt; and run a sample program that performs a basic &lt;a href="http://en.wikipedia.org/wiki/Client-server"&gt;client-server&lt;/a&gt; authentication with an eID certificate.  However I have been unable to run it correctly.&lt;br /&gt;&lt;br /&gt;In order to understand the reason of that error I need to understand really how all this works, but it's not really a piece of cake.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mootzman.files.wordpress.com/2008/04/bulldog-with-headache1.jpg?w=509&amp;amp;h=382"&gt;&lt;img style="cursor: pointer; width: 181px; height: 136px;" src="http://mootzman.files.wordpress.com/2008/04/bulldog-with-headache1.jpg?w=509&amp;amp;h=382" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Basically my understanding is the following:&lt;br /&gt;&lt;br /&gt;Provider -&gt; Wrapper -&gt; PKCS Module -&gt; eID Card&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;The provider is a &lt;a href="http://en.wikipedia.org/wiki/Java_interface"&gt;Java interface&lt;/a&gt;, the Wrapper is a &lt;a href="http://en.wikipedia.org/wiki/Java_Native_Interface"&gt;JNI&lt;/a&gt; library that links the provider with its PKCS Implementation of the provider which in turn accesses the eID card and performs the requested operations.&lt;br /&gt;&lt;br /&gt;However I have a problem with the wrapper, which doesn't link properly with the PKCS implementation.&lt;br /&gt;&lt;br /&gt;Good news is: I found a lot of things to read this week-end in order to have a better understanding of how all this works.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jce.iaik.tugraz.at/sic/products/core_crypto_toolkits/pkcs_11_wrapper"&gt;http://jce.iaik.tugraz.at/sic/products/core_crypto_toolkits/pkcs_11_wrapper&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forum.java.sun.com/forum.jspa?forumID=60&amp;amp;start=0"&gt;http://forum.java.sun.com/forum.jspa?forumID=60&amp;amp;start=0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I also discovered a blog of a guy who works with eID cards and says a lot of useful things on the subject.&lt;br /&gt;&lt;a href="http://christophe.vandeplas.com/"&gt;&lt;br /&gt;http://christophe.vandeplas.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-5211340160116288515?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/5211340160116288515/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=5211340160116288515' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/5211340160116288515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/5211340160116288515'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/understanding-usage-of-pkcs.html' title='Understanding the usage of PKCS'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-9013736706668710210</id><published>2008-07-03T02:57:00.000-07:00</published><updated>2008-07-03T07:04:15.447-07:00</updated><title type='text'>Using Electronic ID Cards</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.cetic.be/IMG/gif/eid-card.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://www.cetic.be/IMG/gif/eid-card.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Belgium was the first country to introduce &lt;a href="http://www.cetic.be/article429.html"&gt;Electronic ID cards&lt;/a&gt; (eID)  at a large scale a couple of years ago, and the hype &lt;a href="http://europa.eu/rapid/pressReleasesAction.do?reference=IP/08/824&amp;amp;format=HTML&amp;amp;aged=0&amp;amp;language=EN&amp;amp;guiLanguage=en"&gt;progressively expands&lt;/a&gt; to other european countries as a means to simplify access to public services throughout EU countries.  Today, around 30 million people in europe have their eID card.&lt;br /&gt;&lt;br /&gt;eID can be used for many other things than just e-Gouvernement Services, as they provide a means for secure authentication, and electronic signature. All this is very interesting for web application developers, and we want to use this at Imexis for our own applications.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://www.certipost.be/webshop/images/card_reader.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 107px; height: 88px;" src="https://www.certipost.be/webshop/images/card_reader.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yesterday I received a pack from &lt;a href="http://www.eid-shop.be/index.php?&amp;amp;setcookie=en&amp;amp;page=home"&gt;certipost&lt;/a&gt; with an eID reader, several test cards and a software package. Today I will be trying to see how I can develop a small application that would access information on a card through the reader.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here are some interesting reads:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/security/CryptoSpec.html"&gt;http://java.sun.com/j2se/1.5.0/docs/guide/security/CryptoSpec.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Public_key_cryptography"&gt;http://en.wikipedia.org/wiki/Public_key_cryptography&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/RSA"&gt;http://en.wikipedia.org/wiki/RSA&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/SHA"&gt;http://en.wikipedia.org/wiki/SHA&lt;/a&gt;&lt;a href="http://ec.europa.eu/information_society/activities/egovernment/policy/key_enablers/eid/index_en.htm"&gt;&lt;br /&gt;http://ec.europa.eu/information_society/activities/egovernment/policy/key_enablers/eid/index_en.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Cryptographic Token Interface Standard&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.rsa.com/"&gt;&lt;br /&gt;RSA Security&lt;/a&gt;, produces the &lt;a href="http://en.wikipedia.org/wiki/PKCS"&gt;Public Key Cryptography Standards&lt;/a&gt;, amongst which a specific standard: PKCS#11 adresses the Cryptographic Token Interface.  This standard consists in an &lt;a href="http://en.wikipedia.org/wiki/API"&gt;API&lt;/a&gt; called CRYPTOKI (pronounce Crypto-Key).  The goal is to provide an isolation between the application that uses a cryptographic device, allowing for multiple applications to access multiple devices without worrying about the specifications of that device.&lt;br /&gt;&lt;br /&gt;Any such device (as is the eID card) is refered to as a Token.&lt;br /&gt;&lt;br /&gt;By next week wednesday, I should have understood how exactly an application can use Cryptoki to work with a token, and what kind of operations we can do with the token, as well as the limitations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-9013736706668710210?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/9013736706668710210/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=9013736706668710210' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/9013736706668710210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/9013736706668710210'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/using-electronic-id-cards.html' title='Using Electronic ID Cards'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-5848740968607940538</id><published>2008-07-03T02:32:00.000-07:00</published><updated>2008-07-03T04:35:36.790-07:00</updated><title type='text'>Why start this blog?</title><content type='html'>My first mission at Imexis is to familiarize myself with the technologies that I will be using.  And the number of technologies involved in the development of web applications is Huge.  At first I was a bit lost, trying to figure out where to start.  Surfing the web, and reading forums/wikipedia entries helped a lot, so I thought: what the heck, I may as well share my discoveries and useful websites to the world.  It would both help me keep tracks of things and might help some other people too :-)&lt;br /&gt;&lt;br /&gt;Also, explaining what exactly I do for a living is not always easy, so this is also a way to help my friends and family to keep track of what I'm doing.&lt;br /&gt;&lt;br /&gt;So there, now I'll get started with things :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-5848740968607940538?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/5848740968607940538/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=5848740968607940538' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/5848740968607940538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/5848740968607940538'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/why-start-this-blog.html' title='Why start this blog?'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2095830728962729389.post-8165770845600753412</id><published>2008-07-03T02:08:00.000-07:00</published><updated>2008-07-04T03:15:51.970-07:00</updated><title type='text'>Presentations</title><content type='html'>Hi there,&lt;br /&gt;My name is Jean-Gobert de Coster, and I started my new job in a startup named &lt;a href="http://www.imexis.net/"&gt;Imexis&lt;/a&gt; just about a week ago.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.imexis.net/styles/images/logolng4.gif"&gt;&lt;img style="cursor: pointer; width: 131px; height: 36px;" src="http://www.imexis.net/styles/images/logolng4.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I had previously worked as an IT-Consultant for &lt;a href="http://www.alten.be/en/index.html"&gt;Alten Benelux&lt;/a&gt; at &lt;a href="http://www.alcatel-lucent.be/"&gt;Alcatel-Lucent&lt;/a&gt; where I worked on design, development, testing, integration and maintenance of an &lt;a href="http://www1.alcatel-lucent.com/products/productsummary.jsp?productNumber=a8690osp"&gt;OSP&lt;/a&gt;-Based &lt;a href="http://en.wikipedia.org/wiki/Intelligent_network"&gt;IN&lt;/a&gt; product named &lt;a href="http://www.alcatel-lucent.com/wps/portal/solution/detail?LMSG_CABINET=Solution_Product_Catalog&amp;amp;LMSG_CONTENT_FILE=Solutions/Solution2_Detail_000105.xml#tabAnchor3"&gt;Convergent Rating Engine&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Though my experience at Alcatel was very interesting, both professionally and humanly, it was very specific to the world of Telecoms, and I started to feel like I was no longer developing general skills through the Job.&lt;br /&gt;&lt;br /&gt;I Always liked &lt;a href="http://java.sun.com"&gt;Java&lt;/a&gt;, and have been intrigued by the world of web applications, so when I heard of an opportunity to work in a startup owned by a friend of mine: Thomas de Bodt, I jumped right in, and became Imexis' first employee.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2095830728962729389-8165770845600753412?l=myjobatimexis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myjobatimexis.blogspot.com/feeds/8165770845600753412/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2095830728962729389&amp;postID=8165770845600753412' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/8165770845600753412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2095830728962729389/posts/default/8165770845600753412'/><link rel='alternate' type='text/html' href='http://myjobatimexis.blogspot.com/2008/07/presentations.html' title='Presentations'/><author><name>jeango</name><uri>http://www.blogger.com/profile/02283952599578038257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://img116.imageshack.us/img116/7671/jeangosmall2zs7.jpg'/></author><thr:total>0</thr:total></entry></feed>
