前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >下载、编译、安装、使用、调试openssl最新版

下载、编译、安装、使用、调试openssl最新版

原创
作者头像
angelo
修改2019-07-22 16:41:41
5.1K0
修改2019-07-22 16:41:41
举报
文章被收录于专栏:CDN_NewCDN_New

说明:文中使用的openssl最新版为1.1.1

下载

代码语言:txt
复制
mkdir -p /data/angelotong/openssl && cd /data/angelotong/openssl
wget 'https://github.com/openssl/openssl/archive/master.zip'
unzip master.zip

编译

代码语言:txt
复制
cd openssl-master
./config --prefix=/data/angelotong/openssl -d  (1. prefix为安装路径,为了调试过程中不影响系统现有openssl,我们安装到新建目录中  2. -d参数表示加入debug调试信息,方便后面使用gdb调试)
make -j 48

安装

代码语言:txt
复制
make install (执行这个会安装到上面./config中的--prefix指定的目录,对于代码调试,可以仅编译不安装)
echo "/data/angelotong/openssl/lib" >> /etc/ld.so.conf  (如果选择安装,还需加入动态链接库的路径)
ldconfig -v

使用

代码语言:txt
复制
cd /data/angelotong/openssl/openssl-master/apps
./openssl version
输出:
OpenSSL 3.0.0-dev xx XXX xxxx (Library: OpenSSL 3.0.0-dev xx XXX xxxx)
代码语言:txt
复制
time ./openssl s_client -debug -connect 14.152.86.41:443 -showcerts -prexit -servername appdlssl.dbankcdn.com -state -tls1_2>/dev/null   (参数说明可以参考[https://www.openssl.org/docs/man1.1.1/man1/openssl-s_client.html](https://www.openssl.org/docs/man1.1.1/man1/openssl-s_client.html))
输出:
SSL_connect:before SSL initialization
SSL_connect:SSLv3/TLS write client hello
SSL_connect:SSLv3/TLS write client hello
SSL_connect:SSLv3/TLS read server hello
depth=1 C = US, O = DigiCert Inc, CN = DigiCert Global CA G2
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = CN, ST = Jiangsu, L = Nanjing, O = Huawei Software Technologies CO.Ltd, OU = Cloud5 Platform CNDR Dept, CN = appdlssl.hicloud.com
verify return:1
SSL_connect:SSLv3/TLS read server certificate
SSL_connect:SSLv3/TLS read server key exchange
SSL_connect:SSLv3/TLS read server done
SSL_connect:SSLv3/TLS write client key exchange
SSL_connect:SSLv3/TLS write change cipher spec
SSL_connect:SSLv3/TLS write finished
SSL_connect:SSLv3/TLS write finished
SSL_connect:SSLv3/TLS read server session ticket
SSL_connect:SSLv3/TLS read change cipher spec
SSL_connect:SSLv3/TLS read finished

测试使用成功

调试

调试s_client.c

image.png
image.png
代码语言:txt
复制
cd /data/angelotong/openssl/openssl-master/apps
gdb ./openssl
进入gdb交互界面后在添加断点:
b s_client.c:2915
image.png
image.png
image.png
image.png
代码语言:txt
复制
s_client.c代码如下:

run s_client -debug -connect 14.152.86.41:443 -showcerts -prexit -servername appdlssl.dbankcdn.com -state -tls1_2>/dev/null
执行上述run让程序运行起来,自动停到断点处:
image.png
image.png

此时还未开始进行实际的SSL握手,SSL_write(con, &(cbufcbuf_off), (unsigned int)cbuf_len); 会执行完整握手操作

代码语言:txt
复制
单步输入:n
image.png
image.png

由于握手等待时间过长,客户端超时了,再次重试一遍:

image.png
image.png

可以看到完整的握手已经执行完成,SSL握手调用底层接口,目前无法看到实现,下一篇文章会讲解如何具体调试握手过程

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 下载
  • 编译
  • 安装
  • 使用
  • 调试
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档