- 確保安裝了JDK并正確配置了環(huán)境變量,;
- 進(jìn)入你的JAVA_HOME目錄中的bin目錄,;
// keytool -genkey -alias (別名) -dname 'CN=(姓名),OU=(組織單位名稱),O=(組織名稱),L=(城市名稱),ST=(省),C=(國(guó)家)' -storetype (密鑰倉(cāng)庫(kù)類型) -keyalg (生證書的算法名稱) -keysize (密鑰長(zhǎng)度,證書大小) -keystore (指定生成證書的位置和證書名稱) -validity (證書有效期,天單位)
keytool -genkey -alias uublog -dname 'CN=Lhc,OU=SCYD,O=SCYD,L=CD,ST=SiChuan,C=CN' -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365
- 獲取名為
keystore.p12
的證書,,將其放入resources目錄中,,并在application.properties
或application.yml
中配置
#https端口號(hào).
server.port: 443
#證書的路徑.
server.ssl.key-store: classpath:keystore.p12
#證書密碼,請(qǐng)修改為您自己證書的密碼.
server.ssl.key-store-password: 123456
#秘鑰庫(kù)類型
server.ssl.keyStoreType: PKCS12
#證書別名
#server.ssl.keyAlias: uublog
若指定的端口非443,,則在訪問的時(shí)添加具體的端口號(hào)
package com.lhc.uublog.utils;
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;
/**
* @ProjectName: uublog
* @Package: com.lhc.uublog.utils
* @ClassName: SSLUtils
* @Author: lhc
* @Description: Http重定向到Https
*/
@Configuration
public class SSLUtils {
@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;
}
}
若部署環(huán)境為windows,,直接啟動(dòng)即可;若部署環(huán)境是Linux,,先開通443端口,,在進(jìn)行部署
> 基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限,、多租戶,、數(shù)據(jù)權(quán)限、工作流,、三方登錄,、支付、短信,、商城等功能
>
> * 項(xiàng)目地址:<https://github.com/YunaiV/ruoyi-vue-pro>
> * 視頻教程:<https://doc./video/>
# 判斷443端口是否已經(jīng)開放
firewall-cmd --query-port=443/tcp
> 基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶,、數(shù)據(jù)權(quán)限,、工作流、三方登錄,、支付,、短信、商城等功能
>
> * 項(xiàng)目地址:<https://github.com/YunaiV/yudao-cloud>
> * 視頻教程:<https://doc./video/>
# 若未開放,,則配置開啟,,并重新加載配置
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload
- 以JDK生成證書的方式足夠簡(jiǎn)單,,但在Chrome和Edge瀏覽器上依舊顯示不安全,因此下面就使用FreeSSL提供的免費(fèi)證書
FreeSSL.cn 是一個(gè)免費(fèi)提供 HTTPS 證書申請(qǐng),、HTTPS 證書管理和 HTTPS 證書到期提醒服務(wù)的網(wǎng)站,,旨在推進(jìn) HTTPS 證書的普及與應(yīng)用,簡(jiǎn)化證書申請(qǐng)的流程,。
1.首先你得有一個(gè)域名,,推薦國(guó)外的GoDaddy,價(jià)格合適且不需要備案就可以進(jìn)行解析,;
2.FreeSSL網(wǎng)站上有對(duì)不同品牌的介紹了和證書生成方式的介紹,,請(qǐng)參閱網(wǎng)站;
3.一頓操作之后,,相信你已經(jīng)下載證書到本地了,,將證書放入resources目錄中,并在配置文件中添加配置
#https端口號(hào).
server.port: 443
#證書的路徑.
server.ssl.key-store: classpath:***.jks
#證書密碼,,請(qǐng)修改為您自己證書的密碼.
server.ssl.key-store-password: ***
#秘鑰庫(kù)類型
server.ssl.keyStoreType: JKS
4.將http重定向到https,,代碼同上
5.打包并部署
通過(guò)查看日志,http請(qǐng)求成功重定向到到了https,,在Chrome瀏覽器中也標(biāo)示為安全網(wǎng)站
Spring Boot版本為2.0.4.RELEASE