저의 빌드 환경은 Windows x86 64bit , Visual Studio 2015 환경입니다.
그리고 필요한 프로그램들은 (대략) 아래와 같습니다. (더 필요할 수 있음)
nasm (32bit/64bit 둘 다 따로 설치)
ActivePerl
D:\replace.bat (아래)
@echo ON setlocal call :FindReplace %1 %2 %3 exit /b :FindReplace <findstr> <replstr> <file> set tmp="%temp%\tmp.txt" If not exist %temp%\_.vbs call :MakeReplace for /f "tokens=*" %%a in ('dir "%3" /s /b /a-d /on') do ( for /f "usebackq" %%b in (`Findstr /mic:"%~1" "%%a"`) do ( echo(&Echo Replacing "%~1" with "%~2" in file %%~nxa <%%a cscript //nologo %temp%\_.vbs "%~1" "%~2">%tmp% if exist %tmp% move /Y %tmp% "%%~dpnxa">nul ) ) del %temp%\_.vbs exit /b :MakeReplace >%temp%\_.vbs echo with Wscript >>%temp%\_.vbs echo set args=.arguments >>%temp%\_.vbs echo .StdOut.Write _ >>%temp%\_.vbs echo Replace(.StdIn.ReadAll,args(0),args(1),1,-1,1) >>%temp%\_.vbs echo end with
32bit/64bit 개별적으로 빌드해야 합니다.
https://www.openssl.org/source/ 에서 openssl-fips-2.0.16.tar.gz와 openssl-1.0.2s.tar.gz (당시 최신버전, FIPS는 1.0.2tlflwmaks rksmd)을 다운받습니다.
그리고 압축을 풀어야 하는데 주의할 점은 내부에 파일들이 symbolic link으로 되어있는것들이 있기때문에 관리자 권한으로 압축을 풀어야 합니다.
저는 7-Zip을 관리자 권한으로 실행 후 압축을 풀었습니다.
32bit 용으로 빌드하기 위해 저는 아래의 위치에 압축을 풀었습니다.
D:\development\openssl-fips-2.0.16-x86_32
D:\development\openssl-1.0.2s-x86_32
VS2015 x86 native tools command prompt를 실행한 뒤 해당 위치로 이동합니다.
그리고 아래와 같이 환경을 설정 후 do_fips 실행합니다.
> cd D:\development\openssl-fips-2.0.16-x86_32
> set PATH=C:\Program Files (x86)\NASM;C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86;%PATH%
> set PROCESSOR_ARCHITECTURE=x86
> D:\replace.bat "/MD" "/MT" "util\pl\VC-32.pl"
> ms\do_fips.bat
...
***************************
****FIPS BUILD SUCCESS*****
***************************
(이러면 성공)
그럼 D:\usr\local\ssl\fips-2.0 가 생깁니다.
이제 OpenSSL를 빌드합니다.
> cd D:\development\openssl-1.0.2s-x86_32
> D:\replace.bat "/MD" "/MT" "util\pl\VC-32.pl"
> perl Configure VC-WIN32 fips --with-fipsdir=D:\usr\local\ssl\fips-2.0
...
Configured for VC-WIN32.
(이러면 성공)
> ms\do_nasm.bat
> nmake -f ms\ntdll.mak
이제 out32dll 에 빌드된 파일들이 있습니다.
D:\usr\local\ssl\fips-2.0와 out32dll을 따로 복사해 둡니다.
테스트합니다.
> out32dll\openssl version
OpenSSL 1.0.2s-fips
> out32dll\openssl md5 README
MD5(README)= 629ecea79d435f217d1a4b459797108a
> set OPENSSL_FIPS=1
> out32dll\openssl md5 README
Error setting digest md5
1724:error:060A80A3:digital envelope routines:FIPS_DIGESTINIT:disabled for fips:.\fips\utl\fips_md.c:180:
(오류가 뜨면서 동작하지 않아야 정상입니다.)
64bit용을 빌드하기 위해 위와 같은 방법으로 빌드하되 환경만 조금 바꿔줍니다.
VS2015 x64 native tools command prompt를 실행한 뒤 해당 위치로 이동합니다.
> rmdir /s/q D:\usr\local\ssl\fips-2.0
> cd D:\development\openssl-fips-2.0.16-x86_64
> set PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64;C:\Program Files\NASM;%PATH%
> set PROCESSOR_ARCHITECTURE=AMD64
> D:\replace.bat "/MD" "/MT" "util\pl\VC-32.pl"
> ms\do_fips.bat
> cd D:\development\openssl-1.0.2s-x86_64
> D:\replace.bat "/MD" "/MT" "util\pl\VC-32.pl"
> perl Configure VC-WIN64A fips --with-fipsdir=D:\usr\local\ssl\fips-2.0
> ms\do_win64a.bat
> D:\replace.bat "SSL=ssleay32" "SSL=ssleay64" "ms\ntdll.mak"
> D:\replace.bat "CRYPTO=libeay32" "CRYPTO=libeay64" "ms\ntdll.mak"
> D:\replace.bat "SSLEAY32" "SSLEAY64" "ms\ssleay32.def"
> D:\replace.bat "LIBEAY32" "LIBEAY64" "ms\libeay32.def"
> nmake -f ms\ntdll.mak
이제 out32dll 에 빌드된 파일들이 있습니다.
D:\usr\local\ssl\fips-2.0와 out32dll을 따로 복사해 둡니다.
'개발 및 운영 > 프로그래밍' 카테고리의 다른 글
C++ & AFX(MFC) 환경에서 사용자 정의 메세지 사용하면서 SendMessage으로 메세지 호출할 때 Run-Time Check Failure (0) | 2019.06.27 |
---|---|
안전한 IOCP 프로그래밍 (0) | 2019.06.23 |
WindowsPE에서 디버깅하기 (0) | 2018.11.07 |
libcef 멈춰버리는 문제 해결 (0) | 2018.07.02 |
CodeVirtualizer 주의점 #1 (0) | 2017.12.26 |
댓글