pengtianabc / curl-gm

curl with GmSSL support base on cURL-7.65.0
Other
12 stars 15 forks source link

编译问题 #2

Closed yuanjilee closed 3 years ago

yuanjilee commented 3 years ago

麻烦问下这个库是要怎么编译? 执行 ./build.sh 就可以吗?但是路径里并没有看到国密源码或者 .a 库

pengtianabc commented 3 years ago

这里的的编译流程与curl官方无差别,只是需要通过指定--with-ssl路径为openssl/gmssl/tassl库你设备上的安装路径

build.sh只是用于示例,里面的路径应该与你的不同

yuanjilee commented 3 years ago

很感谢你的回复~

看了你的commit记录,应该是在 curl 的基础上做了gmssl 的双证书支持,很高兴遇到这个库。

我最近在调研 curl + gmssl 实现国密的方案,现在卡在了怎么通过 curl 去改变 TLS 握手支持国密的 sm2 加密,以及如何设置 ECDHE-SM2-WITH-SMS4-GCM-SM3 加密套件。

因为一直做移动端开发,所以对 curl 这块不熟悉,经过调研本来想着在 curl 的 curl_easy_setopt(_curl, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function); 方法回调里拿到 sslctx,然后通过修改sslctx 初始化和设置 GMTLS_client_method,但是又不知道该具体设置东西。

麻烦请教下:

  1. 我要在 curl 里设置 gmssl 的加密相关,以保证TLS通过gmssl 的加密套件进行握手(Client hello/Server hello)、密钥协商、证书交换流程,该怎样设置比较好?
  2. curl-gm 可以为网络请求通过国密加密在集成过程中提供哪些便利?

期待您的回复~

pengtianabc commented 3 years ago

TLS握手支持sm2这个是由套件决定的,只要套件是被ssl库所支持的,那就是可以支持的

curl使用ssl的时候对ssl接口封装极少,--ciphers参数在此处有详细描述(里面介绍的实际就是openssl支持的套件,所以你应该可以直接通过该参数达到效果。

你要在curl里设置gmssl相关的东西,可以换成“curl的哪些配置项会影响openssl”,我以前做测试的是够正常连接国密网站的,所以在你知道curl的局限性之前,建议把注意力放在如何使用curl上,而不是如何改它的代码

至于你想要做集成开发,其实更应该参考的openssl s_server命令和openssl s_client命令,你需要把curl看成是ssl库的调用者,所以它能为你带来的就是:很多轮子不用再造一次

yuanjilee commented 3 years ago

十分感谢解惑~

给出的思路让我收获很多,同时也对TLS握手和curl 有了更深的认识。 最终找到了正确解决问题的思路,特来感谢。