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

將SpringBoot項(xiàng)目的HTTP站點(diǎn)改為HTTPS的全過(guò)程

 更新時(shí)間:2026年02月12日 08:58:59   作者:麥芽糖0219  
本文介紹了如何在Spring Boot項(xiàng)目中實(shí)現(xiàn)HTTPS請(qǐng)求,首先,創(chuàng)建一個(gè)Spring Boot項(xiàng)目并編寫(xiě)一個(gè)BasicController.java文件,然后,配置application.yaml文件以支持HTTPS,接著,使用Java自帶的keytool工具生成一個(gè)免費(fèi)的HTTPS證書(shū),需要的朋友可以參考下

一 新建springboot項(xiàng)目

我們先新建一個(gè)springboot項(xiàng)目,寫(xiě)一個(gè)BasicController.java,內(nèi)容如下

package com.https.httpsdemo.demos.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
public class BasicController {

    // http://127.0.0.1:8081/hello
    @GetMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello ";
    }
}

application.yaml內(nèi)容如下

server:
  port: 8081

瀏覽器訪問(wèn)http://127.0.0.1:8081/hello如下

接下來(lái)開(kāi)始把http請(qǐng)求改為https

二 https證書(shū)

首先需要有一個(gè) https 證書(shū),可以從各個(gè)云服務(wù)廠商處申請(qǐng)一個(gè)免費(fèi)的(我申請(qǐng)的為阿里云SSL),也可以直接借助 Java 自帶的 JDK 管理工具 keytool 來(lái)生成一個(gè)免費(fèi)的 https 證書(shū)。

找到命令窗口,右鍵選擇管理員打開(kāi)

執(zhí)行如下命令

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

命令含義如下:

  • genkey 表示要?jiǎng)?chuàng)建一個(gè)新的密鑰。
  • alias 表示 keystore 的別名。
  • keyalg 表示使用的加密算法是 RSA ,一種非對(duì)稱(chēng)加密算法。
  • keysize 表示密鑰的長(zhǎng)度。
  • keystore 表示生成的密鑰存放位置。
  • validity 表示密鑰的有效時(shí)間,單位為天。

如上圖,以此輸入相關(guān)信息即可。

在C:\Windows\System32目錄可以看到生成了文件

把上邊這個(gè)文件復(fù)制到項(xiàng)目根目錄下

application.yml文件如下

# 應(yīng)用服務(wù) WEB 訪問(wèn)端口
server:
  port: 8081
  ssl:
    # 證書(shū)路徑,秘鑰文件路徑,也可以配置絕對(duì)路徑
    key-store: keystore.p12
    # 證書(shū)密碼,秘鑰生成時(shí)在終端輸入的秘鑰口令
    key-store-password: 123456
    # 秘鑰類(lèi)型,與秘鑰生成命令一樣
    key-store-type: PKCS12
    # 證書(shū)別名,與秘鑰生成命令一樣
    key-alias: tomcat

啟動(dòng)類(lèi)添加如下內(nèi)容

package com.https.httpsdemo;

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.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;


@SpringBootApplication
public class HttpsDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(HttpsDemoApplication.class, args);
    }
    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(redirectConnector());
        return tomcat;
    }

    /**
     * 瀏覽器訪問(wèn)http://127.0.0.1:8080/hello時(shí),自動(dòng)跳轉(zhuǎn)到https://127.0.0.1:8081/hello
     * @return
     */
    private Connector redirectConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8080);
        connector.setSecure(false);
        connector.setRedirectPort(8081);
        return connector;
    }
}

此時(shí),我們?cè)跒g覽器就可以通過(guò)https來(lái)訪問(wèn)https://127.0.0.1:8081/hello了

因?yàn)槲矣玫氖亲约荷傻膕sl證書(shū),所以https請(qǐng)求是不被客戶端識(shí)別的,如下

點(diǎn)擊后,內(nèi)容如下

注意:生產(chǎn)環(huán)境中,則需要購(gòu)買(mǎi)合法的 SSL 證書(shū)。

由于在啟動(dòng)類(lèi)已經(jīng)進(jìn)行了配置,所以我們也可以通過(guò)訪問(wèn)http://127.0.0.1:8080/hello來(lái)自動(dòng)跳轉(zhuǎn)到https://127.0.0.1:8081/hello

以上就是將SpringBoot項(xiàng)目的HTTP站點(diǎn)改為HTTPS的全過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot HTTP站點(diǎn)改為HTTPS的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 深度解析Java中的JSONObject從基礎(chǔ)到高級(jí)應(yīng)用

    深度解析Java中的JSONObject從基礎(chǔ)到高級(jí)應(yīng)用

    在當(dāng)今前后端分離的架構(gòu)中,JSONObject已成為Java開(kāi)發(fā)者處理JSON數(shù)據(jù)的瑞士軍刀,本文將深入解析JSONObject的核心機(jī)制與實(shí)戰(zhàn)技巧,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • Nacos配置管理實(shí)踐(手把手教你搭建Nacos集群)

    Nacos配置管理實(shí)踐(手把手教你搭建Nacos集群)

    本文詳解Nacos配置管理在微服務(wù)中的實(shí)現(xiàn),包括通過(guò)bootstrap.yml讀取Nacos配置、配置優(yōu)先級(jí)規(guī)則(本地>服務(wù)名>環(huán)境)、熱更新機(jī)制及集群搭建步驟(數(shù)據(jù)庫(kù)初始化、Nginx反向代理),強(qiáng)調(diào)多環(huán)境隔離與容災(zāi)部署優(yōu)化
    2025-08-08
  • java根據(jù)負(fù)載自動(dòng)抓取jstack?dump詳情

    java根據(jù)負(fù)載自動(dòng)抓取jstack?dump詳情

    這篇文章主要介紹了java根據(jù)負(fù)載自動(dòng)抓取jstack?dump詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • JVM加載class文件的原理機(jī)制實(shí)例詳解

    JVM加載class文件的原理機(jī)制實(shí)例詳解

    Java是一種具有動(dòng)態(tài)性的解釋型語(yǔ)言,類(lèi)(class)只有被加載到JVM后才能運(yùn)行,接下來(lái)通過(guò)本文給大家介紹JVM加載class文件的原理機(jī)制詳解,感興趣的朋友一起看看吧
    2022-04-04
  • Springboot集成Protobuf的流程步驟

    Springboot集成Protobuf的流程步驟

    在以往的項(xiàng)目中進(jìn)行網(wǎng)絡(luò)通信和數(shù)據(jù)交換的應(yīng)用場(chǎng)景中,最經(jīng)常使用的技術(shù)便是json或xml,但是今天在介紹一個(gè)Google的力作protobuf作為數(shù)據(jù)交換格式,文中給大家介紹了Springboot集成Protobuf的流程步驟,需要的朋友可以參考下
    2024-03-03
  • Java實(shí)現(xiàn)登錄密碼強(qiáng)度校驗(yàn)的項(xiàng)目實(shí)踐

    Java實(shí)現(xiàn)登錄密碼強(qiáng)度校驗(yàn)的項(xiàng)目實(shí)踐

    本文主要介紹了Java實(shí)現(xiàn)登錄密碼強(qiáng)度校驗(yàn)的項(xiàng)目實(shí)踐,包括使用正則表達(dá)式匹配校驗(yàn)和密碼強(qiáng)度校驗(yàn)工具類(lèi)這兩種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • JDK1.7的ConcurrentHashMap源碼解析

    JDK1.7的ConcurrentHashMap源碼解析

    這篇文章主要介紹了JDK1.7的ConcurrentHashMap源碼解析,HashMap是非線程安全的,而HashTable是線程安全的,但是HashTable實(shí)現(xiàn)同步的方法比較暴力,即在所有的方法體上添加synchronized關(guān)鍵字,需要的朋友可以參考下
    2023-12-12
  • IDEA “Cannot resolve symbol”爆紅問(wèn)題解決

    IDEA “Cannot resolve symbol”爆紅問(wèn)題解決

    最近發(fā)現(xiàn)個(gè)問(wèn)題,IDEA 無(wú)法識(shí)別同一個(gè) package 里的其他類(lèi),將其顯示為紅色,本文就來(lái)介紹一下IDEA “Cannot resolve symbol”爆紅問(wèn)題解決,感興趣的可以了解一下
    2023-10-10
  • 使用Pinyin4j進(jìn)行拼音分詞的方法

    使用Pinyin4j進(jìn)行拼音分詞的方法

    下面小編就為大家分享一篇使用Pinyin4j進(jìn)行拼音分詞的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • RocketMQ?ConsumeQueue與IndexFile實(shí)時(shí)更新機(jī)制源碼解析

    RocketMQ?ConsumeQueue與IndexFile實(shí)時(shí)更新機(jī)制源碼解析

    這篇文章主要為大家介紹了RocketMQ?ConsumeQueue與IndexFile實(shí)時(shí)更新機(jī)制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評(píng)論

远安县| 南昌市| 洛隆县| 胶南市| 广元市| 武平县| 石渠县| 玉田县| 西充县| 宜城市| 连平县| 宁南县| 左贡县| 双柏县| 中江县| 光泽县| 商城县| 万全县| 高碑店市| 滨海县| 安顺市| 周宁县| 筠连县| 扎赉特旗| 阿尔山市| 宜州市| 贡嘎县| 夹江县| 香港 | 泰宁县| 苍南县| 宜宾县| 东台市| 清流县| 青川县| 兴城市| 通化市| 扎囊县| 桂平市| 云安县| 铜梁县|