TLS 通信支持

OpenSSL是一个极其健壮、功能齐全的TLS和SSL协议库,也是一个通用的密码算法库。它为我们的通信提供了安全性和完整性保证。tars结合OpenSSL库支持TLS是一个常用的重要功能。 TLS协议和应用层的HTTP结合,即支持了https协议。 另外,TLS功能和tars鉴权功能可以同时启用。 目前只有C++支持TLS功能,java即将支持。

具体的demo请参考examples/SSLDemo.

tars tls使用

tars tls的使用非常简单,你不需要修改一行代码,只需要更改配置文件。 只需要按照下面四个步骤设置:

编译tars框架,支持tls

tars框架默认不开启tls, 配置cmake, 开启tls:

cmake .. -DTARS_SSL=ON

修改被调用方的endpoint协议,将tcp或udp改为ssl

在tars服务平台,选中相应的服务,编辑servant,修改endpoint协议,将原先的tcp或udp改为ssl.

修改被调用方的配置文件添加证书配置

一般来说,TLS使用单向认证,即客户端认证服务器。所以被调用方一定要提供证书。 不再截图,如果不知道怎么改私有模板,查看tars鉴权中的截图。在私有模板中添加配置如下:

现在,在web平台重启服务。

修改调用方的配置文件添加证书

由于主调方从tars registry可以获取被调方的地址,所以被调方这里关于地址的配置不需要改,只要添加证书就好了。 一般来说主调方不需要提供证书,这里只要配置一下PKI的公钥证书用来验证服务器就可以了。如果被调方要求主调方提供证书,那就需要提供证书,第2节已经描述过,这里不再重复。修改主调方私有模板,tls证书配置如下:

现在,在web平台重启调用方。

没有修改一行代码(但需要重新编译链接),你的服务已经开始使用tls加密通信了。

其他你需要知道的

以上方式中, 服务器和客户端的正式都是唯一的, 即没有针对不同的端口绑定不同的证书, 实际上框架也允许你针对不同端口启用不同证书.

服务器端

你可以在私有模板中配置, adapter下增加自己的证书:

注意: TestApp.SSLServer.SSL2ObjAdapter 这个格式根据Obj的名称生成的: Obj+Adapter

客户端

客户端同样, 也可以在增加某个远端服务的证书, 而不使用统一的, 在配置文件中:

另外TarsCpp1.x版本, 无法在单纯的客户端中使用, 这一点2.0版本已经修正.

Last updated

Was this helpful?