spring boot 配置ssl 实现HTTPS

传输层安全性协议(英语:Transport Layer Security,缩写作 TLS),及其前身安全套接层(Secure Sockets Layer,缩写作 SSL)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障。网景公司(Netscape)在1994年推出首版网页浏览器网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。IETF将SSL进行标准化,1999年公布第一版TLS标准文件。随后又公布RFC 5246 (2008年8月)与 RFC 6176 (2011年3月)。在浏览器电子邮件即时通信VoIP网络传真等应用程序中,广泛支持这个协议。主要的网站,如GoogleFacebook等也以这个协议来创建安全连接,发送数据。目前已成为互联网上保密通信的工业标准。

SSL包含记录层(Record Layer)和传输层,记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。

 

在配置TLS/SSL之前我们需要拿到相应签名的证书,测试实例可以使用Java 下面的 Keytool 来生成证书:

 

打开控制台输入:

keytool -genkey -alias tomcat  -storetype PKCS12 -keyalg RSA -keysize 2048  -keystore keystore.p12 -validity 3650

 

这里的别名是 keystore.p12,密码什么的直接设置就好,然后回车

 

然后根据路径找到生成好的证书,把证书复制到项目里,我是放到了这里

放好证书后,建立一个index.html放到resources/templates文件夹下,一会用于测试。

再配置properties

 

server.port=8888
server.tomcat.uri-encoding=utf-8
server.servlet.context-path=/demo

server.ssl.key-store=keystore.p12
server.ssl.key-store-password=123456
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=tomcat

spring.thymeleaf.prefix=classpath:/templates/

 

配置好properties再加入下面的代码

 

 

 

@Configuration
public class HttpsConfig {

    /**
     * spring boot 1.0
     */
   /* @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
            @Override
            protected void postProcessContext(Context  context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }*/

    /**
     * spring boot 2.0
     * @return
     */
    @Bean
    public TomcatServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }

    @Bean
    public Connector httpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        //Connector监听的http的端口号
        connector.setPort(8080);
        connector.setSecure(false);
        //监听到http的端口号后转向到的https的端口号
        connector.setRedirectPort(8888);
        return connector;
    }

}

 

 

@Controller
@RequestMapping
public class ViewControlller {

    @GetMapping("index")
    public String index(){
        return "index";
    }
}

 

 

 

值得注意的是加入的springboot jar的版本不同代码有一定的改变,我这里用的是2.0的版本,还有就是要想跳转到html页面的时候一定注意的就是千万不要在Controller中用@RestController而是要用Controller,如果用RestController的话就会直接把你的index解析显示在页面当中,就不会跳转了,还有就是想要跳转的话一定要加入下面的两个jar包

 

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <version>2.0.1.RELEASE</version>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

准备完毕后启动项目,打印台显示

 

再输入:

127.0.0.1:8080/demo/index就会自动跳转

 

要在Spring Boot中启用SSL证书,需要进行以下步骤: 1. 在Spring Boot配置文件(application.yml或application.properties)中添加SSL相关的配置信息。这些配置包括启用SSL、证书文件路径、证书密码和证书类型等。示例配置如下: ``` server: port: 443 ssl: enabled: true key-store: classpath:证书名称.jks key-store-password: 证书密码 key-store-type: JKS ``` 在该示例中,将服务器端口设置为443,并启用SSL。证书文件的路径设置为classpath:证书名称.jks,证书密码为指定的密码,证书类型为JKS。 2. 获取SSL证书。您可以通过去阿里云、腾讯云等提供SSL证书的服务商申请证书。对于个人用户,您也可以申请免费的证书。申请证书后,您会得到一个压缩包,里面包含了jks格式的证书和密码。 3. 将证书文件添加到Spring Boot项目中。您可以将jks格式的证书文件放置在项目的资源目录下,例如src/main/resources目录。 4. 重新启动Spring Boot应用程序。在重新启动应用程序后,Spring Boot将会加载配置SSL证书并启用SSL功能。 通过以上步骤,您可以在Spring Boot中启用SSL证书。这样可以增加您的网站安全性,并使其看起来更加可靠。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Spring Boot配置SSL证书(开启https)](https://blog.csdn.net/weixin_43118617/article/details/122199258)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值