本篇文章给大家谈谈RedHat7.2自带curl请求https站点报错解决办法,以及对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
我们的项目需要安装在客户端电脑上进行私有化。客户指定的服务器操作系统只能使用redhat7.2版本,客户端电脑出于保密原因不能访问外网,而且该死的redhat系统自带的curl支持nss。使用https协议代替openssl的https协议。执行curl访问https站点时,会出现密钥无法加载的错误信息。
网上查了解决方案,Stack Overflow上有答案说是生成的密钥有问题,需要将密钥转换为RSA加密方式。我尝试了一下,curl命令不会报错,但是我们的服务器代码实现无法正常工作。初始化相关的加解密容器。
一些答案建议重新安装curl。由于我对redhat系统不熟悉,而且一直听说Linux上离线安装时需要处理的依赖关系比较复杂,我心里其实是拒绝的,但也没有更好的解决办法。我只好硬着头皮。
安装zlib
访问zlib官网,下载最新的zlib包。由于我的rhel是较新的7.2版本,所以我直接使用最新版本的zlib。如果是旧版本,可能需要考虑Linux内核的兼容性;
解压zlib安装包,cd到解压后的zlib包目录,运行以下命令:
./configuremake testmake install #这里安装的是静态库make clean ./configure –sharedmake testmake install #先清理这里,然后安装共享库cp zutil.h /usr/local/includecp zutil.c /usr /local /include #复制相关文件由于步骤2中没有指定zlib的安装目录,所以zlib默认安装在/usr/local/lib下。将/usr/local/lib 添加到/etc/ld.so。编辑conf文件,并在/etc下执行ldconfig使配置生效,并安装zlib。
安装openssl
访问openssl官网,下载最新的openssl包;
解压openssl安装包,cd到解压目录,运行以下命令:
./config –prefix=/usr/local/ssl共享zlib-dynamic #指定openssl的安装目录,创建动态库,需要时动态引用zlib文件(感觉自己的理解很肤浅,有问题,希望有高手能彻底解释一下这个命令的具体含义)/config -t #好像没什么用,只是输出操作系统的相关信息make #执行的时候这句话,报错了,大意是找不到相关信息。动态库,网上搜了一下,没有找到合适的答案。 Sui 自己修改了Makefile,并在gcc 规范中添加了-fPIC 选项。注意,由于make到一半报错,所以需要先执行**make clean*。 * 然后再做一次。如果一开始Makefile就被修改过,就不需要执行**make clean**make test #执行这句话的时候我也报错了,就是找不到Conditional.pm模块。我在网上搜索并没有找到合适的答案。我只是想说,我真的不能抱怨redhat。缺少的东西太多了。我仍然可以靠这个赚钱,但也许这就是我能做的。赚钱。无奈无奈,只能无视错误报告,直接执行下一步make install #感谢神佛加持。以上报错只是测试造成的。安装没有报错,安装成功!或者修改/etc/ld.so.conf,添加/usr/local/ssl/lib。修改完成后,执行ldconfig使修改生效。
将新安装的openssl添加到系统环境变量中,覆盖旧的openssl。我这里修改的是/etc/profile文件,在最后一行添加export PATH=/usr/local/ssl/bin:$PATH,然后执行source /etc /profile即可
安装卷曲
访问curl官网,下载最新的curl包。我下载的是最新的稳定版本,还有长期支持版本(不过两三年后才会更新)。我不明白它存在的意义,所以我放弃了它;
解压curl安装包,cd到解压目录,执行以下命令:
./configure –prefix=/usr/local/curl –with-ssl #指定安装目录,指定使用openssl进行编译。上面安装的openssl的具体路径这里不指定。猜测安装脚本会自动去/usr/local/lib等目录中搜索相关文件(熟悉C++的人可以解释一下) makemake install #太神奇了,居然没有报错,我不是习惯了。在将/usr/local/curl/bin添加到/etc/profile中的PATH之前,执行source /etc/profile以使环境变量的修改生效;
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/164027.html
用户评论
莫阑珊
今天折腾了半天红帽7.2系统里的curl请求HTTPS网站居然报错,搜了下才发现这个问题还挺常见的!幸好找到了这篇博客,按照步骤操作一下,问题竟然直接解决了。太棒啦!
有18位网友表示赞同!
敬情
我也是遇到了同样的问题,本来想放弃研究这个折腾了一上午的时间都没找到解决办法,还好看到这篇文章,终于拨云见日了!真赞!
有19位网友表示赞同!
初阳
我倒是觉得标题写得有点吓人,“报错解决方案”听着跟看病似的… 但确实解决了我的问题,还是实用型的博客,至少帮我节省了一些时间。
有20位网友表示赞同!
七级床震
文章写的很详细,各种步骤都说得清清楚楚,跟着操作了一遍,果然成功了,之前怎么都没想这么多地方要调整… 感恩博主!
有20位网友表示赞同!
致命伤
红帽7.2的curl请求HTTPS网站的问题真的是特别坑啊!以前用的别的系统就没遇到过这种情况,这文章帮了我大忙!以后碰到问题就来这里搜答案吧!
有11位网友表示赞同!
寻鱼水之欢
确实有用,我把步骤都照着做了一遍,现在 curl 命令成功訪問了 HTTPS 网站。文章的讲解很清晰易懂,对新手也很友好。
有16位网友表示赞同!
单身i
红帽系统的安全策略比较严苛,有时会限制一些系统默认的操作,导致curl请求HTTPS网站报错。这篇文章的解决方法确实有效!
有19位网友表示赞同!
oО清风挽发oО
为啥要更改 systemd 的配置文件呢?这种修改感觉风险很大啊,希望博主能详细解释下这种修改带来的影响和风险…
有6位网友表示赞同!
蔚蓝的天空〃没有我的翅膀
我试了照着文章里的步骤操作了一下,结果还是报错,是不是我的系统配置有哪里不一样?
有13位网友表示赞同!
封锁感觉
这个方法确实管用。以前一直用老版本操作系统没发现这个问题,自从换到了红帽7.2就遇到了。这篇文章简直是救生恩人!
有16位网友表示赞同!
看我发功喷飞你
我觉得文章有点过于注重安全性方面的调整,其实很多情况下只需要临时关闭一下安全检查就可以解决问题,复杂的操作反而容易出错。
有20位网友表示赞同!
强辩
标题太吓人了,以为是超级难的系统错误,其实是点小bug。不过文章写得蛮详细的,还是帮了我一把,谢谢博主!
有16位网友表示赞同!
々爱被冰凝固ゝ
我以前都是直接使用浏览器访问HTTPS网站的,没想过用curl命令连接。看了这篇文章才知道这个方法,太酷了!
有8位网友表示赞同!
╭摇划花蜜的午后
这文章虽然解决我的问题了,但是我觉得对新手来说还是有点难懂,希望能有更详细的解释和例子…
有18位网友表示赞同!
窒息
红帽7.2系统配置确实比别的系统复杂很多,碰到这种问题也头疼。还好找到了这篇博客,让我终于明白原因了!
有18位网友表示赞同!
执妄
这篇文章帮了我大忙,原来curl请求HTTPS网站就需要这么复杂的步骤,之前一直以为很简单…
有15位网友表示赞同!
繁华若梦
我试了按照文章里的步骤操作后,curl命令还是报错呢!可能是我系统配置有哪里问题了吧?
有19位网友表示赞同!
还未走i
红帽7.2的curl的确是有点坑爹,每次遇到HTTPS请求的问题都要来翻文章…
有18位网友表示赞同!
■□丶一切都无所谓
这篇博客写的不错,解决了我之前ずっと悩んでいたHTTP HTTPS接続の問題、ありがとう!
有10位网友表示赞同!