国密Nginx——Openresty编译安装以支持国密SSL

忘记第一次了解到国密是什么时候了,但是我依稀记得第一次研究折腾国密SSL是在去年(2021)的某项目中接触到奇安信可信浏览器中国密SSL的支持。
但是折腾了一段时间找到了几种方法都没有解决,主要是当时想用openssl直接实现吧(忘记了。。。。。。)

这次找到的方法还是和之前的差不多(比如:Gmssl、Tassl等),此次额外了解到了沃通的实现,可惜在我编译完成后使用测试证书却被告知需要使用沃通的证书才行。

使用gmssl(github上的)会提示只用于测试的字样,而且不知道开源协议不知道能否商用就决定再换一个折腾了。

一开始使用Tassl的时候我使用的是Nginx,编译通过后使用Openresty为了能直接使用Lua。

说起惭愧,由于分神在1.1.1bTASSL-1.1.1k版本中拉错了版本,不得不都折腾一遍了。

编译TaSSL

yum update -y


yum install -y make gcc-c++ pcre-devel zlib-devel perl-devel wget unzip git


git clone https://github.com/jntass/TASSL-1.1.1k.git


cd TASSL-1.1.1k/


./config --prefix=/usr/local/tassl


make -j8


make install

编译Openresty

wget https://openresty.org/download/openresty-1.21.4.1.tar.gz


tar zxvf openresty-1.21.4.1.tar.gz


cd openresty-1.21.4.1


vi bundle/nginx-1.21.4/auto/lib/openssl/conf



./configure --prefix=/usr/local/openresty --with-http_stub_status_module --with-stream --with-http_ssl_module --with-stream_ssl_module --with-openssl=/usr/local/tassl/


make -j8


make install

conf修改范例

            CORE_INCS="$CORE_INCS $OPENSSL/include"
            CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
            CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
            CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
            CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
            CORE_LIBS="$CORE_LIBS $NGX_LIBPTHREAD"

nginx.conf

    ssl_certificate /usr/local/tassl/tassl_demo/cert/certs/SS.crt;
    ssl_certificate_key /usr/local/tassl/tassl_demo/cert/certs/SS.key;

    ssl_certificate /usr/local/tassl/tassl_demo/cert/certs/SE.crt;
    ssl_certificate_key /usr/local/tassl/tassl_demo/cert/certs/SE.key;

    ssl_session_timeout 5m;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECC-SM4-SM3:ECDH:AESGCM:HIGH:MEDIUM:!RC4:!DH:!MD5:!aNULL:!eNULL;
    ssl_prefer_server_ciphers on;

同样不知道这个的开源协议是啥?!

参考

ChiuYut

2022年08月20日

发布者

ChiuYut

咦?我是谁?这是什么地方? Ya ha!我是ChiuYut!这里是我的小破站!