配置使用阿里云免费SSL证书

1、证书申请入口

官方文档:https://help.aliyun.com/document_detail/205510.html?spm=a2c4g.11186623.6.689.3ba27af35DlcUV

  • 购买及创建证书

配置使用阿里云免费SSL证书_第1张图片

  • 点击证书申请,填写申请信息
    配置使用阿里云免费SSL证书_第2张图片
  • 申请后效果
    配置使用阿里云免费SSL证书_第3张图片
  • 下载证书到本地,我们是spring-boot项目,所以下载tomcat证书
    配置使用阿里云免费SSL证书_第4张图片
  • 下载到的证书
    配置使用阿里云免费SSL证书_第5张图片

2、服务器配置

服务器要使用ssl证书,需要安装OpenSSL

  • 下载OpenSSL
    地址:https://www.openssl.org/source/
    配置使用阿里云免费SSL证书_第6张图片
    目前官方支持的最稳定的是1.1.1版本,并且会一直支持到2023年,2.0版本是支持FIPS认证的一个版本,但是不会再更新,3.0是下一代主要版本,并且支持FIPS协议,但是现在不稳定,所以现在用1.1.1版本。
  • 环境准备
    安装需要gcc的运行环境,没有gcc环境可以 yum -y install gcc 安装
  • 下载到Linux服务器并安装
#下载
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
#解压
tar -xzf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k
#配置安装路径并安装
./config --prefix=/usr/local/openssl
./config -t
make
  • 安装成功
    配置使用阿里云免费SSL证书_第7张图片

3、项目配置

  • 检查项目tomcat版本
		
        
            org.springframework.boot
            spring-boot-dependencies
            2.1.1.RELEASE
            pom
            import
        

去这个依赖下找一下tomcat的版本,点进去,再properties节点下看到Tomcat的版本

        9.0.13

注意:Tomcat 9强制要求证书别名设置为tomcat()

Tomcat 9强制要求证书别名设置为tomcat。您需要使用以下keytool命令将protocol="HTTP/1.1"转换成protocol=“org.apache.coyote.http11.Http11NioProtocol”。

证书文件夹下,打开控制台,运行下面的命令:

keytool -changealias -keystore 你的证书名字.pfx -alias alias -destalias tomcat
  • application.yml 文件修改
https:
  port: 安全链接访问端口 例如 443
  ssl:
    key-store: classpath:你的证书文件名字(证书放在resources目录下) 例如 key.pfx
    key-store-password: 你的密码
    key-store-type: 证书类型 例如 PKCS12

阿里云的证书默认为PKCS12 ,需要转换可以阅读阿里云的文档:https://help.aliyun.com/document_detail/98576.html?spm=a2c4g.11186623.6.628.55b465fc0tv1xB

注意:这里我没有直接使用server节点下配置,而是另起一个https配置节点,是为了让项目可以通过http访问,http访问的地址为server.port对应的端口

  • 在项目启动类中加入配置
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class Application {
    @Value("${https.port}")
    private Integer port;
    @Value("${https.ssl.key-store}")
    private String key_store;
    @Value("${https.ssl.key-store-password}")
    private String key_store_password;
    @Value("${https.ssl.key-store-type}")
    private String key_store_type;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
        System.out.println("启动成功");
    }

    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createSslConnector()); // 添加http
        return tomcat;
    }

    private Connector createSslConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("https");
        connector.setSecure(true);
        connector.setPort(port);

        Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
        protocol.setSSLEnabled(true);
        protocol.setKeystoreFile(key_store);
        protocol.setKeystorePass(key_store_password);
        protocol.setKeystoreType(key_store_type);
        return connector;
    }
}

最后,将启动项目,没有报错就可以打包发布了,效果如下:
配置使用阿里云免费SSL证书_第8张图片

你可能感兴趣的:(个人建站)