本篇內(nèi)容主要講解“Spring boot中怎么配置HTTPS自簽名證書”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Spring boot中怎么配置HTTPS自簽名證書”吧!
靈臺(tái)網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
獲取SSL證書主要有兩種,一種是自己通過工具自動(dòng)生成,另外一種是通過SSL證書服務(wù)商獲取,當(dāng)然了后一種是需要收費(fèi)的。
本文主要介紹用JDK自帶的keytool工具來生成SSL證書。如何查看我們的JDK是否帶有keytool工具,只需要windows 控制臺(tái)輸入如下命令
keytool --help
若輸出如圖1信息,則證明此JDK版本帶有keytool工具。
圖1
接下來開始生成證書,在命令行終端輸入
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
簡(jiǎn)單說明一下各個(gè)參數(shù)的含義
1.-storetype 指定密鑰倉(cāng)庫(kù)類型
2.-keyalg 生證書的算法名稱,RSA是一種非對(duì)稱加密算法
3.-keysize 證書大小
4.-keystore 生成的證書文件的存儲(chǔ)路徑
5.-validity 證書的有效期
當(dāng)然了,我們也可以不指定密鑰倉(cāng)庫(kù)類型,JDK會(huì)默認(rèn)選用JKS, 如
keytool -genkeypair -alias tomcat -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 3650
兩種都可以,但Oracle推薦使用第一種.
C:\Users\liting.wang>keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RS A -keysize 2048 -keystore keystore.p12 -validity 3650 輸入密鑰庫(kù)口令: 再次輸入新口令: 您的名字與姓氏是什么? [Unknown]: 您的組織單位名稱是什么? [Unknown]: 您的組織名稱是什么? [Unknown]: 您所在的城市或區(qū)域名稱是什么? [Unknown]: 您所在的省/市/自治區(qū)名稱是什么? [Unknown]: 該單位的雙字母國(guó)家/地區(qū)代碼是什么? [Unknown]: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正確? [否]: 是
執(zhí)行完上面一行命令后,在你的系統(tǒng)的當(dāng)前用戶目錄下會(huì)生成一個(gè)keystore.p12文件
我們也可以使用下面的命令查看我們證書內(nèi)容
keytool -list -v -storetype pkcs12 -keystore keystore.p12
C:\Users\liting.wang>keytool -list -v -storetype pkcs12 -keystore keystore.p12 輸入密鑰庫(kù)口令: 密鑰庫(kù)類型: PKCS12 密鑰庫(kù)提供方: SunJSSE 您的密鑰庫(kù)包含 1 個(gè)條目 別名: tomcat 創(chuàng)建日期: 2017-11-29 條目類型: PrivateKeyEntry 證書鏈長(zhǎng)度: 1 證書[1]: 所有者: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown 發(fā)布者: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown 序列號(hào): 6b628be1 有效期開始日期: Wed Nov 29 18:52:33 CST 2017, 截止日期: Sat Nov 27 18:52:33 CST 2027 證書指紋: MD5: D6:71:F9:ED:11:A7:8A:AB:69:DC:9A:99:E2:4B:94:CE SHA1: 88:E5:A7:1C:77:5E:D9:83:F4:14:76:D2:E3:1F:31:FB:37:29:31:13 SHA256: D6:52:D8:56:A7:07:E6:99:3D:EB:BB:E8:D5:E7:E1:D0:66:B6:AD:D5:BC: 65:01:9D:60:6D:95:BA:CD:63:75:C0 簽名算法名稱: SHA256withRSA 版本: 3 擴(kuò)展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 31 84 6B E8 DB 63 6B 5E 63 CE A9 DA C8 72 82 88 1.k..ck^c....r.. 0010: EB F9 71 5B ..q[ ] ] ******************************************* *******************************************
如果你已經(jīng)有SSL證書,你也可將其導(dǎo)入到keystore里,供Spring Boot使用
keytool -import -alias tomcat -file myCertificate.crt -keystore keystore.p12 -storepass password
將這個(gè)文件拷貝到我們項(xiàng)目的resources目錄下,與application.properties同一目錄,然后修改application.properties文件,添加HTTPS支持。在application.properties中添加如下代碼:【似乎無需加classpath,似乎是要放絕對(duì)地址】
# Define a custom port instead of the default 8080 server.port = 8443 # Tell Spring Security (if used) to require requests over HTTPS security.require-ssl=true # The format used for the keystore server.ssl.key-store-type:PKCS12 # The path to the keystore containing the certificate server.ssl.key-store=classpath:keystore.p12 # The password used to generate the certificate server.ssl.key-store-password=password # The alias mapped to the certificate server.ssl.key-alias=tomcat
第一行指定https請(qǐng)求訪問的端口;
第二行是告訴Spring Security 請(qǐng)求也需要透過HTTPS, 簽名文件;
第三行指定密鑰倉(cāng)庫(kù)類型;
第四行指定密鑰倉(cāng)庫(kù)路徑;
第五行指定簽名密碼;
第六行是別名。
OK,這樣配置完成之后我們就可以通過HTTPS來訪問我們的Web了.
以上是針對(duì)Spring Boot內(nèi)嵌Tomcat,如果Local的Tomcat,那應(yīng)該如何配置呢?
首先到你的Tomcat安裝目錄的conf目錄下找到server.xml配置文件,打開https connector,即將
<!-- <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> -->
去掉注釋并修改為
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="${user.home}/keystore.p12" keystorePass="123456" />
其中 keystoreFile="${user.home}/keystore.p12"為SSL證書的路徑,keystorePass="123456"為你證書的密碼。
以上為Tomcat8.0的配置。
Tomcat9.0跟Tomcat8.0有點(diǎn)不太一樣,但原理是一樣的,將
<!-- <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="conf/localhost-rsa.jks" type="RSA" /> </SSLHostConfig> </Connector> -->
去掉注釋并修改為:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="conf/keystore.p12" certificateKeystorePassword="123456" certificateKeyAlias="tomcat" type="RSA" /> </SSLHostConfig> </Connector>
其實(shí)也就是換了個(gè)表達(dá)形式而已,換湯不換藥。具體可參考TOMCAT9.0的官方配置文檔http://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html。
重啟Tomcat Service,如果有看到輸出Starting ProtocolHandler ["http-nio-8443"]的log信息,則說明配置成功
圖2
這樣就可以通過HTTPS來訪問我們的Web了
光有HTTPS肯定還不夠,很多用戶可能并不知道,用戶有可能繼續(xù)使用HTTP來訪問你的網(wǎng)站,這個(gè)時(shí)候我們需要添加HTTP自動(dòng)重定向到HTTPS的功能,當(dāng)用戶使用HTTP來進(jìn)行訪問的時(shí)候自動(dòng)轉(zhuǎn)為HTTPS的方式。
配置很簡(jiǎn)單,在入口類中添加相應(yīng)的重定向Bean就行了,如下:
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.context.embedded.EmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ConnectorConfig { @Bean public EmbeddedServletContainerFactory servletContainer() { TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() { @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(getHttpConnector()); return tomcat; } private Connector getHttpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8080); connector.setSecure(false); connector.setRedirectPort(8443); return connector; } }
這個(gè)時(shí)候當(dāng)我們?cè)L問http://localhost:8080/SpringBootBase的時(shí)候系統(tǒng)會(huì)自動(dòng)重定向到https://localhost:8443/SpringBootBase這個(gè)地址上。這里的Connector實(shí)際就是server.xml中配置的Tomcat的Connector節(jié)點(diǎn)。
同樣在conf目錄下,打開web.xml,在最后一個(gè)的節(jié)點(diǎn)后加上
<security-constraint> <web-resource-collection> <web-resource-name>OPENSSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
重啟Tomcat Service即可,這個(gè)時(shí)候當(dāng)我們?cè)L問http://localhost:8080/SpringBootBase的時(shí)候Tomcat也會(huì)將其自動(dòng)重定向到
到此,相信大家對(duì)“Spring boot中怎么配置HTTPS自簽名證書”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
標(biāo)題名稱:Springboot中怎么配置HTTPS自簽名證書
轉(zhuǎn)載注明:http://sd-ha.com/article46/gpchhg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、網(wǎng)站內(nèi)鏈、App開發(fā)、關(guān)鍵詞優(yōu)化、網(wǎng)站導(dǎo)航、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)