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

SpringBoot整合HTTPS的項目實踐

 更新時間:2024年10月18日 09:04:54   作者:duration~  
HTTPS的主要作用是通過SSL證書保護(hù)用戶數(shù)據(jù)的安全與隱私,增加網(wǎng)站信任度,防止數(shù)據(jù)被竊取和篡改,保護(hù)網(wǎng)站免受釣魚攻擊,本文就來介紹一下,感興趣的可以了解一下

1_Https 的作用

保護(hù)用戶的隱私信息安全:

在 HTTP 網(wǎng)站數(shù)據(jù)以明文方式傳輸,客戶的隱私極容易被盜取和泄露,而部署 SSL 證書,數(shù)據(jù)以 HTTPS 加密傳輸,可以保護(hù)通信不被第三方監(jiān)聽和竊取,從而保護(hù)用戶隱私及安全。還可增加用戶信任感和提升企業(yè)形象。

保護(hù)網(wǎng)站的安全性和完整性:

HTTPS 是安全套接層超文本傳輸協(xié)議,可以保證網(wǎng)站的信息從用戶瀏覽器到服務(wù)器之間的傳輸是高強(qiáng)度加密傳輸?shù)?,是不會被第三方竊取和篡改的,還能避免網(wǎng)站被劫持而插入廣告等,防止被釣魚網(wǎng)站攻擊,從而保護(hù)網(wǎng)站的安全性和完整性

防止被釣魚網(wǎng)站攻擊,有效識別網(wǎng)站真實身份:

http 網(wǎng)站會被瀏覽器標(biāo)記 “不安全”,而安裝 https 證書會取消這種 “不安全” 的警告,能增加訪客信任度。同時對于安裝了 OV SSL 證書或 EV SSL 證書的網(wǎng)站,還能向用戶證明網(wǎng)站的真實身份,防止網(wǎng)站被釣魚網(wǎng)站仿冒。

2_獲取證書

需要在 SSL 證書頒發(fā)機(jī)構(gòu)處申請或購買 SSL 證書,并下載對應(yīng)的 .pem 和 .key 文件。

由于只是進(jìn)行本地測試,所以這里將使用JDK1.8 開發(fā)工具包 bin 目錄下的keytool.exe工具生成ssl密鑰:

keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore keystore.p12 -validity 3650 -storepass your-password

  • -genkeypair : 表示創(chuàng)建密鑰。
  • -alias: 保存時的別名。
  • -keyalg:加密算法選擇,這里使用RSA。
  • -keysize:秘鑰大小,是有固定要求的。
  • -storetype:秘鑰存儲庫的類型。
  • -keystore:密鑰的存放位置。
  • -validity:有效時間,單位是天。
  • -storepass:密鑰庫口令。

可以使用代碼驗證秘鑰生成是否正確,如:

package org.example;

import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;

public class KeystoreExample {
    public static void main(String[] args) {
        String keystorePath = "path/to/your/keystore.p12";
        char[] keystorePassword = "your-keystore-password".toCharArray();

        try (FileInputStream fis = new FileInputStream(keystorePath)) {
            KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
            keystore.load(fis, keystorePassword);
            System.out.println("密鑰庫加載成功");
        } catch (java.io.IOException e) {
            System.err.println("密鑰庫加載失敗: " + e.getMessage());
        } catch (NoSuchAlgorithmException | CertificateException | KeyStoreException e) {
            System.err.println("可能是密碼錯誤導(dǎo)致的解密失敗");
            e.printStackTrace();
        }
    }
}

或者使用keytool.exe工具進(jìn)行驗證:

keytool -list -v -keystore  keystore.p12

3_配置項

application.properties

server.port=8081
server.error.path=/log
server.servlet.session.timeout=30s
# 設(shè)置應(yīng)用程序的上下文路徑為 /test002。這意味著所有以 /test002 開始的 URL 都將被認(rèn)為屬于這個應(yīng)用程序。
server.servlet.context-path=/test002
server.tomcat.uri-encoding=UTF-8
server.tomcat.threads.max=500
# 表示秘鑰存儲庫的類型
server.ssl.key-store-type=PKCS12
# 表示 SSL 密鑰存儲庫的名稱為 keystore.p12
server.ssl.key-store=classpath:ssl/keystore.p12
# 表示 SSL 密鑰別名為 myalias  。
server.ssl.key-alias=myalias
# 這行設(shè)置的是 SSL 密鑰存儲庫的密碼為 your-password
# 密碼不能特別簡單,不然項目啟動時會出現(xiàn)異常
server.ssl.key-store-password=your-password

其中,server.port 配置 HTTPS 監(jiān)聽端口。server.ssl.key-store 配置證書存放路徑,server.ssl.key-store-password 配置證書密碼,server.ssl.key-store-type 和 server.ssl.key-alias 分別指定證書的類型和別名。

pom.xml 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>spring_Back</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.9.RELEASE</version>
        <relativePath/>
    </parent>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
</project>

4_配置類

package org.example.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;

@Configuration
public class TomcatConfig {
    /**
     * 設(shè)置 Tomcat 的Server配置
     * @return
     */
    @Bean
    TomcatServletWebServerFactory tomcatServletWebServerFactory(){
        TomcatServletWebServerFactory myFactory = new TomcatServletWebServerFactory(){
            //創(chuàng)建一個安全約束對象
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");//設(shè)置為機(jī)密級別
                SecurityCollection connection = new SecurityCollection();//設(shè)置一個安全連接對象
                //作用到所有路由上
                connection.addPattern("/*");
                //加入 connection 對象到安全路由中去
                constraint.addCollection(connection);
                context.addConstraint(constraint);
            }
        };
        //配置HTTPS連接器
        myFactory.addAdditionalTomcatConnectors(createConnector());
        return myFactory;
    }
 
    /**
     * 創(chuàng)建一個連接兼容Https請求
     * @return
     */
    private Connector createConnector(){
        //tomcat 9 中
        //tomcat/conf/server.xml中不要使用org.apache.coyote.http11.Http11AprProtocol
        //要用HTTP/1.1
        Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);//"HTTP/1.1"
 
        connector.setScheme("http");
        connector.setPort(8080);
        connector.setSecure(false);//關(guān)閉ssl檢查
        //設(shè)置跳轉(zhuǎn)到8081 的端口
        connector.setRedirectPort(8081);
        return connector;
    }
}

這段代碼創(chuàng)建了一個 Tomcat Servlet 容器,并配置了一個 HTTPS 連接器。其中 redirectConnector() 方法實現(xiàn)了將 HTTP 請求重定向到 HTTPS 的功能。

  • 啟動項目:完成上述配置后,重新啟動項目,就能夠在 HTTPS 協(xié)議下訪問 Web 應(yīng)用了。

需要注意的是,在實際生產(chǎn)環(huán)境中,還需要配置服務(wù)器的防火墻、負(fù)載均衡等相關(guān)組件,保證 HTTPS 的安全性和穩(wěn)定性。

5_控制類

package org.example.controller;
 
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class FirstController {
    @GetMapping("/hey")
    public String hey(){
        return "hey main";
    }
}

6_啟動類

package org.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

@EnableAutoConfiguration
@ComponentScan
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class,args);
    }
}

此時使用 http 協(xié)議訪問 8080 端口將跳轉(zhuǎn)到 https 協(xié)議下的 8081端口。

到此這篇關(guān)于SpringBoot整合HTTPS的項目實踐的文章就介紹到這了,更多相關(guān)SpringBoot整合HTTPS內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot整合jasypt的詳細(xì)過程

    springboot整合jasypt的詳細(xì)過程

    這篇文章主要介紹了springboot整合jasypt的詳細(xì)過程,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-02-02
  • springboot靜態(tài)資源映射規(guī)則的使用小結(jié)

    springboot靜態(tài)資源映射規(guī)則的使用小結(jié)

    本文主要介紹了springboot靜態(tài)資源映射規(guī)則,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-12-12
  • java中Vector的詳細(xì)說明

    java中Vector的詳細(xì)說明

    Vector是Java早期的線程安全動態(tài)數(shù)組,支持自動擴(kuò)容和有序可重復(fù)元素,因同步機(jī)制性能較低,已被ArrayList等替代,現(xiàn)代開發(fā)中,推薦使用ArrayList或并發(fā)容器而非Vector
    2025-10-10
  • Java并發(fā)編程回環(huán)屏障CyclicBarrier

    Java并發(fā)編程回環(huán)屏障CyclicBarrier

    這篇文章主要介紹了Java并發(fā)編程回環(huán)屏障CyclicBarrier,文章繼續(xù)上文所介紹的Java并發(fā)編程同步器CountDownLatch展開主題相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-04-04
  • SpringBoot配置Spring?Security的實現(xiàn)示例

    SpringBoot配置Spring?Security的實現(xiàn)示例

    本文主要介紹了SpringBoot配置Spring?Security的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • Java文件讀寫IO/NIO及性能比較詳細(xì)代碼及總結(jié)

    Java文件讀寫IO/NIO及性能比較詳細(xì)代碼及總結(jié)

    這篇文章主要介紹了Java文件讀寫IO/NIO及性能比較詳細(xì)代碼及總結(jié),具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • controller接口跳轉(zhuǎn)到另一個controller接口的實現(xiàn)

    controller接口跳轉(zhuǎn)到另一個controller接口的實現(xiàn)

    這篇文章主要介紹了controller接口跳轉(zhuǎn)到另一個controller接口的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • MyBatis-Plus速成指南之簡化你的數(shù)據(jù)庫操作流程(最新推薦)

    MyBatis-Plus速成指南之簡化你的數(shù)據(jù)庫操作流程(最新推薦)

    MyBatis-Plus?是一個?MyBatis?的增強(qiáng)工具,在?MyBatis?的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生,這篇文章主要介紹了MyBatis-Plus速成指南:簡化你的數(shù)據(jù)庫操作流程,需要的朋友可以參考下
    2025-02-02
  • Java特性之注解和異常?Throwable

    Java特性之注解和異常?Throwable

    這篇文章主要介紹了Java特性之注解和異常,注解是JDK1.5版本開始引入的一個特性,Throwable是Java語言中所有錯誤與異常的超類,文章圍繞主題展開更多的相關(guān)介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Java?中導(dǎo)入excel時使用?trim()?無法去除空格的問題解決方案

    Java?中導(dǎo)入excel時使用?trim()?無法去除空格的問題解決方案

    這篇文章主要介紹了Java中導(dǎo)入excel時使用trim()無法去除空格的解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06

最新評論

普安县| 北安市| 天祝| 旬阳县| 左云县| 罗定市| 峨边| 共和县| 平泉县| 特克斯县| 衡水市| 三原县| 丹江口市| 雷山县| 策勒县| 河源市| 高青县| 奉贤区| 中宁县| 太和县| 岐山县| 阜宁县| 商洛市| 曲周县| 濮阳市| 惠水县| 安国市| 上林县| 望奎县| 达日县| 读书| 灵璧县| 墨竹工卡县| 绵阳市| 历史| 内黄县| 邛崃市| 特克斯县| 松江区| 潜江市| 五台县|