ssl

使用 SSL(获取 SSL 证书、生成 JKS、在 t-io 中使用 SSL) 一些主流的 SSL 证书提供平台,如腾讯云和阿里云,已经提供了现成的 JKS 文件。因此,本文中描述的生成 JKS 证书的步骤可能并不适用,可以直接使用平台方提供的文件。

1. 申请 SSL 证书

SSL 证书可以通过阿里云等平台申请。当然,还有许多其他方式申请 SSL 证书,具体申请过程不在本文范围内。

2. 下载 SSL 证书

如果使用阿里云申请的 SSL 证书,可以下载 Tomcat 版本的证书包,其中包含 xxx.pfx 文件和密码文件。

3. 生成 JKS 证书

如果需要将 .pfx 文件转换为 JKS 文件,可以使用以下命令:

keytool -importkeystore -srckeystore .\xxx.pfx -destkeystore .\xxx.jks -srcstoretype PKCS12 -deststoretype JKS

4. 在 t-io 中配置 SSL

仅需一行代码即可启用 SSL:

serverTioConfig.useSsl("/cert/xxx.jks", "/cert/xxx.jks", "******");

useSsl() 方法在 ServerTioConfig.java 中定义,而不是在 TioConfig 中。

5. 完成配置

到此为止,SSL 配置已经完成,整个过程简单高效。

额外说明:t-io 源代码解读

如果你对 t-io 的内部实现感兴趣,可以查看 useSsl 方法的源代码:

/**
 * 配置 SSL
 *
 * @param keyStoreFile 如果是以 "classpath:" 开头,则从 classpath 中查找,否则视为普通的文件路径
 * @param trustStoreFile 如果是以 "classpath:" 开头,则从 classpath 中查找,否则视为普通的文件路径
 * @param keyStorePwd 密码
 * @throws Exception
 */
public void useSsl(String keyStoreFile, String trustStoreFile, String keyStorePwd) throws Exception {
    if (StrUtil.isNotBlank(keyStoreFile) && StrUtil.isNotBlank(trustStoreFile)) {
        SslConfig sslConfig = SslConfig.forServer(keyStoreFile, trustStoreFile, keyStorePwd);
        this.setSslConfig(sslConfig);
    }
}

通过 useSsl 方法,可以指定密钥库文件和信任库文件,并设置相应的密码,完成 SSL 配置。