簡介
因為美國專利法和其它法律對加密技術的限製,Apache Web Server 的二進製發行版不
包含對SSL的支持。但是所有相關源代碼卻可以從網上找到,美國司法部居然這麽弱?
1. 編譯OpenSSL
OpenSSL是一個開放源碼的工具集,它支持SSL v2/v3,TSL v1,以及其它通用加密算法。
編譯之前,你需要以下東東:
a. OpenSSL源碼
b. ActiveState Perl
c. C 編譯器,本文選用Visual C++ 6.0。OpenSSL文檔上推薦的其它編譯器有Borland C
和GNU C (Mingw32 or Cygwin)
d. ASM 編譯器,本文選用Free Netwide Assembler NASM。OpenSSL文檔上推薦的其它編
譯器有Microsoft MASM
開始
a. 解開OpenSSL源碼,假設解到c:\openssl
c:\>cd openssl
b. 配置環境變量
c:\openssl>perl Configure VC-WIN32
c. 生成make文件
c:\openssl>ms\do_nasm
d. 編譯
c:\openssl>nmake -f ms\ntdll.mak
如果nmake找不到MSPDB60.DLL,你可以把以下路徑加到PATH環境變量裏:
Microsoft Visual Studio\Common\MSDev98\Bin\
e. 測試
c:\openssl>cd out32dll
c:\openssl>..\ms\test
2. 編譯Apache
編譯之前,你需要:
a. Visual C++ 6.0,上節課你已經用過了
b. AWK Utility, AWK是一種特殊用途的編程語言,主要用來進行簡單的數據格式處理。
AWK Utility 就是處理AWK文件的工具
c. OpenSSL libraries,就是上節課的作業啦。
開始
a. 解開Apache源碼,假設解到c:\>httpd-2.0.36
c:\>cd httpd-2.0.36
b. 複製OpenSSL libraries
c:\httpd-2.0.36>mkdir srclib\openssl
c:\httpd-2.0.36>xcopy/e openssl srclib\openssl。
d. 打開httpd-2.0.36\modules\ssl\mod_ssl.mak,刪除以下代碼
bison -y -d ssl_expr_parse.y
sed -e "s;yy;ssl_expr_yy;g" -e "/#if defined(c_plusplus) || defined(__cplusplus)/,/#endif/d" <y.tab.c >ssl_expr_parse.c
del y.tab.c
sed -e "s;yy;ssl_expr_yy;g" <y.tab.h >ssl_expr_parse.h
del y.tab.h
flex -Pssl_expr_yy -s -B ssl_expr_scan.l
sed -e "/$$Header:/d" <lex.ssl_expr_yy.c >ssl_expr_scan.c
del lex.ssl_expr_yy.c
e. 編譯
nmake -f makefile.win SERVERNAME=myDomainName PORT=myPort INSTDIR=myInstallDir installr
缺省設置
SERVERNAME=localhost
PORT=80
INSTDIR=\Apache2
3. 資源列表
ActiveState Perl, http://www.activestate.com/ActivePerl
Apache-2.0.x Source Code for Win32 compilers http://www.apache.org/dist/httpd
AWK Utility http://cm.bell-labs.com/cm/cs/who/bwk
注意,這位同學發明了C、AWK,還是幾本牛書的作者
C Programming Language
Practice of Programming
NASM http://www.kernel.org/pub/software/devel/nasm/binaries/win32
OpenSSL-0.9.6d Source Code http://www.openssl.org/source
Visual C++ 6.0 http://msdn.microsoft.com/visualc/productinfo/previous/default.asp