Posted by momokuri on 2015 1月 14 in OpenStreetMap, Android
OpenStreetMapに参加してみると、他の人はどんなふうに活動しているか、気になるもの。
あるいは、自分の貢献は、どんなレベルなのか、気になるものです。
How did you contribute to OpenStreetMapは、
そんなあなたや、あなたへOSMをおしえてくれた彼、彼女の活動を表示してくれます。
OpenStreetMapに参加してみると、他の人はどんなふうに活動しているか、気になるもの。
あるいは、自分の貢献は、どんなレベルなのか、気になるものです。
How did you contribute to OpenStreetMapは、
そんなあなたや、あなたへOSMをおしえてくれた彼、彼女の活動を表示してくれます。
Ubuntu 12.04(LTS)を導入したら、EvernoteのWindows版をWINEで導入したものが、同期失敗するという事象に遭遇した人も多いと思う。それどころか、さまざまなアプリケーションで、https通信に失敗した、との問題が報告されている。
ここに報告されているとおりだ。
とりあえず、WINEで使っているアプリが動けばいい、という輩には、このパッチをあてれば、幸せになれるでしょう。
i386のプラットホーム上でおこなってください。amd64の64ビットプラットホームでWINEを使っている方も、i386の32bit上でコンパイル必要です。
$ apt-get source wine1.4
$ cd wine1.4-1.4
$ patch -i ../wine-openssl-force-tlsv1.patch
$ sudo apt-get build-dep wine1.4
$ debuild -us -uc -b -i
$ cd ..
$ dpkg -i *.deb
さて、なにが起こっているかというと、httpsをサポートするインターネット上のサーバには、不都合な挙動をしめすものがある、というのが発端です。
httpsでつかうSSL/TLSのバージョンや暗号化方式のネゴシエーションで、クライアントとサーバ間でそれぞれがサポート可能な方式を交換しあいます。その際に、リストのサイズに問題があります。最近の技術の進展で暗号化方法がふえて、リストが大きくなって来ました。
https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/986147
http://www.mentby.com/Group/openssl-users/sslv23method-in-openssl-100.html
+#ifdef OPENSSL_MAX_TLS1_2_CIPHER_LENGTH
+ /* Some servers hang if client hello > 256 bytes
+ * as hack workaround chop number of supported ciphers
+ * to keep it well below this if we use TLS v1.2
+ */
+ if (TLS1_get_version(s) >= TLS1_2_VERSION
+ && i > OPENSSL_MAX_TLS1_2_CIPHER_LENGTH)
+ i = OPENSSL_MAX_TLS1_2_CIPHER_LENGTH & ~1;
+#endif
そこでTLS V1.2のネゴシエーションで、Cipherの長さを制限しよう、ということになったのです。
ところが、これが曲者で、このワークアラウンドがなければ稼働するサーバで、不都合が発生します。
再現も可能で、
openssl s_client -connect www.evernote.com:443
とすればよい。
さて、私のこのパッチだが、WINEへの改変としては、正しくない、変更を加えている。Windowsの挙動と同じなのが正しいとすれば、違反している。それでも、動作するのだ。どうするかというと、SSLv3, SSLv2, TLSv1のネゴシエーションを行うところを、TLSv1のみでネゴシーエションさせる、という改変をくわえている。これで、不具合が実際上はでないのはなぜかというと、すでにSSLv2はセキュリティ上推奨されていない。最近の稼動しているWebサーバであれば、TLSv1をサポートしていないサーバがありえないし、あるとすればメンテナンスされているかどうか、とても心配なので、そんなサービスをつかわなければいいじゃん、というわけだ。
これでなぜ問題が解決するかというと、ネゴシエーションで交換する暗号化方式が制限されているので、リストの長さ制限に対しても問題がないからだ。
この件は、あまり日本語で情報がないようなので、念の為にかいておく。
OpenSSLのメンテなーとしては、1.0.1-4ubuntu4で、この問題は解決ずみ、という立場のようなのだが、Evernoteは引き続き調子悪いようなので、WINE+opensslの挙動としては、引き続き対応が必要、とおもうのである。
rdesktopで英語キーボードをもちいて、つながった先のWindowsターミナルサーバにて日本語変換を、Alt+~で行いたい。 そんなひとには、以下のような内容のファイルをen-jpというファイル名で作って、/usr/share/rdesktop/keymaps/において、 $ rdesktop -k en-jp とすると、幸せになれるでしょう。
# generated from XKB map us
include common
0x411
exclam 0x02 shift
at 0x03 shift
numbersign 0x04 shift
dollar 0x05 shift
percent 0x06 shift
asciicircum 0x07 shift
ampersand 0x08 shift
asterisk 0x09 shift
parenleft 0x0a shift
parenright 0x0b shift
minus 0x0c
underscore 0x0c shift
equal 0x0d
plus 0x0d shift
kana_HE 0x0d altgr
kana_TA 0x10 altgr
kana_TE 0x11 altgr
kana_I 0x12 altgr
kana_i 0x12 shift altgr
kana_SU 0x13 altgr
kana_KA 0x14 altgr
kana_N 0x15 altgr
kana_NA 0x16 altgr
kana_NI 0x17 altgr
kana_RA 0x18 altgr
kana_SE 0x19 altgr
bracketleft 0x1a
braceleft 0x1a shift
bracketright 0x1b
braceright 0x1b shift
semicolon 0x27
colon 0x27 shift
apostrophe 0x28
quotedbl 0x28 shift
grave 0x29
asciitilde 0x29 shift
backslash 0x2b
bar 0x2b shift
comma 0x33
less 0x33 shift
period 0x34
greater 0x34 shift
slash 0x35
question 0x35 shift