おのたく日記 YouTubeも始めました→
2017-08-24(Thu) [長年日記]
■ [Stone] Windows版 stone TLS1.2対応
のようにDebian testing(10 Buster)のOpenSSLが、
* Disable TLS 1.0 and 1.1, leaving 1.2 as the only supported SSL/TLS
version. This will likely break things, but the hope is that by
the release of Buster everything will speak at least TLS 1.2. This will be
reconsidered before the Buster release.
[openssl_1.1.0f-4_changelogより引用]
なんて激しいことを言っていて、TLS1.2まで全てを上げないとならない。
参考: Linux Daily Topics 2017年8月15日 ふるいTLSにはサヨナラを ―Debian,TLS 1.2対応を強化
■ stoneのWindows版バイナリのTLS1.2対応版は公開されてない
そんな中、stoneで、公開されているバイナリはstone version 2.3e 2.3.3.20 for Windows 64bitのバイナリで、TLS1.0までしか対応していなかった。
■ stone TLS1.2対応版ソース
調べてみると
CVS レポジトリの最新版 stone.c は TLS1.2 に対応しております。
http://ja.osdn.net/cvs/view/stone/stone/stone.c?view=log
VisualC++ の場合は、
nmake win-svc
などと実行すればビルドできます。この場合、regex.h ではなく pcreposix.h
が参照されます。
PCRE は http://www.pcre.org/ からダウンロードできます。
[仙石浩明の日記より引用]
ということで、確かに、
OSDNでのCVSレポジトリには、TLS1.2に対応したソースが公開がされているのだけど、はやりコンパイル済みのWindows版のバイナリは見つからなかった。
このソースを取ってきて、Cygwinでは、stone TLS1.2対応版を
$ make TARGET=stone ssl_stone
で簡単にコンパイルできた。
しかし、Cygwin版だとWindowsサービスにならない。
■ Windows版のコンパイル
そこで、Windows版をコンパイルすることを決意した。
おうちさーばは、最近Dockerコンテナが沢山動いていて、VMが重くて最近の重厚長大なVisual Studioが動かないので、クラウドにWindowsを用意して無料のVisutal Studio Community 2017をインストールして、コンパイルした。
■ Windows版 stone TLS1.2対応版のコンパイルに必要な物
最近のVisual Studioは、Pythonまで対応していて、必要な物だけインストールできるようになっているのだけど、stoneのコンパイルには、「C++によるデスクトップ開発」と、そのオプションの「Windows XP Suppor for C++」が必要。
オプションを入れないと、サービス化するためのmcとrcがインストールされない。
あと、stoneの前提のOpenSSL 1.0と、PCREも必要。
OpenSSLは、最新の1.1だと、stoneのソースが対応していないので、Developer Files ZIPと、Binary Files ZIPを使った。
WINDOWSだと、ソースのTLS1.1とTLS1.2が無効になっているので
#ifdef WINDOWS
-#define OPENSSL_NO_TLS1_1
-#define OPENSSL_NO_TLS1_2
+// #define OPENSSL_NO_TLS1_1
+// #define OPENSSL_NO_TLS1_2
[diff stone.cより引用]
として有効にしてコンパイルした。
変更したソースは、GitHub takuya-o/stoneに公開しておきます。
ローカルでビルドしたバイナリも、同じくGitHubでstone24LB.zipとして公開しています。
|