[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 ...
随机推荐
- NPOI导出EXCEL样式
public void Export(DataRequest<ExportModel> request, DataResponse<dynamic> response) { t ...
- 关于/r与/n 以及 /r/n 的区别总结
应该说还是区别的,\r就是回到行首,\n就是到下一行的,但是一般我们输出程序时,看不到明显的差别的 '\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格.通常用的Enter是两个加起来 ...
- 【Shell常用命令一】echo bash alias history 输出重定向 快捷键
echo输出命令 echo [选项] [输出内容] -e : 支持反斜线控制的字符转换 赋予执行权限 直接运行 chmond 755 hello.sh ./hello.sh 通过bash调用执行脚本 ...
- [LeetCode] 79. Word Search 单词搜索
Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from l ...
- [LeetCode] 451. Sort Characters By Frequency 根据字符出现频率排序
Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Input: ...
- idea创建一个springboot项目
第一种通过maven创建: 1.点击Create New Project 2.创建maven项目,选择jdk版本,点击next. 3.填写GroupId和ArtifactId,都是自定义的,然后点击n ...
- html5获取自己定位的方法
html5获取自己定位的方法直接用高德地图api 不要用百度地图api 不准确 <pre><!doctype html><html><head> < ...
- TCP/IP学习笔记12-- IP协议基础
IP(internet protocol, 网际协议) IP相当于OSI参考模型中的第三层 -- 网络层. --网络层的下一层--数据链路层的主要作用是在 同一种数据链路 的节点之间进行包传递,而一旦 ...
- vm采用NAT方式连接时,设置静态ip
一,共享无线连接或本地连接,给VMnet8. 在网络配置中,选着无线连接,右键属性,共享. 这里默认给虚拟网卡VMnet8,分配了IP:192.168.137.1. 二,在VMware中配置VMnet ...
- [转帖]微软宣布加入 OpenJDK 项目
微软宣布加入 OpenJDK 项目 https://news.cnblogs.com/n/646003/ 近日,微软的 Bruno Borges 在 OpenJDK 邮件列表中发布了一条消息,内容包含 ...