這里進(jìn)行的是本地的配置森枪,如果是服務(wù)器的配置。步驟也一樣审孽。但是县袱,一般服務(wù)器建議購(gòu)買(mǎi)證書(shū),或者申請(qǐng)免費(fèi)的域名證書(shū)(需要域名 )佑力。
本地配置的證書(shū)屬于不安全的證書(shū)
1式散、生成證書(shū)文件
利用jdk?里的工具keytool.exe來(lái)生成。
win+R?進(jìn)入cmd? ? ?(如果沒(méi)有配置jdk環(huán)境變量打颤,需要cd到 jkd? 下的? bin?目錄 暴拄。畢竟環(huán)境變量配置了,可以在任意目錄訪問(wèn)bin目錄下的的文件编饺,像java.exe?和? 現(xiàn)在要使用的keytool)
D:\>keytool -genkeypair -alias "任意名稱" -keyalg "RSA" -keystore "任意名稱.keystore"
輸入密鑰庫(kù)口令:? ? ? ? ? ? ? ? ? ? ? #不可見(jiàn)乖篷,要記得。
再次輸入新口令:
您的名字與姓氏是什么? [Unknown]: xxx
您的組織單位名稱是什么? [Unknown]: xxx??
?您的組織名稱是什么? [Unknown]: xxx? ?
?您所在的城市或區(qū)域名稱是什么? [Unknown]: shanghai
您所在的省/市/自治區(qū)名稱是什么? [Unknown]: xxx? ?
?該單位的雙字母國(guó)家/地區(qū)代碼是什么? [Unknown]: CN? ?
CN=chen, OU=xiaolong, O=xiaolong, L=shanghai, ST=sss, C=ss
是否正確? : Y? ? ? ? ? ? ? ??
以上輸入可任意透且,但是要記住撕蔼。代碼寫(xiě)注釋就行了。
Warning:JKS 密鑰庫(kù)使用專用格式石蔗。建議使用 "xxxxxxxxxx" 遷移到行業(yè)標(biāo)準(zhǔn)格式 PKCS12罕邀。
#? ?y后出現(xiàn)這樣一行警告提示⊙啵可以復(fù)制它回車執(zhí)行诉探。但是此時(shí)keyStoreType?變成了JKS,并為你進(jìn)行了一個(gè)備份
D:\>keytool -list -keystore test.keystore? ? ? ? ?#可進(jìn)行查看
輸入密鑰庫(kù)口令:??
密鑰庫(kù)類型: jks
密鑰庫(kù)提供方: SUN?
2、把對(duì)應(yīng)生成的keystore文件放到項(xiàng)目resources?下
ps:你在哪里cmd? 文件就會(huì)在哪里生成棍厌。桌面就是c盤(pán)?用戶?目錄 肾胯。也可以指定路徑。在生成的時(shí)候吧“任意.keystore”? 改為"D:\xxx\xxxx.keystore"
然后在application.yml?配置ssl
然后就可以正常訪問(wèn)項(xiàng)目了耘纱。
相關(guān)錯(cuò)誤:Could not load key store 'classpath:
可以看出來(lái)敬肚,沒(méi)有在對(duì)應(yīng)目錄找到? xxx.keystore進(jìn)行key讀取。這時(shí)候去target?目錄?看看是否有 xxxx.keystore文件束析。如果沒(méi)有艳馒,進(jìn)行maven clean?重新編譯,完成啟動(dòng)。
相關(guān)優(yōu)化:
? ? 配置自動(dòng)用https訪問(wèn)項(xiàng)目弄慰。(即輸出127.0.0.1/index?會(huì)自動(dòng)添加https第美。而不是http,此時(shí)已經(jīng)不能用http進(jìn)行訪問(wèn))
···
//下面是2.0的配置陆爽,1.x請(qǐng)搜索對(duì)應(yīng)的設(shè)置
@Bean
public ServletWebServerFactoryservletWebServerFactory(){
TomcatServletWebServerFactory factory =new TomcatServletWebServerFactory(){
@Override
? ? ? ? protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint =new SecurityConstraint();
? ? ? ? ? ? securityConstraint.setUserConstraint("CONFIDENTIAL");//機(jī)密的
? ? ? ? ? ? SecurityCollection securityCollection =new SecurityCollection();
? ? ? ? ? ? securityCollection.addPattern("/*");
? ? ? ? ? ? securityConstraint.addCollection(securityCollection);
? ? ? ? ? ? context.addConstraint(securityConstraint);
? ? ? ? }
};
? ? factory.addAdditionalTomcatConnectors(httpConnector());
? ? return factory;
}
@Bean
public ConnectorhttpConnector(){
Connector connector =new Connector("org.apache.coyote.http11.Http11NioProtocol");
? ? connector.setScheme("http");
? ? connector.setPort(8099);
? ? connector.setSecure(false);
? ? connector.setRedirectPort(8080);
? ? return? connector;
}
···