欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么用SpringBoot實(shí)現(xiàn)httpsssl免密登錄

本篇內(nèi)容主要講解“怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄”吧!

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),貴定網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:貴定等地區(qū)。貴定做網(wǎng)站價(jià)格咨詢:13518219792

創(chuàng)建服務(wù)端證書

為了開啟 https ,我們需要一份證書。

實(shí)際開發(fā)中,會在網(wǎng)上申請一個(gè)機(jī)構(gòu)頒發(fā)的證書。這里為了方便,我會使用 openssl 命令自己生成一個(gè)證書來使用。

openssl req -x509 -sha256 -days 3650 -newkey rsa:4096 -keyout rootCA.key -out rootCA.crt
怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

所有的密碼都是 123456 ,然后根據(jù)提示輸入相關(guān)信息就好,如果嫌麻煩也可以直接回車跳過。

這樣我們就得到了證書 rootCA.crt 和私鑰 rootCA.key 。

要在 Spring Boot 中實(shí)現(xiàn)服務(wù)器端 X.509 身份驗(yàn)證,還需要給我們的服務(wù)端也生成一個(gè)證書。

openssl req -new -newkey rsa:4096 -keyout localhost.key -out localhost.csr

同樣,密碼是 123456 ,文件名 localhost 可以自行修改。

接下來就是用 rootCA 給我們的服務(wù)端證書做簽名了,在此之前,我們先寫一個(gè)配置文件,里面寫有一些基本的配置

  1. vi conf.config 


authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE subjectAltName = @alt_names [alt_names] DNS.1 = localhost

其中 DNS.1 的值就是你的域名,比如 www.segmentfault.com , localhost  等等。如果這里填錯(cuò)了,訪問網(wǎng)站時(shí),瀏覽器會提示網(wǎng)站不安全。

然后給服務(wù)端證書簽名,會提示你輸入 rootCA 的密碼

openssl x509 -req -CA rootCA.crt -CAkey rootCA.key -in localhost.csr -out localhost.crt -days 365 -CAcreateserial -extfile conf.config

成功后,讓我們查看一下證書的信息

openssl x509 -in localhost.crt -text
怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

最后再將簽名證書和私鑰打包到 PKCS 文件中

openssl pkcs12 -export -out localhost.p12 -name "localhost" -inkey localhost.key -in localhost.crt

這條指令會要你先輸入 localhost.key 的密碼,然后再要你定義 localhost.p12 的密碼。localhost.p12  這個(gè)密碼一定要記住,因?yàn)樵?Spring 的配置文件中有用到。

另外需要特別注意的是, Spring 配置文件中 server.ssl.keyAlias 的值,就是命令中的localhost(-name  "localhost") 。

Spring Boot開啟https

把 localhost.p12 復(fù)制到 resources 目錄下之后編譯項(xiàng)目

怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

修改application.properties文件

server.port=8888 server.ssl.key-store=classpath:localhost.p12 server.ssl.key-store-password=123456 server.ssl.keyStoreType=PKCS12 server.ssl.keyAlias=localhost

在 chrome://settings/security 中,選擇 受信任的根證書頒發(fā)機(jī)構(gòu) 導(dǎo)入 rootCA.crt

怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

這時(shí)啟動(dòng)項(xiàng)目,就可以使用 https 訪問網(wǎng)站了,而且瀏覽器提示網(wǎng)站時(shí)安全的。

怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

創(chuàng)建信托證書

信托證書中會存有 信任的外部實(shí)體的證書

這里我們只要將 rootCA.crt 添加進(jìn)去就可以了

keytool -import -trustcacerts -noprompt -alias ca -ext san=dns:localhost,ip:127.0.0.1 -file rootCA.crt -keystore localhost.jks

然后將 localhost.jks 添加到項(xiàng)目中,并修改配置文件

怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

application.properties添加:

server.ssl.trust-store=classpath:localhost.jks server.ssl.trust-store-password=123456 server.ssl.client-auth=need

注意:此時(shí)由于添加了server.ssl.client-auth=need,因?yàn)闆]有添加個(gè)人證書,所以這個(gè)時(shí)候刷新頁面,項(xiàng)目會無法訪問,如果想要同時(shí)兼任普通登錄,可以將need改成want,但是want只會在第一次訪問頁面時(shí)才會向客戶索取個(gè)人證書

怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

創(chuàng)建客戶端證書

現(xiàn)在創(chuàng)建一個(gè)客戶端的證書,步驟和服務(wù)端的差不多一樣。

openssl req -new -newkey rsa:4096 -nodes -keyout shurlormes.key -out shurlormes.csr

怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

在生成客戶端證書時(shí),那些信息不建議跳過,因?yàn)樵诤罄m(xù)的步驟中,會獲取其中的信息用以登錄。比如我在 Common Name  處填寫的信息,就是等下用來登錄的用戶名。

接下來用 RootCA 給客戶端證書簽名

openssl x509 -req -CA rootCA.crt -CAkey rootCA.key -in shurlormes.csr -out shurlormes.crt -days 365 -CAcreateserial

然后再將簽名證書和私鑰打包到 PKCS 文件中

openssl pkcs12 -export -out shurlormes.p12 -name "shurlormes" -inkey shurlormes.key -in shurlormes.crt

最后在 chrome://settings/security 選擇 個(gè)人證書 把 shurlormes.p12 導(dǎo)入,期間會要你輸入它的密碼。

怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄
怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄
怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

這時(shí)候刷新頁面,瀏覽器就會彈出一個(gè)對話框,讓你選擇個(gè)人認(rèn)證了。

怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

Spring Boot獲取個(gè)人證書信息

恭喜你,到了這一步, pki 登錄已經(jīng)完成了 99% 了。接下來就是通過 request 獲取證書信息,然后處理字符串,拿到用戶名做登錄即可。

@RequestMapping("/login") public String login(HttpServletRequest request) {     X509Certificate[] certs = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");     if(certs != null) {         X509Certificate gaX509Cert = certs[0];         String dn = gaX509Cert.getSubjectDN().toString();         System.out.println("個(gè)人證書信息:" + dn);         String username = "";         String[] dnArray = dn.split(",");         for (String dnItem : dnArray) {             String[] dnInfo = dnItem.split("=");             String key = dnInfo[0];             String value = dnInfo[1];             if("cn".equalsIgnoreCase(key.trim())) {                 username = value;                 break;             }         }         System.out.println("用戶名:" + username);          if(!StringUtils.isEmpty(username)) {             SecurityContext securityContext = SecurityContextHolder.getContext();             User userDetails = new User(username, "", Collections.EMPTY_LIST);             securityContext.setAuthentication(new UsernamePasswordAuthenticationToken(userDetails, "", Collections.EMPTY_LIST));             return "redirect:/";         }      }     return "login"; }

 怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

Spring Boot 同時(shí)開啟http和https

相信大家都發(fā)現(xiàn)了,現(xiàn)在項(xiàng)目只能通過 https 訪問,如果用 http 訪問瀏覽器直接返回 Bad request 了。

怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

要同時(shí)開啟 https 和 http ,只需添加一個(gè) TomcatConfig 就可以

@Configuration public class TomcatHttpConfig {     @Bean     public TomcatServletWebServerFactory servletContainer() {         TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();         tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());         return tomcat;     }      private Connector initiateHttpConnector() {         Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");         connector.setScheme("http");         connector.setPort(9999);         connector.setSecure(false);         return connector;     } }

這時(shí)候啟動(dòng)項(xiàng)目,注意看控制臺打印的信息。

怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

說明已經(jīng)成功啟動(dòng) http 在端口 9999 , https 在 8888 ,頁面也可以成功訪問了。

怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄

Spring Boot http自動(dòng)跳轉(zhuǎn)https

上面我們已經(jīng)可以同時(shí)訪問 htt p和 https ,但如果我要訪問 http 的時(shí)候,自動(dòng)跳轉(zhuǎn)的https 呢?

只需要在上面的基礎(chǔ)上稍微改改就可以了。

@Configuration public class TomcatHttpConfig {     @Bean     public TomcatServletWebServerFactory servletContainer() {         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(9999);         connector.setSecure(false);         connector.setRedirectPort(8888);         return connector;     } }

到此,相信大家對“怎么用Spring Boot實(shí)現(xiàn)https ssl免密登錄”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

網(wǎng)頁標(biāo)題:怎么用SpringBoot實(shí)現(xiàn)httpsssl免密登錄
文章轉(zhuǎn)載:http://aaarwkj.com/article16/gpjsgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、小程序開發(fā)搜索引擎優(yōu)化、微信公眾號用戶體驗(yàn)、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)
日韩欧美亚洲国产每日更新| 久久香蕉精品国产亚洲av| 最新国产不卡一区二区| 亚洲一区二区三区三洲| 欧美日韩精品一区二区在线| 男女视频一区二区三区在线观看| 国产美女主播视频一区二区三区| 可以直接看内射的视频| 99精品热视频在线观看| 国产一级一片内射在线| av成人黄色片在线播放| av一区二区三区网站| 欧美黑人少妇高潮喷水| 国产精品久久久久久久亚洲| 中国女人内射91熟女| 日本韩国一区二区精品| 在线看日本十八禁网站| 亚洲成人乱码一区二区| 人妻少妇av免费久久蜜臀| 日韩av黄色制服在线网站| 亚洲精品自拍一二三四区| 视频久久这里只有精品| 久久精品女人天堂av| 日韩三级视频一区二区| 久久久精品国产亚洲av色哟哟| 中字幕人妻一区二区三区| 国产一区二区伦理视频| 白白色手机视频免费看| 四虎最新永久在线网站| 亚洲人午夜射精精品日韩| 日韩精品二区在线观看| 免费黄色一区二区三区| 杨幂一区二区在线观看| 日韩精品中文女同在线播放| 91欧美日韩国产在线观看| 操你啦夜夜操狠狠躁天天爽| 欧美黄片在线免费观看视频 | 色综合久久天天射天天干| 国产亚洲无线码一区二区| 亚洲六月丁香六月婷婷| 亚洲丰满老熟女激情av|