如何修改s_client的代码?
How to modify code for s_client?
我正在研究 openssl
源代码中的 apps/s_client.c
。我想做一些更改 运行,但在我保存文件并执行 make all
或 make
.
后我的更改没有得到反映
例如,我将 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
。
我哪里错了?
您确定 运行 应用正确吗?试试 ./openssl
.
在Linux中,默认不在当前目录搜索可执行文件,所以你可能是运行ning系统的openssl
.
I want to make a few changes and run it, but my changes are not getting reflected after I save the file and do a make all, or a make.
一旦你掌握了窍门,它甚至比这更容易。
- 正常配置 OpenSSL 库 (
configure
)
- 正常构建 OpenSSL 库 (
make depend && make
)
- 正常安装 OpenSSL 库 (
sudo make install
)
- 对
s_client.c
进行更改
- 就地编译
s_client.c
(apps/
目录):
这是油脂。您必须构建一些额外的目标文件,例如 apps.o
和 apps_rand.o
,以支持 s_client.o
.
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
需要 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 ...
.
我正在研究 openssl
源代码中的 apps/s_client.c
。我想做一些更改 运行,但在我保存文件并执行 make all
或 make
.
例如,我将 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
。
我哪里错了?
您确定 运行 应用正确吗?试试 ./openssl
.
在Linux中,默认不在当前目录搜索可执行文件,所以你可能是运行ning系统的openssl
.
I want to make a few changes and run it, but my changes are not getting reflected after I save the file and do a make all, or a make.
一旦你掌握了窍门,它甚至比这更容易。
- 正常配置 OpenSSL 库 (
configure
) - 正常构建 OpenSSL 库 (
make depend && make
) - 正常安装 OpenSSL 库 (
sudo make install
) - 对
s_client.c
进行更改
- 就地编译
s_client.c
(apps/
目录):
这是油脂。您必须构建一些额外的目标文件,例如 apps.o
和 apps_rand.o
,以支持 s_client.o
.
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
需要 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 ...
.