欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot如何配置ssl支持https

 更新時(shí)間:2024年10月16日 17:04:55   作者:GKFreewind  
在SpringBoot應(yīng)用中配置SSL支持HTTPS需要?jiǎng)?chuàng)建KeyStore并在application.yml中進(jìn)行相應(yīng)配置,首先,使用java的keytool工具創(chuàng)建KeyStore,這涉及到設(shè)置密鑰對(duì)、指定密鑰算法(RSA)、密鑰大小(2048位)、密鑰庫(kù)名稱、證書有效期等,創(chuàng)建KeyStore后

springboot 配置ssl支持https

以下信息請(qǐng)根據(jù)實(shí)際情況修改?。?!

創(chuàng)建keystore

KeyStore是一個(gè)用于存儲(chǔ)和管理加密密鑰和證書的存儲(chǔ)庫(kù)。

它通常被用于各種應(yīng)用和系統(tǒng)中,以保護(hù)敏感數(shù)據(jù)和確保安全通信。

KeyStore可以被看作是一種加密的“保險(xiǎn)箱”,用于存放密鑰、密鑰對(duì)和證書等安全相關(guān)的數(shù)據(jù)。

通過(guò)java的keytool創(chuàng)建keyStore

keytool -genkeypair -alias mykey -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365 -storepass mypassword -keypass mypassword -dname "CN=localhost, OU=MyOrg, O=MyOrg, L=MyCity, ST=MyState, C=MyCountry"

解釋各個(gè)參數(shù):

  • -genkeypair:生成密鑰對(duì)(公鑰和私鑰)。
  • -alias mykey:指定密鑰的別名(在密鑰庫(kù)中引用密鑰時(shí)使用)。
  • -keyalg RSA:指定密鑰算法(這里是 RSA)。
  • -keysize 2048:指定密鑰大小(位)。
  • -keystore keystore.jks:指定密鑰庫(kù)文件的名稱(如果文件不存在,則創(chuàng)建它)。
  • -validity 365:指定證書的有效期(天)。
  • -storepass mypassword:指定密鑰庫(kù)的存儲(chǔ)密碼。
  • -keypass mypassword:指定密鑰的密碼(如果與密鑰庫(kù)密碼相同,可以省略)。
  • -dname:指定證書的主題信息(DN,Distinguished Name),包括通用名稱(CN)、組織單位(OU)、組織(O)、城市(L)、州/?。⊿T)和國(guó)家(C)。

在springboot的application.yml配置文件中配置相關(guān)內(nèi)容

server:  
  port: 8443 # HTTPS的默認(rèn)端口是443,但443端口通常需要管理員權(quán)限才能綁定  
  ssl:  
    key-store: classpath:keystore.jks # 密鑰庫(kù)的位置,相對(duì)于classpath  對(duì)應(yīng)keytool生成時(shí)的-keystore
    key-store-type: JKS # 密鑰庫(kù)類型,默認(rèn)為JKS  
    key-store-password: mypassword # 密鑰庫(kù)密碼  對(duì)應(yīng)keytool生成時(shí)的-storepass
    key-alias: mykey # 密鑰別名  對(duì)應(yīng)keytool生成時(shí)的-alias
    key-password: mypassword # 密鑰別名  對(duì)應(yīng)keytool生成時(shí)的-keypass
    # 如果你使用的是PKCS12密鑰庫(kù),則需要如下配置,相應(yīng)信息根據(jù)實(shí)際情況修改
    # key-store-type: PKCS12  
    # key-store: classpath:keystore.p12  
    # key-store-password: yourpassword  
    # 如果需要,還可以配置信任庫(kù)  
    # trust-store: classpath:truststore.jks  
    # trust-store-password: trustpassword  
    # trust-store-type: JKS  
    # 啟用SSL客戶端認(rèn)證(可選)  
    # client-auth: need

springboot應(yīng)用支持https實(shí)現(xiàn)

jdk自帶證書生成

切換到j(luò)dk目錄下bin目錄,執(zhí)行

  • keytool -genkey -alias (別名)
  • -dname "CN=(姓名),OU=(組織單位名稱),O=(組織名稱),L=(城市名稱),ST=(省),C=(國(guó)家)"
  • -storetype (密鑰倉(cāng)庫(kù)類型)
  • -keyalg (生證書的算法名稱) -keysize (密鑰長(zhǎng)度,證書大小)
  • -keystore (指定生成證書的位置和證書名稱)
  • -validity (證書有效期,天單位)

列:

keytool -genkey -alias lyc -dname "CN=l,OU=SC,O=yd,L=lc,ST=sc,C=CN" -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365

配置https協(xié)議

springboot+tomcat,增加代碼configuration配置項(xiàng)如下:

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 TomcatHttpsConfig {

    @Bean
    public Connector connector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setSecure(false);
        connector.setPort(80);
        connector.setRedirectPort(443);
        return connector;
    }

    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector) {
        TomcatServletWebServerFactory webServerFactory = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection securityCollection = new SecurityCollection();
                securityCollection.addPattern("/*");
                securityConstraint.addCollection(securityCollection);
                context.addConstraint(securityConstraint);
            }
        };
        webServerFactory.addAdditionalTomcatConnectors(connector);
        return webServerFactory;
    }

}

springboot+undertow,增加代碼configuration配置項(xiàng)如下:

import io.undertow.Undertow;
import io.undertow.UndertowOptions;
import io.undertow.servlet.api.SecurityConstraint;
import io.undertow.servlet.api.SecurityInfo;
import io.undertow.servlet.api.TransportGuaranteeType;
import io.undertow.servlet.api.WebResourceCollection;
import org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;

public class UndertowHttpsConfig {
    private int httpPort = 80;
    private int httpsPort = 443;

    @Bean
    public ServletWebServerFactory undertowFactory() {
        UndertowServletWebServerFactory undertowFactory = new UndertowServletWebServerFactory();
        undertowFactory.addBuilderCustomizers((Undertow.Builder builder) -> {
            builder.addHttpListener(httpPort, "0.0.0.0");
            // 開啟HTTP2
            builder.setServerOption(UndertowOptions.ENABLE_HTTP2, true);
        });
        undertowFactory.addDeploymentInfoCustomizers(deploymentInfo -> {
            // 開啟HTTP自動(dòng)跳轉(zhuǎn)至HTTPS
            deploymentInfo.addSecurityConstraint(new SecurityConstraint()
                    .addWebResourceCollection(new WebResourceCollection().addUrlPattern("/*"))
                    .setTransportGuaranteeType(TransportGuaranteeType.CONFIDENTIAL)
                    .setEmptyRoleSemantic(SecurityInfo.EmptyRoleSemantic.PERMIT))
                    .setConfidentialPortManager(exchange -> httpsPort);
        });
        return undertowFactory;
    }
}

完成以上配置之后,啟動(dòng)項(xiàng)目

訪問:https://localhost:443/test/test實(shí)現(xiàn)springboot的https協(xié)議訪問

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java如何發(fā)起http請(qǐng)求的實(shí)現(xiàn)(GET/POST)

    Java如何發(fā)起http請(qǐng)求的實(shí)現(xiàn)(GET/POST)

    這篇文章主要介紹了Java如何發(fā)起http請(qǐng)求的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • java微信公眾號(hào)支付示例詳解

    java微信公眾號(hào)支付示例詳解

    這篇文章主要為大家詳細(xì)介紹了java微信公眾號(hào)支付示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • String?concat(String?str)使用小結(jié)

    String?concat(String?str)使用小結(jié)

    這篇文章主要介紹了String?concat(String?str)使用小結(jié),在了解concat()之前,首先需要明確的是String的兩點(diǎn)特殊性,一是長(zhǎng)度不可變二是值不可變,本文給大家詳細(xì)講解,需要的朋友可以參考下
    2022-11-11
  • java中TESTful架構(gòu)原理分析

    java中TESTful架構(gòu)原理分析

    這篇文章主要介紹了對(duì)java架構(gòu)中TESTful架構(gòu)原理進(jìn)行了詳細(xì)的原理分析,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-09-09
  • Java常用數(shù)字工具類 大數(shù)乘法、加法、減法運(yùn)算(2)

    Java常用數(shù)字工具類 大數(shù)乘法、加法、減法運(yùn)算(2)

    這篇文章主要為大家詳細(xì)介紹了Java常用數(shù)字工具類,大數(shù)乘法、加法、減法運(yùn)算,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • SpringBoot3.0自定stater模塊的操作流程(chatGPT提供的49種場(chǎng)景)

    SpringBoot3.0自定stater模塊的操作流程(chatGPT提供的49種場(chǎng)景)

    SpringBoot3.0發(fā)布等重磅陸消息續(xù)進(jìn)入大家的視線,而本文作者將以技術(shù)整合的角度,帶大家把最火的兩個(gè)技術(shù)整合在一起,通過(guò)本文學(xué)習(xí)你將熟悉SpringBoot3.0自定stater模塊的操作流程,并熟悉OpenAi為chatGPT提供的49種場(chǎng)景,感興趣的朋友一起看看吧
    2022-12-12
  • Java如何實(shí)現(xiàn)URL帶請(qǐng)求參數(shù)(get/post)及得到get和post請(qǐng)求url和參數(shù)列表的方法

    Java如何實(shí)現(xiàn)URL帶請(qǐng)求參數(shù)(get/post)及得到get和post請(qǐng)求url和參數(shù)列表的方法

    本文給大家介紹Java如何實(shí)現(xiàn)URL帶請(qǐng)求參數(shù)(get/post)及得到get和post請(qǐng)求url和參數(shù)列表的方法,涉及到 java獲取post請(qǐng)求參數(shù)的方法,感興趣的朋友一起看看吧
    2015-10-10
  • JVM指令的使用深入詳解

    JVM指令的使用深入詳解

    這篇文章主要給大家介紹了關(guān)于JVM指令使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • SpringBoot集成Seata的全過(guò)程

    SpringBoot集成Seata的全過(guò)程

    本文介紹了事務(wù)的四大特性(原子性、一致性、隔離性、持久性)以及本地事務(wù)和分布式事務(wù)的概念,本地事務(wù)是指在單個(gè)數(shù)據(jù)庫(kù)級(jí)別的事務(wù)管理,而分布式事務(wù)則是跨多個(gè)數(shù)據(jù)庫(kù)或服務(wù)的事務(wù)管理,感興趣的朋友一起看看吧
    2024-11-11
  • 詳解如何在SpringBoot中自定義參數(shù)解析器

    詳解如何在SpringBoot中自定義參數(shù)解析器

    這篇文章主要為大家詳細(xì)介紹了如何在SpringBoot中實(shí)現(xiàn)自定義參數(shù)解析器,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-05-05

最新評(píng)論