最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot中支持Https協(xié)議的實現(xiàn)

 更新時間:2023年01月19日 09:10:07   作者:Asurplus  
本文主要介紹了SpringBoot中支持Https協(xié)議的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、https 簡介

超文本傳輸安全協(xié)議(HyperText Transfer Protocol Secure),縮寫:HTTPS;常稱為 HTTP over TLS、HTTP over SSL 或 HTTP Secure)是一種通過計算機(jī)網(wǎng)絡(luò)進(jìn)行安全通信的傳輸協(xié)議。HTTPS 經(jīng)由 HTTP 進(jìn)行通信,但利用 SSL/TLS 來加密數(shù)據(jù)包。HTTPS 開發(fā)的主要目的,是提供對網(wǎng)站服務(wù)器的身份認(rèn)證,保護(hù)交換數(shù)據(jù)的隱私與完整性。這個協(xié)議由網(wǎng)景公司(Netscape)在 1994 年首次提出,隨后擴(kuò)展到互聯(lián)網(wǎng)上。

二、獲取 https 證書

我們可以直接借助 Java 自帶的 JDK 管理工具 keytool 來生成一個免費(fèi)的 https 證書

1、進(jìn)入jdk安裝目錄,我的是在C:\Program Files\Java\jdk1.8.0_201\bin

cd /C:\Program Files\Java\jdk1.8.0_201\bin

2、執(zhí)行以下命令獲取數(shù)字證書

keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore D:\httpsKey.p12 -validity 365

命令含義如下:

genkey:表示要創(chuàng)建一個新的密鑰。
alias:表示 keystore 的別名。
keyalg:表示使用的加密算法是 RSA ,一種非對稱加密算法。
keysize:表示密鑰的長度。
keystore:表示生成的密鑰存放位置。
validity:表示密鑰的有效時間,單位為天。
其中 D:\httpsKey.p12 是生成證書文件的地址

按照圖中步驟進(jìn)行操作:

證書生成過程

3、以上步驟執(zhí)行完后,我們在D盤會發(fā)現(xiàn)一個 httpsKey.p12 的文件,如下:

http證書文件

三、在 SpringBoot 中引入 https

1、我們將生成的 httpsKey.p12 拷貝到SpringBoot項目中的 resources 目錄下

2、并在配置文件 application.yml 中加入以下配置:

server:
  port: 8080
  ssl:
    key-store: classpath:httpsKey.p12
    key-alias: tomcathttps
    key-store-password: 123456

key-store表示密鑰文件名。
key-alias表示密鑰別名。
key-store-password就是在cmd命令執(zhí)行過程中輸入的密碼

3、我們在 resources 目錄下的 templates 目錄下加入一個index.html文件,文件內(nèi)容:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>主頁面</title>
</head>
<body>
<h1>hello https!!!</h1>
</body>
</html>

4、啟動項目,訪問http://localhost:8080,此時會出現(xiàn):

bad request

我們使用https協(xié)議來訪問:https://localhost:8080
此時頁面顯示:

不是私密連接

這是因為我們自己生成的 https 證書不被瀏覽器認(rèn)可,(實際項目中只需要更換一個被瀏覽器認(rèn)可的 https 證書即可),我們直接點擊繼續(xù)訪問就可以了:

hello https

這樣我們就成功的以https協(xié)議訪問了項目

四、請求轉(zhuǎn)發(fā)

考慮到 Spring Boot 不支持同時啟動 HTTP 和 HTTPS ,為了解決這個問題,我們這里可以配置一個請求轉(zhuǎn)發(fā),當(dāng)用戶發(fā)起 HTTP 調(diào)用時,自動轉(zhuǎn)發(fā)到 HTTPS 上,配置文件如下:

package com.zyxx.youth.config;

import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @ClassName RequestConfig
 * 請求轉(zhuǎn)發(fā),當(dāng)用戶發(fā)起 HTTP 調(diào)用時,自動轉(zhuǎn)發(fā)到 HTTPS 上
 * @Author Lizhou
 * @Date 2019-09-19 12:17:17
 * @Version 1.0
 **/
@Configuration
public class RequestConfig {
    @Bean
    TomcatServletWebServerFactory tomcatServletWebServerFactory() {
        TomcatServletWebServerFactory factory = 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);
            }
        };
        factory.addAdditionalTomcatConnectors(createTomcatConnector());
        return factory;
    }

    private Connector createTomcatConnector() {
        Connector connector = new
                Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        // Http 的請求端口為 8081
        connector.setPort(8081);
        connector.setSecure(false);
        // https 的端口為 8080
        connector.setRedirectPort(8080);
        return connector;
    }
}

在這里,我們配置了 Http 的請求端口為 8081,所有來自 8081 的請求,將被自動重定向到 8080 這個 https 的端口上。當(dāng)我們再去訪問 http 請求,就會自動重定向到 https。

到此這篇關(guān)于SpringBoot中支持Https協(xié)議的實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot支持Https協(xié)議內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go Java算法之找不同示例詳解

    Go Java算法之找不同示例詳解

    這篇文章主要為大家介紹了Go Java算法之找不同示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Maven deploy plugin使用方式

    Maven deploy plugin使用方式

    這篇文章主要介紹了Maven deploy plugin使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • IntelliJ IDEA 關(guān)閉多余項目的操作方法

    IntelliJ IDEA 關(guān)閉多余項目的操作方法

    這篇文章主要介紹了IntelliJ IDEA 關(guān)閉多余項目的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • mybatis之foreach用法詳解

    mybatis之foreach用法詳解

    這篇文章主要介紹了mybatis之foreach用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 玩轉(zhuǎn)spring boot MVC應(yīng)用(2)

    玩轉(zhuǎn)spring boot MVC應(yīng)用(2)

    玩轉(zhuǎn)spring boot,如何快速搭建一個MCV程序?這篇文章為大家詳細(xì)主要介紹了一個MCV程序的快速搭建過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 圖解Java排序算法之快速排序的三數(shù)取中法

    圖解Java排序算法之快速排序的三數(shù)取中法

    這篇文章主要為大家詳細(xì)介紹了Java排序算法之快速排序的三數(shù)取中法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • spring security自定義決策管理器

    spring security自定義決策管理器

    這篇文章主要介紹了spring security自定義決策管理器的實現(xiàn)代碼,需要的朋友參考下吧
    2017-09-09
  • Java實現(xiàn)兩人五子棋游戲(六) 行棋方變換

    Java實現(xiàn)兩人五子棋游戲(六) 行棋方變換

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)一個簡單的兩人五子棋游戲,行棋方變換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • java:抽象類與模板方法模式詳解

    java:抽象類與模板方法模式詳解

    這篇文章主要介紹了Java抽象類的構(gòu)造模板模式用法,結(jié)合實例形式分析了java使用抽象類構(gòu)造模板模式相關(guān)操作技巧,需要的朋友可以參考下
    2021-09-09
  • 剖析SpringCloud Feign中所隱藏的坑

    剖析SpringCloud Feign中所隱藏的坑

    這篇文章主要為大家介紹了剖析SpringCloud Feign中所隱藏的坑示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08

最新評論

宁南县| 安仁县| 周宁县| 蒙自县| 兰溪市| 泸西县| 通辽市| 德化县| 玉林市| 台中市| 静安区| 松滋市| 普定县| 台南县| 佳木斯市| 保靖县| 赤水市| 呈贡县| 新化县| 巧家县| 海丰县| 霍邱县| 珲春市| 博客| 达州市| 鹤峰县| 长治市| 澎湖县| 丰都县| 吉林省| 黄龙县| 剑阁县| 乌拉特后旗| 镇康县| 嫩江县| 富顺县| 农安县| 洛阳市| 景泰县| 阳江市| 通江县|