!!!OpenSSL覚書 OpenSSLを使用して、SSLを使った通信を行う覚書です。 「[[RenderMail|RenderMail2_shade]]」プラグインで利用している部分の補足になります。 !!OpenSSLのソースの取得 http://www.openssl.org/ のSourceから「openssl-1.0.1e.tar.gz」を取得。 これを解凍すると、「openssl-1.0.1e」というディレクトリ内にソースやINSTALLファイルなどが展開されます。 ここでは、C/C++言語向けのstaticライブラリを生成するものとします。 !!Windowsでのビルド 参考サイトは以下。 http://developer.covenanteyes.com/building-openssl-for-visual-studio/ *Visual Studio 2010のインストール *ActivePerlのインストール が必要です。 32bit/64bit版のライブラリを別々に生成します。 展開した「openssl-1.0.1e」ディレクトリをまるごとコピーし、 「openssl-1.0.1e_32bit」「openssl-1.0.1e_64bit」ディレクトリを作成。 !32bit版のビルド スタートメニューからVisualStudio 2010の「Visual Studio Tools」の「Visual Studioコマンドプロンプト (2010)」を起動。 これで、nmakeなどのコマンドがコマンドラインで使えるようになります。 perl -v と入力して、perlが使用できるのを確認します。 次にコマンドラインで以下を実行。 cd openssl-1.0.1e_32bit perl Configure VC-WIN32 --prefix=C:\Build-OpenSSL-VC-32 no-asm ms\do_ms nmake -f ms\nt.mak nmake -f ms\nt.mak install と指定すると、「C:\Build-OpenSSL-VC-32」ディレクトリにincludeファイルとlibファイルが生成されています。 このディレクトリ内で必要なファイルは、 「include ディレクトリ」「lib/libeay32.lib」「lib/ssleay32.lib」。 !64bit版のビルド スタートメニューからVisualStudio 2010の「Visual Studio Tools」の「Visual Studio x64 Win64 コマンド プロンプト (2010)」を起動。 これで、nmakeなどのコマンドがコマンドラインで使えるようになります。 perl -v と入力して、perlが使用できるのを確認します。 次にコマンドラインで以下を実行。 cd openssl-1.0.1e_64bit perl Configure VC-WIN64A --prefix=C:\Build-OpenSSL-VC-64 no-asm ms\do_win64a nmake -f ms\nt.mak nmake -f ms\nt.mak install と指定すると、「C:\Build-OpenSSL-VC-64」ディレクトリにincludeファイルとlibファイルが生成されています。 このディレクトリ内で必要なファイルは、 「lib/libeay32.lib」「lib/ssleay32.lib」。 libeay32.lib ==> libeay64.lib ssleay32.lib ==> ssleay64.lib と名前変更しておきます。includeディレクトリは、32bit版と同じものです。 !!Macでのビルド 32bit/64bitをあわせたUniversal Binary形式でstaticライブラリを作ることにします。 参考サイトは以下。 https://gist.github.com/tmiz/1441111 *XCode 4.6.3 でMac OS 10.8.4上で試しました。 XCodeはもしかしたら「Command Line Tools」が必要だったかもしれません(インストールした記憶があいまい)。 Win同様に、32bit/64bit版のライブラリを別々に生成します。 展開した「openssl-1.0.1e」ディレクトリをまるごとコピーし、 「openssl-1.0.1e_32bit」「openssl-1.0.1e_64bit」ディレクトリを作成。 /Users/hoehoe/openssl openssl-1.0.1e_32bit openssl-1.0.1e_64bit のようにディレクトリを配置したとします。 ターミナルを開いて、 perl -v と入力してPerlが利用できるのを確認。 cd /Users/hoehoe/openssl cd openssl-1.0.1e_32bit ./Configure darwin-i386-cc make cd ../ cd openssl-1.0.1e_64bit ./Configure darwin64-x86_64-cc make cd ../ lipo -create openssl-1.0.1e_32bit/libcrypto.a openssl-1.0.1e_64bit/libcrypto.a -output libcrypto.a lipo -create openssl-1.0.1e_32bit/libssl.a openssl-1.0.1e_64bit/libssl.a -output libssl.a これで「/Users/hoehoe/openssl」ディレクトリに、 「libcrypto.a」「libssl.a」が生成されました。 file libcrypto.a file libssl.a と入力して、32bit(i386)/64bit(x86_64)の両方が含まれるのを確認してください。 この2つが、Macで使用するOpenSSLファイルのstaticライブラリになります。 includeファイルは、Windowsのと同じです。 !!まとめ これで、Windowsの32bit/64bit版のstaticライブラリ、MacのUniversal Binary形式(32bit/64bit)のstaticライブラリとincludeファイルが生成されました。 include openssl aes.h asn1.h ... lib libcrypto.a libssl.a libeay32.lib libeay64.lib ssleay32.lib ssleay64.lib のように配置して、これをプログラムで利用するようにします。 使用例は「[[RenderMail|RenderMail2_shade]]」プラグインのソースを見ると分かりやすいかと思います。 SSLを使わないサーバとポートを指定したソケット通信もできますので、WinSock2などを使わずにOpenSSLで通信部は統一する、なんてことができます。