<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Spring Boot SSL(HTTPS)示例 > 原文: [https://howtodoinjava.com/spring-boot/spring-boot-ssl-https-example/](https://howtodoinjava.com/spring-boot/spring-boot-ssl-https-example/) 在此 [SpringBoot](https://howtodoinjava.com/spring/spring-boot/spring-boot-tutorial-with-hello-world-example/) 示例中,學習配置 Web 應用程序以使用自簽名證書在 SSL(HTTPS)上運行。 也要學習**創建 SSL 證書**。 ## 不耐煩的 SSL 配置 #### Spring Boot HTTPS 配置 ```java server.port=8443 server.ssl.key-alias=selfsigned_localhost_sslserver server.ssl.key-password=changeit server.ssl.key-store=classpath:ssl-server.jks server.ssl.key-store-provider=SUN server.ssl.key-store-type=JKS ``` #### 從 HTTP 重定向到 HTTPS ```java private Connector redirectConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8080); connector.setSecure(false); connector.setRedirectPort(8443); return connector; } ``` 有關如何設置整體的詳細教程,請繼續閱讀。 ## 術語 在繼續之前,讓我們了解 SSL 或 TLS 等特定術語的含義。 **SSL** – 表示安全套接字層。 它是行業標準協議,用于通過保護在兩個系統之間發送的所有敏感數據來保護 Internet 連接的安全,從而防止黑客讀取和修改任何傳輸的信息。 **TLS** – (傳輸層安全性)是 SSL 的更新,更安全的版本。 它增加了更多功能。 如今,證書頒發機構提供的證書僅基于 TLS。 但是,關于網絡上的安全通信,SSL 一詞仍然很普遍,因為它很老,并且在社區中很流行。 **HTTPS** – 通過 SSL 證書保護網站時,URL 中顯示(安全的超文本傳輸??協議)。 它是 HTTP 協議的安全版本。 **信任庫和密鑰庫** – 用于在 Java 中存儲 SSL 證書的證書,但它們之間沒有什么區別。 `truststore`用于存儲公共證書,而`keystore`用于存儲客戶端或服務器的私有證書。 ## 創建自己的自簽名 SSL 證書 要為我們的應用程序獲取 SSL 數字證書,我們有兩種選擇: 1. 創建一個自簽名證書 2. 為了從證書頒發機構(CA)獲得 SSL 證書,我們將其稱為 CA 證書。 為了今天的演示目的,我們將創建由 Java `keytool`命令生成的自簽名證書。 我們需要在命令提示符下運行`keytool -genkey`命令。 這是我們將使用的確切命令: ```java keytool -genkey -alias selfsigned_localhost_sslserver -keyalg RSA -keysize 2048 -validity 700 -keypass changeit -storepass changeit -keystore ssl-server.jks ``` 讓我們了解以上命令: * `-genkey` – 是用于生成證書的`keytool`命令,實際上`keytool`是一種多功能且功能強大的工具,具有多個選項 * `-alias selfsigned_localhost_sslserver` – 表示證書的別名,由 SSL / TLS 層使用 * `-keyalg RSA -keysize 2048 -validity 700` – 是自描述參數,指示加密算法,密鑰大小和證書有效性。 * `-keypass changeit -storepass changeit` – 是我們的信任庫和密鑰庫的密碼 * `-keystore ssl-server.jks` – 是將存儲證書和公用/專用密鑰的實際密鑰庫。 在這里,我們從 Java 密鑰庫使用 [JKS](https://en.wikipedia.org/wiki/Keystore),密鑰庫還有其他格式。 一旦執行了以上命令,它將要求某些信息,最后看起來像這樣。 ![](https://img.kancloud.cn/3e/b1/3eb151e8d960e18b94b0cdc50dadc15d_1224x276.jpg) 生成證書的`keytool` 至此,我們就需要生成證書。 這將在執行`keytool`命令的目錄中生成`ssl-server.jks`密鑰庫文件,其中包含我們的自簽名證書。 要查看此密鑰庫中的內容,我們可以再次使用`keytool -list`命令。 ```java keytool -list -keystore ssl-server.jks ``` 輸出將類似于: ![](https://img.kancloud.cn/7b/07/7b072c6d5de37eeb9c6ede4a4e3fb0b4_1207x177.jpg) `keytool -list`選項 ## 創建 Spring Boot 項目并配置 SSL #### 生成 Spring Boot 項目 從[ SPRING 初始化器](https://start.spring.io/)站點創建一個具有依賴項`Web`和`Rest Repositories`的 spring boot 項目。 選擇依賴項并給出適當的 Maven GAV 坐標后,我們將獲得壓縮格式的下載選項。 下載框架項目,解壓縮,然后將其作為 Maven 項目導入 eclipse 中。 ![](https://img.kancloud.cn/69/04/6904b4407725cdc43323fb28cb8a0d87_1358x695.jpg) Spring boot 項目生成 #### 添加 REST 端點 為了進行測試,我們將使用一個簡單的 [REST](https://restfulapi.net) 端點。 為此,請打開已生成的帶有`@SpringBootApplication`注解的 spring boot 應用程序類,并添加此代碼。 這將在服務器中公開一個帶有相對 URL `/secured`的其余端點。 ```java @RestController class SecuredServerController{ @RequestMapping("/secured") public String secured(){ System.out.println("Inside secured()"); return "Hello user !!! : " + new Date(); } } ``` 這就是我們需要在應用程序中添加 Web 內容的全部。 您可以添加更多內容,例如添加頁面,圖像以創建功能完善的 Web 應用程序。 #### Spring Boot SSL 配置 首先,我們需要將生成的密鑰庫文件(`ssl-server.jks`)復制到`resources`文件夾中,然后打開`application.properties`并添加以下條目。 ```java server.port=8443 server.ssl.key-alias=selfsigned_localhost_sslserver server.ssl.key-password=changeit server.ssl.key-store=classpath:ssl-server.jks server.ssl.key-store-provider=SUN server.ssl.key-store-type=JKS ``` 這就是我們啟用 https 所需要的。 很簡單,對吧? 借助 SpringBoot,使一切變得非常容易。 #### 示例 現在是時候通過命令`mvn clean install`進行最終的 Maven 構建,并通過`java -jar target\ssl-server-0.0.1-SNAPSHOT.jar`命令啟動應用程序。 這將在`localhost 8443`端口啟動我們的安全應用程序,我們的端點 URL 將為 [https://localhost:8443/secured](https://localhost:8443/secured)。 由于我們的 REST 端點是通過 GET 公開的,因此我們只能通過瀏覽器進行測試。 轉到 [https://localhost:8443/secured](https://localhost:8443/secured),您將收到一些瀏覽器警告,例如未從受信任的證書頒發機構頒發證書,在瀏覽器中添加例外,您將收到剛剛由你創建的 HTTPS 服務器的響應。 ![](https://img.kancloud.cn/ce/cd/cecd8bc10d43b74f0971c25a88132d3a_955x202.jpg) 瀏覽器輸出 ## 將 HTTP 請求重定向到 HTTPS 如果您要將 HTTP 流量重定向到 HTTPS,從而使整個站點變得安全,這是一個可選步驟。 為此,在 SpringBoot 時,我們需要在`8080`端口添加 HTTP 連接器,然后需要設置重定向端口`8443`。 這樣`8080`中通過 http 發出的任何請求都將自動重定向到`8443`和 https。 為此,您只需要添加以下配置。 ```java @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(redirectConnector()); return tomcat; } private Connector redirectConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8080); connector.setSecure(false); connector.setRedirectPort(8443); return connector; } ``` 通過命令`mvn clean install`進行最終的 Maven 構建,然后啟動應用程序。 測試 [http://localhost:8080/secured](http://localhost:8080/secured)。 它將自動重定向到 HTTPS 安全 URL。 ## 總結 因此,今天我們了解了如何在 Spring Bean 應用程序中啟用 **HTTPS**,并且還了解了**如何將 HTTP 流量重定向至 HTTPS** 。 我們還學會了**創建自簽名 SSL 證書**。 將我的問題放在評論部分。 [下載源碼](https://howtodoinjava.com/wp-content/uploads/2017/09/ssl-server.zip) 學習愉快!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看