Skip to content

SpringBoot SSL

Published: at 下午09:10

如何在 SpringBoot 上 設定SSL

準備的資料

  1. 機器已安裝好jdk 因為需要使用 keytool

  2. 安裝 openssl

  1. 憑證 pem 和 key

使用 openssl 產生 pfx

找到 openssl 的安裝路徑 在 openssl.exe 點右鍵使用 系統管理員開啟 會有個命力提示字元可以使用

pkcs12 -export -out {{預期輸出的路徑和檔名.pfx}} -in {{pem的路徑和檔名.pem}}  -inkey {{key的路徑和檔名.key}}

假設 憑證路徑 放在 c:/users/user/Downloads/

pem

c:/users/user/Downloads/mydomain.pem

key

c:/users/user/Downloads/mydomain.key

預期輸出的pdx 為

c:/users/user/Downloads/mydomain.pfx

指令會是

pkcs12 -export -out c:/users/user/Downloads/mydomain.pfx -in c:/users/user/Downloads/mydomain.pem  -inkey c:/users/user/Downloads/mydomain.key

接著會需要輸入一組密碼 一定要記好 忘記就真的沒了 但也只是重產

使用 keytool 產生 jks檔案

開啟命令提示字元 輸入

keytool -importkeystore -srckeystore {{上一個步驟產生的pfx路徑}} -destkeystore {{期望產出jks檔案位置及檔名}} -srcstoretype PKCS12 -deststoretype JKS

範例

keytool -importkeystore -srckeystore c:/users/user/Downloads/mydomain.pfx -destkeystore c:/users/user/Downloads/mydomain.jks -srcstoretype PKCS12 -deststoretype JKS

接著會需要輸入一組密碼 一定要記好 忘記就真的沒了 但也只是重產

跑轉後就可以看到 jks 檔案在相對位置了

就可以拿著這個檔案去設定 ssl 了

SpringBoot yml 設定

將上一步驟產生的 jks 檔案放到 src/main/resources/ 資料夾下

開啟專案相對應的yml 檔案

增加設定 SSL

application.yml 增加

server:
  ssl:
    enabled: true # Activate HTTPS mode on the server port
    key-store-type: JKS # PKCS12, JKS
    protocol: TLS # SSL protocol to use
    enabled-protocols: TLSv1.2 # Enabled SSL protocols
    key-store: classpath:{{JKS檔案位置}} # e.g. /etc/tomcat7/keystore/tomcat.jks or /path/to/keystore.p12
    key-store-password: { { 最後一次輸入的密碼 } }

SpringBoot application 設定 同時有 http & https (應本地端開發 無https)

於 yml 增加一個http port 和 ssl 用的post 不同

http:
  port: 8087

於 springBoot Application.java 後面新增


    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        // 添加http
        tomcat.addAdditionalTomcatConnectors(createStandardConnector());
        return tomcat;
    }

    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(httpPort);
        return connector;
    }

測試

可以將專案打包war 使用

java -jar XXX.war 來測試 如果 ssl 設定正確 就可以正常跑起來

參考

https://blog.csdn.net/u013380694/article/details/116302790