开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
随着国家对加密重视,一些敏感机构都被要求国产国密化。现在开源的国密https方案主要是基于gmssl或者tassl的方案。淘宝团队也在自家开源的openssl上实现了国密算法,还结合自家的tengine(基于nginx二开)实现了国密HTTPS。该方案不同于tassl,适配于标准的nginx,而是通过ngx_openssl_ntls模块实现。
tongsuo编译
./config --prefix=/usr/local/tongsuo enable-ntls
make -j
make install
最重要的就是要加上enable-ntls来支持NTLS。
Tengine编译
./configure --prefix=/usr/local/tengine \
--add-module=modules/ngx_openssl_ntls \
--with-openssl=/root/work/Tongsuo-8.3.1 \
--with-openssl-opt="--strict -warnings enable-ntls" \
--with-http_ssl_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_sni \
make -j
make install
这里比较特别的一点是--with-openssl引用的并非是编译好的Tongsuo路径,而是源码。这里会将tongsuo的NTLS相关代码编入相关模块。
tengine配置
密钥生成
这里直接使用官方的mkcert.sh,替换一下自己的tongsuo路径即可。
配置
server {
listen 443 ssl;
server_name localhost;
enable_ntls on;
ssl_sign_certificate /usr/local/tongsuo/ssl/certs/server_sign.crt;
ssl_sign_certificate_key /usr/local/tongsuo/ssl/certs/server_sign.key;
ssl_enc_certificate /usr/local/tongsuo/ssl/certs/server_enc.crt;
ssl_enc_certificate_key /usr/local/tongsuo/ssl/certs/server_enc.key;
location / {
root html;
index index.html index.htm;
}
}
nginx运行即可