C/C++教程

全站最硬核 百万字强肝RocketMq源码 火热更新中~(七)

本文主要是介绍全站最硬核 百万字强肝RocketMq源码 火热更新中~(七),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

      • org.apache.rocketmq.remoting.netty.TlsHelper

public void loadSslContext() {
    TlsMode tlsMode = TlsSystemConfig.tlsMode;
    log.info("Server is running in TLS {} mode", tlsMode.getName());

    if (tlsMode != TlsMode.DISABLED) {
        try {
            sslContext = TlsHelper.buildSslContext(false);
            log.info("SSLContext created for server");
        } catch (CertificateException e) {
            log.error("Failed to create SSLContext for server", e);
        } catch (IOException e) {
            log.error("Failed to create SSLContext for server", e);
        }
    }
}

之后就是构建SslContext了,而sslContext这个类属于netty内部的,就不去深究了。这里普及下ssl和tls分别是什么:

SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。

也就是两种网络协议。

而构建sslContext的方法在TlsHelper中,下面看下这个方法做了什么:

org.apache.rocketmq.remoting.netty.TlsHelper

这个类中最主要的就是buildSslContext方法,所以看这个方法顺便把这个类过一遍。

入口如下:

    public static SslContext buildSslContext(boolean forClient) throws IOException, CertificateException {
        File configFile = new File(TlsSystemConfig.tlsConfigFile);
        extractTlsConfigFromFile(configFile);
        logTheFinalUsedTlsConfig();

可以看到首先是从TlsSystemConfig中读取配置文件路径,解析配置文件,然后打印配置文件内容中的重要信息日志,进入

extractTlsConfigFromFile(configFile)

看下

除了配置文件判空外,比较核心的代码就是下面这段:

Properties properties;
properties = new Properties();
InputStream inputStream = null;
try {
    inputStream = new FileInputStream(configFile);
    properties.load(inputStream);
} catch (IOException ignore) {
} finally {
    if (null != inputStream) {
        try {
            inputStream.close();
        } catch (IOException ignore) {
        }
    }
}

使用io流从configFile中读取参数信息,再下面就是赋值了

这篇关于全站最硬核 百万字强肝RocketMq源码 火热更新中~(七)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!