[archlinux][tls] archlinux下使curl支持sslv3的方法
描述
在archlinux下,希望使用curl产生一条使用sslv3的https访问请求。
使用curl的如下命令:
curl -k -vvv --sslv3 https://192.168.7.9:8080
然而很遗憾,因为sslv3太老了,所以它不支持,
╰─>$ curl -k -vvv --sslv3 https://192.168.7.9:8080
* Trying 192.168.7.9:...
* TCP_NODELAY set
* Connected to 192.168.7.9 (192.168.7.9) port (#)
* OpenSSL was built without SSLv3 support
* Closing connection
curl: () OpenSSL was built without SSLv3 support
根据提示,是openssl不支持。用openssl自身提供的工具进行验证,果然是不支持的,连这个参数也没有。
╰─>$ openssl s_client -ssl3 -connect t9: -CAfile ~/Keys/https/root/root.cer -servername test3.www.local
s_client: Option unknown option -ssl3
s_client: Use -help for summary.
man openssl s_client可以看到,这个选项是依赖编译时的。
-ssl3, -tls1, -tls1_1, -tls1_2, -tls1_3, -no_ssl3, -no_tls1, -no_tls1_1, -no_tls1_2, -no_tls1_3
These options require or disable the use of the specified SSL or TLS protocols. By default s_client will negotiate the highest mutually supported protocol version.
When a specific TLS version is required, only that version will be offered to and accepted from the server. Note that not all protocols and flags may be available,
depending on how OpenSSL was built.
重编openssl
一
openssl在默认的编译选项里关闭了SSLv3,只需要增加如下的编译选项,即可完成支持SSLv3的重新编译:
enable-ssl3. (enable-ssl3-method 是干嘛的???)
./Configure enable-ssl3 enable-ssl3-method linux-x86_64
二 archlinux 打包
我的openssl是包管理的,为了方便版本管理,我需要打个包。
a, 首先去下载源包的打包脚本, https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/openssl
-rw-r--r-- PKGBUILD
-rw-r--r-- ca-dir.patch
修改PKGBUILD
╰─>$ diff PKGBUILD.org PKGBUILD
7c7
< pkgrel=
---
> pkgrel=
15c15
< source=("https://www.openssl.org/source/${pkgname}-${_ver}.tar.gz"{,.asc}
---
> source=("${pkgname}-${_ver}.tar.gz"
35c34
< shared no-ssl3-method enable-ec_nistp_64_gcc_128 linux-x86_64 \
---
> shared enable-ssl3 enable-ssl3-method enable-ec_nistp_64_gcc_128 linux-x86_64 \
改了,版本号,文件路径,编译选项。
b 把一份源码带包到当前目录 openssl-1.1.1d.tar.gz, 然后运行makepkg命令生效安装包 openssl-1.1.1.d-2-x86_64.pkg.tar.xz
c 安装新的包,替换官方包
sudo pacman -U openssl-1.1..d--x86_64.pkg.tar.xz
三 测试
更新之后,使用前文的curl和openssl命令分别测试,openssl s_client已经支持了sslv3,但是curl仍然不支持。
╰─>$ openssl s_client -ssl3 -connect t9:5000 -CAfile ~/Keys/https/root/root.cer -servername test3.www.local
CONNECTED(00000003)
140060394198272:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert
...
SSL-Session:
Protocol : SSLv3
...
握手虽然失败,但那是server的问题。
重新编译 curl
在github下载最新的curl代码。使用如下命令重新编译,
这里需要注意的是:一,编译选项已经默认使用ssl。二,在archlinux下openssl不区分开发包和运行包,所以编译过程中curl
会默认的使用系统路径下的openssl进行链接,也就是上文中我们刚刚修改过的。
bash-5.0$ ./buildconf
bash-5.0$ ./configure
bash-5.0$ make
另外, 提一点关于autoconf的迷思,如果没有buildconf命令的话,需要先后执行如下的命令,以替代之:
bash-5.0$ aclocal
bash-5.0$ autoheader
bash-5.0$ autoconf
bash-5.0$ automake
最后
最后生出来的curl是静态链接的,与计划有点差距。(当然变成动态的也不难,不过那不是我们所关心的。)
╰─>$ ldd src/curl
not a dynamic executable
总之,现在可以sslv3了
─>$ ./src/curl -k -vvv --sslv3 https://192.168.7.9:8080
* Trying 192.168.7.9:...
* TCP_NODELAY set
* Connected to 192.168.7.9 (192.168.7.9) port (#)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: none
* SSLv3 (OUT), TLS handshake, Client hello ():
* SSLv3 (IN), TLS alert, handshake failure ():
* error::SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
* Closing connection
curl: () error::SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
[archlinux][tls] archlinux下使curl支持sslv3的方法的更多相关文章
- windows 下使clion支持c++11操作记录
最近用上了windows下的clion,发现默认安装的MINGW版本太低,导致所带的gcc版本竟然是3.5的,实在太老了,不支持c++11,于是手动修改了mingw的版本.首先去mingw的官网下载最 ...
- Windows下配置PHP支持LDAP扩展方法(wampserver)
在网上搜了好多文章都不行呢,大都是没有开启扩展的问题,可是我的是开启的. 终于看到一篇文章,因为我用的是wampserver.下面是文章原话: 然后你发现上面的提示依旧,因为这是网上大多能查到的资料的 ...
- destoon模块自定义字段的添加并让其支持搜索的方法
今天看了看模块设置里的自定义字段功能的用法,试着加了个新字段glry,设置了值,然后去数据库moduleid的article表看,字段成功加上了. 于是去template下article文件夹的lis ...
- C#中扩展StringBuilder支持链式方法
本篇体验扩展StringBuilder使之支持链式方法. 这里有一个根据键值集合生成select元素的方法. private static string BuilderSelectBox(IDicti ...
- 记一次在mac上源码编译curl,使其支持NSS的过程
一.背景 在一次学习https原理的过程中,希望客户端指定特定的cipher suites来抓包分析SSL/TLS的握手过程,就想到了使用curl工具,而不是使用浏览器. 接下来使用man curl找 ...
- Apache下开启SSI配置使html支持include包含
写页面的同学通常会遇到这样的烦恼,就是页面上的 html 标签越来越多的时候,寻找指定的部分就会很困难,那么能不能像 javascript 一样写在不同的文件中引入呢?答案是有的,apache 能做到 ...
- Apache下开启SSI配置,使html支持include包含
有的时候,我们的页面有公共的导航栏navbar,公共的脚注footer,那么我们就想把这些公共部分独立成一个html文件,在要引用的地方像引用js,css一样,给包含进来. Apache下开启SSI配 ...
- Linux下安装libiconv使php支持iconv函数
libiconv组件安装好了可以让我们php支持iconv函数了,这个函数的作用就是字符编码强制转换了,下面和111cn小编一起来看一个Linux中安装libiconv使php支持iconv函数的例子 ...
- windows下使用curl命令 && 常用curl命令
什么是curl命令? curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.Win64下的移植版本. 如何在windo ...
随机推荐
- 微信公众号开发系统入门教程(公众号注册、开发环境搭建、access_token管理、Demo实现、natapp外网穿透)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/a1786223749/article/ ...
- matlab学习笔记4--多媒体文件的保存和读取
一起来学matlab-matlab学习笔记4 数据导入和导出_2 多媒体文件的保存和读取 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...
- iOS UILabel文字自适应高度自适应
第一步:创建UILabel对象,并设置一些基本设置 UILabel *label = [[UILabel alloc] init]; label.text = @"8月29日,在雅加达亚运会 ...
- Servlet2.5版本和Servlet3.0版本
在学习这节之前你需要在你自己的电脑进行如下配置: 配置Java运行环境:JDK+JRE的安装配置,参考博客Windows下配置Java开发环境: 安装Eclipse:参考博客Windows下配置Jav ...
- Java抓取Codeforces——针对某一次提交的源码和数据
需要引入Jsoup依赖: <dependency> <!-- jsoup HTML parser library @ https://jsoup.org/ --> <gr ...
- linux修改系统时间和时区
1.修改系统时间linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时钟,是linux系统Kernel时间.当Linux启动时,系统Kernel ...
- [LeetCode] 157. Read N Characters Given Read4 用Read4来读取N个字符
The API: int read4(char *buf) reads 4 characters at a time from a file.The return value is the actua ...
- 「中山纪中集训省选组D1T1」最大收益 贪心
题目描述 给出\(N\)件单位时间任务,对于第\(i\)件任务,如果要完成该任务,需要占用\([S_i, T_i]\)间的某个时刻,且完成后会有\(V_i\)的收益.求最大收益. 澄清:一个时刻只能做 ...
- QT 安装 配置过程
QT, QT creator的安装,环境配置: 需要根据这个连接重新梳理一遍:https://blog.csdn.net/win_turn/article/details/50465127 1)一种方 ...
- Educational Codeforces Round 71
https://www.cnblogs.com/31415926535x/p/11460682.html 上午没课,做一套题,,练一下手感和思维,,教育场的71 ,,前两到没啥,,后面就做的磕磕巴巴的 ...