<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
SpringBoot2.x設定HTTPS存取,總體上可以分為兩大步:
取得SSL證書的方法有:
(1)阿里雲購買免費的ssl證書
(2)用命令生成ssl證書
因為在阿里雲購買後需要填寫域名,所以這裡選擇第(2)種方式:用命令生成ssl證書
1.新建一個證書目錄,例如D:sslca
開啟cmd命令視窗,切換到D:sslca
2.命令生成證書
keytool -genkey -alias tomcat -keypass 12345678 -keyalg RSA -keysize 2048 -validity 365 -keystore ./tomcat.keystore -storepass 12345678
過程如下:提示問題的回答可以任意填寫
D:sslca>keytool -genkey -alias tomcat -keypass 12345678 -keyalg RSA -keysize 2048 -validity 365 -keystore ./tomcat.keystore -storepass 12345678 您的名字與姓氏是什麼? [Unknown]: liang 您的組織單位名稱是什麼? [Unknown]: aa 您的組織名稱是什麼? [Unknown]: bb 您所在的城市或區域名稱是什麼? [Unknown]: cc 您所在的省/市/自治區名稱是什麼? [Unknown]: dd 該單位的雙字母國家/地區程式碼是什麼? [Unknown]: Ch CN=liang, OU=aa, O=bb, L=cc, ST=dd, C=Ch是否正確? [否]: y Warning: JKS 金鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore ./tomcat.keystore -destkeystore ./tomcat.keystore -deststoretype pkcs12" 遷移到行業標準格式 PKCS12。 D:sslca>
在D:sslca生成了tomcat.keystore檔案:
3.生成使用者端證書
keytool -genkey -alias client -keypass 12345678 -keyalg RSA -keysize 2048 -validity 365 -storetype PKCS12 -keystore ./client.p12 -storepass 12345678
過程如下:提示資訊的回答可以任意填寫
您的名字與姓氏是什麼? [Unknown]: aa 您的組織單位名稱是什麼? [Unknown]: bb 您的組織名稱是什麼? [Unknown]: cc 您所在的城市或區域名稱是什麼? [Unknown]: dd 您所在的省/市/自治區名稱是什麼? [Unknown]: Ch 該單位的雙字母國家/地區程式碼是什麼? [Unknown]: Ch CN=aa, OU=bb, O=cc, L=dd, ST=Ch, C=Ch是否正確? [否]: y
在D:sslca生成了client.p12檔案:
1.開啟已有的SpringBoot工程
2.將證書檔案:client.p12複製到resources目錄下
3.修改application.yml
server: port: 8443 #注意,這裡是https存取的的埠號 ssl: key-store: file:F:Studymywebsitewebsitebacksrcmainresourcesclient.p12 key-store-password: 12345678 key-store-type: PKCS12 key-alias: client
注意:key-store:值的路徑要注意按實際修改
4.修改啟動類
新增servletContainer()和initiateHttpConnector()兩個方法,完整程式碼如下:
package com.jipson.websiteback; 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.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.context.annotation.Bean; @SpringBootApplication @MapperScan({"com.jipson.websiteback.dao"}) public class WebsitebackApplication { public static void main(String[] args) { SpringApplication.run(WebsitebackApplication.class, args); } @Bean public TomcatServletWebServerFactory servletContainer() { //springboot2 新變化 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(initiateHttpConnector()); return tomcat; } private Connector initiateHttpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8080); connector.setSecure(false); connector.setRedirectPort(8443); return connector; } }
5.啟動Springboot專案
6.瀏覽器存取 https://localhost:8443/getAllUser
可以看到用https存取成功了!
問題:此方式只支援https存取,存取http埠會自動轉到https方式存取。如果專案只需要https存取這樣設定已經夠用,如果需要http和https方式同時存取的話,繼續看如下設定。
設定既能支援https又能支援http的方式如下:
1.修改application.yml,新增http port設定
server: port: 8443 #注意,這裡是https存取的的埠號 http: port: 8081 ssl: key-store: file:F:Studymywebsitewebsitebacksrcmainresourcesclient.p12 key-store-password: 12345678 key-store-type: PKCS12 key-alias: client
2.還原啟動類(WebsitebackApplication.java):刪除或註釋掉servletContainer和initiateHttpConnector方法
3.新增設定類TomcatConfig.java
import org.apache.catalina.connector.Connector; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.servlet.server.ServletWebServerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class TomcatConfig { @Value("${server.http.port}") private int httpPort; @Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(); tomcat.addAdditionalTomcatConnectors(createStandardConnector()); // 新增http return tomcat; } private Connector createStandardConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setPort(httpPort); return connector; } }
這樣設定就可以用http和https都能存取了
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45