atls icon indicating copy to clipboard operation
atls copied to clipboard

为何Not supporting multiplethreading?

Open ygm521 opened this issue 5 years ago • 7 comments

ygm521 avatar May 21 '19 08:05 ygm521

是因为下面?还有哪些有影响?这个是当时写代码方便还是考虑到nginx一次没有发送完毕下次接着从全局变量中继续发送剩余的?谢谢 u8 a_tls_tmp_record_buf[16384]; u8 a_tls_tmp_msg_buf[16384]; u8 a_tls_tmp_ciphertext_buf[16384]; u8 a_tls_tmp_msg_read_buf[16384]; u8 am_cnt[16384] = {0};

ygm521 avatar May 21 '19 08:05 ygm521

@mrpre a_tls_get_finished_prf 中哪里体现了使用对称密钥加密的?

ygm521 avatar May 22 '19 05:05 ygm521

使用较多全局变量,故不支持多线程(后续可改为每线程变量)。
a_tls_get_finished_prf 没有使用对称秘钥加密,但是计算时使用了主秘钥。

mrpre avatar May 22 '19 08:05 mrpre

@mrpre 想把你的代码移植到nginx的http模块中,如何切入麻烦指点下,谢谢!

ygm521 avatar May 22 '19 08:05 ygm521

@ygm521 你可以先通过stream模块进行ssl卸载,然后转发的本地的http服务。
之所以这里使用 stream 承载 atls,完全是因为 当初尝试使用http模块支持atls,发现对nginx core改动量非常大,不合适。你可以 在ngx_http_init_connection 中 将rev->handler = ngx_http_ssl_handshake;替换为其他的handshake。

mrpre avatar May 22 '19 09:05 mrpre

@mrpre 我公司同事使用改造的openssl,nginx改动较少,等有时间我研究研究下,不过openssl是参考gmssl移植的国密算法。

ygm521 avatar May 22 '19 09:05 ygm521

@ygm521 改造openssl当然是最合理的方法,因为Nginx本身就是基于OpenSSL实现SSL的,增加国密只需要增加几个指令以及其他适配的修改即可。

mrpre avatar May 22 '19 09:05 mrpre