1. OPENSSL接口封装
MongoDB封装了OPENSSL的SSL通信接口,代码在mongo/util/net目录。
主要包括以下几个方面:
1) SSL配置参数,在ssl_options(.cpp/.h)
定义了数据结构SSLGlobalParams,SSLGlobalParams中保存了与SSL相关的所有的配置参数。
在ssl_options中定义了一个SSLGlobalParams类型的全局变量sslGlobalParams,在客户端或者服务器进程启动时会通过相关接口从全局的配置参数中将SSL相关的配置参数保存到sslGlobalParams之中。
主要接口:
addSSLServerOptions()
addSSLClientOptions()
2) SSL证书过期检测,在ssl_expiration(.cpp/.h)
定义了类CertificateExpirationMonitor,该类继承了PeriodicTask,会定期将证书的过期时间与当前时间做比较。如果证书过期,会报警告。
3)SSL连接管理,在ssl_manager(.cpp/.h)
定义了类SSLConnection,该类封装了SSL通信时使用的SSL句柄,BIO以及Socket。
定义了接口类SSLManagerInterface,该类定义了建立SSL连接、验证SSL证书、SSL读写数据等接口。
定义了类SSLThreadInfo,该类用于处理SSL多线程环境下使用的问题。
定义了结构Params,该类保存了所有的SSL配置参数。
定义了类SSLManager,该类继承了接口类SSLManagerIn