Websocket SSL 연결을 위해 OpenSSL을 Static 빌드해서 사용한다. 현재 Open SSL의 버전은 1.x.x와 3.x.x 가 존재한다.
아래 내용은 한글 윈도우즈 10에서 Visual Studio 2022 버전 환경 기반이다.
다른 버전에서도 크게 차이는 없을 것으로 판단됨.
Open SSL 소스 코드 다운로드 :
아래 사이트에서 다운로드 1,3 버전 중 선택해서 최신 안정화 버전으로 다운로드 한다.
https://github.com/openssl/openssl/releases
Perl 설치 :
두버전 모두 Perl이 설치되어야 빌드가 가능하다.
Perl 다운로드 : https://strawberryperl.com/
NASM 설치
nasm 다운로드 : https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D
nasm 2.16.01 버전으로 설치해서 빌드
환경 변수 등록
빌드시에 VS의 CMD 창에서는 빌드가 안됨, 별도의 x86 툴로 빌드해야한다.
윈도우의 환경 변수로 아래 Path를 등록해준다
한글 윈도우 터미널 창 코드 관련 문제
한글 코드 관련으로 빌드시에 오류가 발생할 수 있다. 오류 발생시 터미널 창에서 아래 명령으로 환경 설정을 해준다.
Build 하기
configure 설정 만들기
터미널 창을 실행하고 소스가 저장된 디렉토리로 이동한다.
아래 명령어로 x86 툴로 64비트로 빌드하도록 설정한다.
configure 설정 (디버그/ 릴리즈 모드)
빌드 실행
완료 후에 C:\Program Files\OpenSSL 폴더안에 빌드된 라이브러리와 Include 파일이 설치된다.
테스트 실행
1.1.1w 버전으로 pass 됨
Test 결과
1.1
.1w
Microsoft(R) Program Maintenance Utility 버전
14.00
.
24247.2
Copyright (c) Microsoft Corporation. All rights reserved.
mkdir .\test\test-runs
set SRCTOP=.
set BLDTOP=.
set RESULT_D=.\test\test-runs
set PERL=C:\Strawberry\perl\bin\perl.exe
set OPENSSL_ENGINES=C:\Users\siseongahn\Develop\openssl\openssl-
1.1
.1w\engines
set OPENSSL_DEBUG_MEMORY=on
"C:\Strawberry\perl\bin\perl.exe"
".\test\run_tests.pl"
test\recipes\
01
-test_abort.t .................... ok
test\recipes\
01
-test_sanity.t ................... ok
test\recipes\
01
-test_symbol_presence.t .......... skipped: Only useful when building shared libraries
test\recipes\
01
-test_test.t ..................... ok
test\recipes\
02
-test_errstr.t ................... skipped: This is unsupported on MSYS/MinGW or MSWin32
test\recipes\
02
-test_internal_ctype.t ........... ok
test\recipes\
02
-test_lhash.t .................... ok
test\recipes\
02
-test_ordinals.t ................. ok
test\recipes\
02
-test_stack.t .................... ok
test\recipes\
03
-test_exdata.t ................... ok
test\recipes\
03
-test_internal_asn1.t ............ ok
test\recipes\
03
-test_internal_chacha.t .......... ok
test\recipes\
03
-test_internal_curve448.t ........ ok
....