Skip to content

GmSSL/curl-gmssl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

curl-gmssl

本仓库基于 curl 8.20.0,增加了 GmSSL SSL/TLS 后端。该后端通过 curl 的 vtls 接口调用 GmSSL TLS API,可用于测试 TLS 1.2、TLS 1.3 以及国密相关 cipher suite。

编译 GmSSL

先准备一个启用了 TLS、AES、SHA2 和 P-256 的 GmSSL:

git clone --depth 1 --branch v3.2.0 https://github.com/guanzhi/GmSSL.git
cd GmSSL

cmake -S . -B build-tls \
  -DENABLE_TLS=ON \
  -DENABLE_AES=ON \
  -DENABLE_SHA2=ON \
  -DENABLE_SHA1=ON \
  -DENABLE_SECP256R1=ON \
  -DCMAKE_BUILD_TYPE=Release

cmake --build build-tls

编译完成后,GmSSL 库通常位于 build-tls/bin/,头文件位于 include/

编译 curl-gmssl

在本仓库根目录中配置并编译:

cmake -S . -B build-gmssl \
  -DCURL_USE_GMSSL=ON \
  -DCURL_USE_OPENSSL=OFF \
  -DCURL_USE_MBEDTLS=OFF \
  -DGMSSL_LIBRARY=/path/to/GmSSL/build-tls/bin/libgmssl.dylib \
  -DGMSSL_INCLUDE_DIR=/path/to/GmSSL/include \
  -DCURL_USE_LIBPSL=OFF \
  -DCURL_ZSTD=OFF \
  -DCURL_USE_LIBSSH2=OFF \
  -DCURL_DISABLE_LDAP=ON \
  -DBUILD_SHARED_LIBS=OFF \
  -DBUILD_CURL_EXE=ON \
  -DCMAKE_BUILD_TYPE=Release

cmake --build build-gmssl

Linux 上的 GMSSL_LIBRARY 通常是 libgmssl.so,macOS 上通常是 libgmssl.dylib

检查是否使用 GmSSL 后端

./build-gmssl/src/curl -V

输出中应包含类似内容:

libcurl/8.20.0 GmSSL/GmSSL 3.2.0

其中 GmSSL/GmSSL 3.2.0 表示当前 curl 使用的是 GmSSL TLS 后端以及对应 GmSSL 版本。

也可以在连接时使用 -v 查看握手结果:

./build-gmssl/src/curl -v https://127.0.0.1:19454/

成功时会看到类似:

GmSSL: TLSv1.3 Handshake complete, cipher is TLS_AES_128_GCM_SHA256

指定协议版本

使用 TLS 1.3:

./build-gmssl/src/curl \
  --tlsv1.3 \
  --cacert rootcacert.pem \
  https://127.0.0.1:19454/

使用 TLS 1.2:

./build-gmssl/src/curl \
  --tlsv1.2 \
  --cacert rootcacert.pem \
  https://127.0.0.1:19443/

指定密码套件

TLS 1.3 使用 --tls13-ciphers

./build-gmssl/src/curl \
  --tlsv1.3 \
  --tls13-ciphers TLS_AES_128_GCM_SHA256 \
  --cacert rootcacert.pem \
  https://127.0.0.1:19454/

TLS 1.2 使用 --ciphers

./build-gmssl/src/curl \
  --tlsv1.2 \
  --ciphers TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 \
  --cacert rootcacert.pem \
  https://127.0.0.1:19443/

当前 GmSSL 后端支持的主要 cipher suite 包括:

TLS_SM4_GCM_SM3
TLS_AES_128_GCM_SHA256
TLS_ECDHE_SM4_GCM_SM3
TLS_ECDHE_SM4_CBC_SM3
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256

当前不支持 AES-256、CCM 和 ChaCha20-Poly1305 cipher suite。如果显式指定的 cipher suite 全部不被 GmSSL 后端支持,curl 会返回 cipher 配置错误,而不会回退到 默认 cipher suite。

About

Curl with GmSSL backend

Resources

License

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors