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

1、证书申请入口

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

  • 购买及创建证书

在这里插入图片描述

  • 点击证书申请,填写申请信息
    在这里插入图片描述
  • 申请后效果
    在这里插入图片描述
  • 下载证书到本地,我们是spring-boot项目,所以下载tomcat证书
    在这里插入图片描述
  • 下载到的证书
    在这里插入图片描述

2、服务器配置

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

  • 下载OpenSSL
    地址:https://www.openssl.org/source/
    在这里插入图片描述
    目前官方支持的最稳定的是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
  • 安装成功
    在这里插入图片描述

3、项目配置

  • 检查项目tomcat版本
		<!-- SpringBoot的依赖配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

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

        <tomcat.version>9.0.13</tomcat.version>

注意: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;
    }
}

最后,将启动项目,没有报错就可以打包发布了,效果如下:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值