O2 Prepaid Surfstick unter Mac OS X installieren

Nachdem Alice von der Telefónica gekauft wurde, gab es für uns treue Alice-Kunden einen O2-Surfstick zur Begrüßung, da anscheinend auch O2 von dem spanischen Telekommunikationsriesen gekauft wurde. Eigentlich sollte der Surfstick gratis sein, aber die Nachfrage war sehr groß und sah gab es bereits am Abend keine kostenlosen Sticks mehr.

Inzwischen hat man sich bei O2 überlegt, dass die Leute mit Alice-Surfstick-Gutschein den Stick wenigstens günstiger erhalten sollen, nämlich für 20 € statt 40 €. Klingt fair, da auch noch 5 Tagesflatrate dabei sind. Also habe ich mir dieses Angebot Heute gekauft.

Anekdote 1:
Der Surfstick kostet normalerweise 39,99 €. Der Alice-Gutschein gibt 20 € Rabatt – macht: 19,99 €. Das Problem war, dass in der Kasse des O2 Shops der rabattierte Preis mit 19,90 € eingetragen war. Bei der Eingabe der Coupon-Nummer zeigte die Anwendung nur eine Fehlermeldung: Der Rabatt für diesen Rabattcoupon darf 20 € nicht überschreiten. Tjaaa, der Surfstick war einfach 9 Cent zu günstig. Ende vom Lied: Der freundliche O2-Verkäufer sprach mit seinem Teamleiter, der auch keine Lösung wußte. Nun buchen die beiden das am Montag nach, da Heute (Samstag) auch niemand mehr im Servicecenter sitzt. Egal – ich hab den Stick bekommen.

Ab nach Hause, den Mobile Partner installiert und gestartet. PIN eingetippt, Guthaben-Code eingetippt, Verbinden gedrückt – und? Nix passiert. Ich mach es kurz: Der O2 Support war zwar sehr freundlich und sehr schnell, hatte allerdings keine Ahnung von Macs. Die Infos, die ich bekam brachten mich aber zum Problem und nun kann ich stolz diesen Blog-Eintrag über UMTS via O2-Surfstick schreiben:

  • Mobile Partner vom Stick installieren
  • Systemeinstellungen -> Netzwerk
  • Hier bekommt man eine Informationsmeldung, dass ein neues Modem erkannt wurde: ‚Found modem Huawei‘. Tipp-Topp, da dies der Hersteller des Sticks ist
  • Auf das neue Modem klicken
  • Telefonnummer: *99# eingeben
  • Benutzer und Passwort leer lassen
  • Jetzt kommt der wichtige Teil: Weitere Optionen klicken
  • Hersteller: Andere
  • Modell: HUAWEI Mobile Connect auswählen (hier ist nämlich standardmäßig ein Apple-Modem ausgewählt)
  • Fehlerkorrektur und Komprimierung im Modem aktivieren deaktivieren

Falls das noch nicht funktioniert, muss als Passwort null eingegeben werden.

Netzwerkeinstellungen HUAWEI Modem

Modemauswahl

Nach diesem Hick-Hack funktionierte mein Stick und der riesengroße Vorteil ist, dass man jetzt über die Modem-Funktion von Mac OS X die An- und Abwahl machen kann.

Hier mal die Geschwindigkeit:
speed

Zum Schluss noch Anekdote 2:
Nachdem meine ganzen Verbindungsversuche scheiterten, bekam ich eine O2 SMS, dass meine Tagesflatrate nicht aktiviert werden konnte und ich deshalb eine 3,50 € Gutschrift erhalten solle. Keine 3 Minuten später bekam ich noch eine SMS von O2 mit der Warnung, dass mein Guthaben auf unter 4 € abgesunken sei! Irgendwie hat es O2 mit Cent-Beträgen und Warnmeldungen.

Gemischtes Encoding einer Datei reparieren

Gestern habe ich eine Stunde lang verzweifelt versucht eine SQL Datei in die Datenbank einzufahren, die verschiedene Zeichensätze in der Datei hatte.

Mit file lässt sich die Kodierung einer Datei überprüfen, allerdings liefert sie in meinem Fall nur:

hdl.sql: Non-ISO extended-ASCII English text, with very long lines

Non-ISO ist nicht das, was man lesen möchte, wenn man Datenbanken importiert. Zum Glück habe ich hier ein schönes Shell-Skript gefunden, was die Datei 1a nach UTF-8 kodiert. Dazu wird eine Mischung aus recode und sed verwendet.

Im Anschluss liefert file nun den korrekten Wert:

hdl-utf8.sql: UTF-8 Unicode English text, with very long lines

Vielen Dank dafür.

Selbstsigniertes SSL Zertifikat für Tomcat und APR erstellen

Im letzten Blog-Eintrag zeigte ich, wie man die Tomcat-Native-Libraries mit APR installieren kann. Soll dazu SSL verwendet werden, benötigt der APR-Connector dazu ein PEM-kodiertes SSL-Zertifkat.

Ein selbstsigniertes Zertifikat lässt sich relativ leicht selbst erstellen.

Zunächst wird ein privater Schlüssel erzeugt:
openssl req -new -out tomcat.csr -keyout tomcat.pem
Generating a 1024 bit RSA private key
.......................................++++++
.++++++
writing new private key to 'tomcat.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Hamburg
Locality Name (eg, city) []:Hamburg
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Timo Meinen
Organizational Unit Name (eg, section) []:localhost
Common Name (eg, YOUR name) []:localhost
Email Address []:timomeinen@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Anschließend liegen zwei Dateien im Verzeichnis: Der private Schlüssel tomcat.pem und der Certifikation-Request tomcat.csr.

Mit dem folgenden Befehl kann man ein unverschlüsseltes Zertifikat erzeugen:
openssl rsa -in tomcat.pem -out tomcat.key
Enter pass phrase for tomcat.pem:
writing RSA key

Der letzte Schritt ist die Selbstsignierung des Zertifikates. Dieses kann dann gemeinsam mit dem privaten Schlüssel in Tomcat konfiguriert werden:
openssl x509 -in tomcat.csr -out tomcat.crt -req -signkey tomcat.key
Signature ok
subject=/C=DE/ST=Hamburg/L=Hamburg/O=Timo Meinen/OU=localhost/CN=localhost/emailAddress=timomeinen@gmail.com
Getting Private key

Die .csr und die .pem Datei kopiert man nun an einen geeigneten Platz z.B.
cp tomcat.* /Applications/apache-tomcat-6.0.26/conf/

Die Konfiguration in Tomcats server.xml ist schnell gemacht:

<connector port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
SSLCertificateFile="/Applications/apache-tomcat-6.0.26/conf/tomcat.crt"
SSLCertificateKeyFile="/Applications/apache-tomcat-6.0.26/conf/tomcat.pem"
SSLPassword="changeit"
clientAuth="optional" SSLProtocol="TLSv1"/>

Der Unterschied zur Konfiguration mit einem Keystore sind die drei Anweisungen SSLCertificateFile, SSLCertificateKeyFile und SSLPassword. Sie werden hier erklärt.

Nun kann Tomcat von APR und OpenSSL profitieren.

Eine schöne Übersicht über das Thema SSL-Zertifakte erstellen gibt es u.a. in Jian Fang’s Wiki.

Apache Tomcat Native Libraries unter Mac OS X installieren

Vor knapp zwei Wochen wurde die neue Tomcat Version 6.0.26 veröffentlicht. Zeitgleich wurden die Tomcat-Native-Libraries auf die Version 1.1.20 aktualisiert. Tomcat-Native verbindet die Apache Portable Runtime mit dem Web-Container. Dies bringt höhere Stabilität, höhere Performanz und die Möglichkeit OpenSSL im Tomcat bentuzen zu können.

Hier ist eine Anleitung, um die Native-Libraries unter Mac OS X zu installieren:

Zunächst muss APR installiert werden, was am leichtesten über MacPorts:
sudo port install apr

Auch die tomcat-native gibt es als Port, allerdings nur in der alten Version 1.1.14, die mit der aktuellen Tomcat Version nicht mehr kompatibel ist. Daher gibt es nun zwei Möglichkeiten:

  1. Einen Port-Patch einspielen: Tomcat-Native-1.1.20 Patch
  2. Die Libraries selbst kompilieren

Da das selber kompilieren unter Mac OS X nicht schwierig ist, zeige ich diesen Weg:

Paket herunterladen und entpacken:
http://tomcat.apache.org/download-native.cgi
tar xf tomcat-native-1.1.20-src.tar.gz
cd tomcat-native-1.1.20-src/jni/native/

Mit configure alles konfigurieren:
./configure --with-apr=/usr/local/apr --with-java-home=$JAVA_HOME --with-ssl=/usr
Wer kein SSL benötigt kann einfach --without-ssl angeben.

Kompilieren und installieren:
make
sudo cp .libs/libtcnative* /usr/lib/java/

Wenn man nun den Tomcat startet, kann man in den Log-Meldungen prüfen, ob die Native-Library geladen wird:
/Applications/apache-tomcat-6.0.26/bin/catalina.sh run
19.03.2010 09:20:21 org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.20.
19.03.2010 09:20:21 org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

Sollte es zu einer Fehlermeldung kommen, dass der Poller nicht erstellt werden konnte, muss die pollerSize im Connector angepasst werden:
19.03.2010 09:20:41 org.apache.tomcat.util.net.AprEndpoint allocatePoller
INFO: Failed to create poller with specified size of 8192

<connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
pollerSize="1024" >>

Wird kein SSL benutzt ist man nun fertig. Ansonsten ist die SSL Konfiguration in den Connector-Eintragen in der server.xml bei APR-Nutzung anders:

APR Connector configuration
Tomcat SSL howto

Möchte man auf den APR-SSL support verzichten, kann auch einfach das protocol überschrieben werden:

< -- Define a blocking Java SSL Coyote HTTP/1.1 Connector on port 8443 -->
protocol = "org.apache.coyote.http11.Http11Protocol"
port="8443"

< -- Define a non-blocking Java SSL Coyote HTTP/1.1 Connector on port 8443 -->
protocol = "org.apache.coyote.http11.Http11NioProtocol"
port="8443"

Hier noch ein kleiner Grund, warum sich der Aufwand lohnt: Unsere aktuelle Web-Anwendung it.projektwerk.com startet ohne APR in ca. 25 Sekunden. Mit APR in 15 Sekunden.