如何修改s_client的代码?

时间:2015-02-04 04:49:04

标签: c linux networking ssl openssl

我在apps/s_client.c源代码中使用openssl。我想进行一些更改并运行它,但在保存文件并执行make allmake之后,我的更改未得到反映。

例如,我将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");

然后我保存并在make all文件夹中执行apps,但是当我通过执行此操作运行程序时:openssl s_client abc,我看不到我引入的行,{ {1}},在输出中。

我哪里错了?

2 个答案:

答案 0 :(得分:2)

  

我想进行一些更改并运行它,但是在保存文件并执行make all或make之后,我的更改没有得到反映。

一旦你了解了这些技巧,它就更容易了。

  1. 正常构建OpenSSL库
  2. 正常安装OpenSSL库
  3. s_client.c
  4. 进行更改
  5. 编译s_client.c到位(apps/目录):

    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
    
  6. 需要OPENSSL_NO_PSK,因为声明(psk_key)已被注释掉。需要-I../,因为在e_os.h之后未安装make install。如果OpenSSL在发布之前实际测试了它们的东西,那肯定会很好......

    然后:

    $ ./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 s_client ...

答案 1 :(得分:1)

您确定要运行正确的应用吗?试试./openssl

在Linux中,默认情况下不会搜索当前目录中的可执行文件,因此您可能正在运行系统openssl