2015-02-04 4 views
0

openssl 소스 코드에서 apps/s_client.c으로 놀고 있습니다. 몇 가지 사항을 변경하고 실행하고 싶지만 파일을 저장하고 make all 또는 make을 실행 한 후에 변경 사항이 반영되지 않습니다.s_client의 코드를 수정하는 방법?

예를 들어,이에 sc_usage 기능을 변경 :

BIO_printf(bio_err,"This is how you use s_client\n"); 
BIO_printf(bio_err,"usage: s_client args\n"); 
BIO_printf(bio_err,"\n"); 
BIO_printf(bio_err," -host host  - use -connect instead\n"); 
BIO_printf(bio_err," -port port  - use -connect instead\n"); 

그때 저장하고 apps 폴더에 make all을 수행하지만이 수행하여 프로그램을 실행할 때 : openssl s_client abc를, 내가하지 내가 소개 한 라인 this is how you use s_client을 출력하십시오.

어디로 잘못 가고 있습니까?

답변

1

올바른 앱을 실행 하시겠습니까? ./openssl을 시도하십시오.

Linux에서 현재 디렉토리는 기본적으로 실행 파일이 검색되지 않으므로 시스템의 openssl을 실행하고있을 가능성이 큽니다.

2

파일을 저장하고 실행 한 후 변경 사항이 반영되지 않습니다.

트릭을 알고 나면 그보다 훨씬 쉽습니다.

  1. 빌드 정상
  2. 등으로 OpenSSL 라이브러리는 장소에 s_client.c
  3. 컴파일 s_client.c합니다 (apps/ 디렉토리)로 변경합니다 일반

  4. 등으로 OpenSSL 라이브러리를 설치

    export OPENSSLDIR=/usr/local/ssl/darwin  
    gcc -DOPENSSL_NO_PSK -DMONOLITH -I$OPENSSLDIR/include -I../ -c apps.c  
    gcc -DOPENSSL_NO_PSK -DMONOLITH -I$OPENSSLDIR/include -I../ -c app_rand.c  
    gcc -DOPENSSL_NO_PSK -DMONOLITH -I$OPENSSLDIR/include -I../ -c s_cb.c 
    gcc -DOPENSSL_NO_PSK -DMONOLITH -I$OPENSSLDIR/include -I../ -c s_socket.c  
    gcc -DOPENSSL_NO_PSK -I$OPENSSLDIR/include -I../ app_rand.o apps.o s_cb.o s_socket.o \ 
        $OPENSSLDIR/lib/libssl.a $OPENSSLDIR/lib/libcrypto.a s_client.c -o my_s_client.exe 
    

선언 (psk_key)이 주석 처리되었으므로이 필요합니다. make install 뒤에 e_os.h이 설치되어 있지 않으므로 -I../이 필요합니다.

$ ./my_s_client.exe -connect www.google.com:443 
CONNECTED(00000003) 
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA 
verify error:num=20:unable to get local issuer certificate 
verify return:0 
--- 
Certificate chain 
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com 
    i:/C=US/O=Google Inc/CN=Google Internet Authority G2 
... 

전체 라이브러리 또는 모든 응용 프로그램을 재 구축 할 필요가 없습니다 : OpenSSL이 실제로 그것을 해제하기 전에 자신의 물건을 테스트하는 경우 그것은 확실히 ...

다음

좋을 것이다. openssl s_client ...은 필요 없습니다.

관련 문제