Sonntag, 16. März 2014

Java Programme und Startcom Zertifikate

... mögen sich nicht, weil im Java Keystore die StartSSL-CA nicht drin ist.

Verstehe zwar nicht warum, aber man kann die eintragen:

cd \program files\java\jdk...*\jre\lib\security
copy cacerts cacerts.save
..\..\bin\keytool -import -alias startcom -keystore cacerts -trustcacerts -file  M:\Temp\ca.pem

Passwort ist changeit.

Sonntag, 2. September 2012

Postfix configuration, SASL, and xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms

This almost drove me crazy today. Did everything correctly (i thought), but always got the above error.

Problem was: if you say

smtpd_sasl_security_options = noanonymous, noplaintext

in main.cf, and

 mech_list: PLAIN LOGIN

in smtpd.conf, then of course there's no mechanism that matches if you don't use SSL.

Bah!

Donnerstag, 12. Januar 2012

Thunderbird LDAP search is VERY slow on a large LDAP installation (MS AD in this case)

Problem: after configuring an LDAP directory in the thunderbird address book, searching for entriers takes forever but doesn't find anything.

Started wireshark, found out that a query is sent to the server alright. After 60 seconds, the server came back with a timeout failure (which the TB UI doesn't show, but the packet can be seen in wireshark).

Looking at the LDAP query string shows why: it's a logical "or" of email, name, first name, last name, all of them using a "contains" operator: (|(email=*XXX*)(sn=*XXX*)) etc. This means the LDAP server can't use indexes, so it has to do four full table scans which take forever.

The LDAP query string can be set in a hidden configuration option called "mail.addr_book.quicksearchquery.format", which is documented in https://developer.mozilla.org/en/Thunderbird/Hidden_prefs - it says the default string is pref("mail.addr_book.quicksearchquery.format","?(or(PrimaryEmail,c,@V)(DisplayName,c,@V)(FirstName,c,@V)(LastName,c,@V))");
with the c meaning "contains". However, it doesn't list any other possibilities to use instead of "c", it just refers to the source code.

That can be viewed at
http://dxr.mozilla.org/comm-central/comm-central/mailnews/addrbook/src/nsAbQueryStringToExpression.cpp.html#l278

where "bw" stands for "begins with".

So, i changed the preference to "?(or(PrimaryEmail,bw,@V)(DisplayName,bw,@V)(FirstName,bw,@V)(LastName,bw,@V))");

and look what happens - querys are fast again. Of course, you won't find anything containing your query anymore, just strings that begin with your query - but that's what you want in most cases anyway, and a working "starts with" is better than a non-functional "includes" in any case.

Mittwoch, 29. Juni 2011

Got a new computer. Had several versions of Java preinstalled. Installed Firefox myself, Java applets didn't work.

Tried this, tried that, even installed a new JRE myself. No success.

Used procmon and found out that, after enumerating the HKLM\Software\Wow6432Node\JavaSoft\Java Runtime Environment keys, firefox tried a RegCreateKey on HKLM\SOFTWARE\Wow6432Node\mozilla.org\Mozilla which failed with "Access denied".

Started firefox with admin rights. Java worked.

Changed the permissions on HKLM\SOFTWARE\Wow6432Node\mozilla.org\Mozilla to "full access everyone" and restarted firefox without admin rights. Java worked as well.

Don't know if that's a FF5 problem, or if the pre-installation of the computer broke something, but anyway - firefox shouldn't behave like that imo.

Montag, 30. Mai 2011

Erstellen und Importieren von SSL Zertifikaten in Tomcat

Erst einen Key erstellen:
/usr/java/jdk1.6.0_23/bin/keytool -genkey -alias http://nemo.bso2001.com -dname
"cn=nemo.bso2001.com,o=bso2001,o=com" -keyalg RSA -keysize 4096
Dann daraus einen Zertifikatsrequest machen:
/usr/java/jdk1.6.0_23/bin/keytool -certreq -alias http://nemo.bso2001.com -file
nemo.bso2001.com.csr

Ich habe meine Zertifikate von www.startssl.com, da sind die kostenlos. Man braucht von dort das Rootzertifikat und das Class1-Server-Zwischenzertifikat:

wget http://www.startssl.com/certs/ca.crt
wget http://www.startssl.com/certs/sub.class1.server.ca.crt
/usr/java/jdk1.6.0_23/bin/keytool -import -trustcacerts -alias startcom.ca -file ca.crt
/usr/java/jdk1.6.0_23/bin/keytool -import -alias startcom.ca.sub -file sub.class1.server.ca.crt

Sobald man das eigene Serverzertifikat von StartSSL hat, wird dieses importiert:
/usr/java/jdk1.6.0_23/bin/keytool -import -alias http://nemo.bso2001.com -file nemo.bso2001.com.crt

Dabei zu wissen: erst wird der Key erstellt, der wird dann von keytool -list als "PrivateKeyEntry" angezeigt. Beim Import des eigenen Serverzertifikats wird dieser Private Key durch die Zertifikatsinformation ergänzt; dieser Private Key ist nachher auch das Zertifikat das Tomcat an Clients ausliefert. Deshalb müssen die Aliase beim -genkey gleich sein.
Anscheinend ist beim Root-crt (aber nicht beim Zwischencrt) auch der -trustcacerts wichtig.

Freitag, 16. Juli 2010

Zugriff auf Postfächer anderer Benutzer mit IMAP und Exchange Server

Hat mich heute eine Weile gekostet, um das herauszufinden - und entweder hatte ich die falschen Suchbegriffe, oder Google findet einfach nichts.

Problem: ich muß mit Perl auf einen Exchange-Server zugreifen, um dort via IMAP Mails abzuholen, diese zu parsen, und dann je nach Inhalt weiterzuverarbeiten. Natürlich kommen die Mails nicht bei mir "privat" an, sondern in einem Sammelpostfach. Dessen User/Passwort bekomme ich aber nicht, sondern nur das Recht, das Postfach von meinem User aus anzusehen.

Eigentlich gibt es ja in imap namespaces, um genau das zu tun - Zugriff auf fremde Inboxen. Wenn man aber die Namespaces abfragt, dann ist der für die fremden Postfächer leer:

$ telnet imapserver imap
Trying 10.199.138.136...
Connected to imapserver.my.domain (10.199.138.136).
Escape character is '^]'.
* OK Microsoft Exchange Server 2003 IMAP4rev1 server version 6.5.7638.1 (imapserver.my.domain) ready.
1 login "guntram.blohm@my.mail.domain" "secret"
1 OK LOGIN completed.
2 namespace
* NAMESPACE (("" "/")) NIL (("Public Folders/" "/"))
2 OK NAMESPACE completed.
3 logout
* BYE Microsoft Exchange Server 2003 IMAP4rev1 server version 6.5.7638.1 signing off.
3 OK LOGOUT completed.
Connection closed by foreign host.

Man kommt also anscheinend nicht über Namespaces ran. Aber wenn man den Mailboxnamen der Mailbox, die man ansprechen will, mit / getrennt an den Benutzernamen anhängt, dann bekommt man Zugriff auf die Postfächer jenes Benutzers. Also:

$ telnet imapserver2 imap
Trying 10.199.138.140...
Connected to imapserver2.my.domain (10.199.138.140).
Escape character is '^]'.
* OK Microsoft Exchange Server 2003 IMAP4rev1 server version 6.5.7638.1 (imapserver2.my.domain) ready.
1 login "guntram.blohm@my.mail.domain/33333" "secret"
1 OK LOGIN completed.
2 logout
* BYE Microsoft Exchange Server 2003 IMAP4rev1 server version 6.5.7638.1 signing off.
2 OK LOGOUT completed.
Connection closed by foreign host.

Die 33333 ist hier tatsächlich der Name des Postfachs, er entspricht der Telefonnummer der Hotline deren Mails auch gelesen werden sollen ...

Und das ganze geht natürlich nur wenn man auch die Rechte hat; mit beliebigen "Opfern" geht es natürlich nicht:

$ telnet imapserver3 imap
Trying 10.199.2.135...
Connected to imapserver3.my.domain (10.199.2.135).
Escape character is '^]'.
* OK Microsoft Exchange Server 2003 IMAP4rev1 server version 6.5.7638.1 (imapserver3.my.domain) ready.
1 login "guntram.blohm@my.mail.domain/peter.maier" "secret"
1 NO The requested item could not be found.
2 logout
* BYE Microsoft Exchange Server 2003 IMAP4rev1 server version 6.5.7638.1 signing off.
2 OK LOGOUT completed.