使用GoDaddy SSL憑證啟用Spring Boot HTTPS

雲林西螺 西螺大橋下

為什麼要寫這篇文章?不是就一個憑證?

最近用Spring Boot寫Line Bot,Line Bot的webhook需要用到HTTPS,剛好看到GoDaddy買.app的網域贈送SSL憑證,想說好吧!就給它買下去吧!

興高采烈開始申請憑證,才發現Spring Boot的憑證安裝沒想像中簡單,花了一整天的時間才完成,所以才產生這篇文章…

來安裝憑證吧!

1.建立JKS

使用Java的Keytool建立,在要安裝憑證的主機上,開啟Terminal輸入以下指令,在<>中的值請改成您的值:

$ keytool -genkey -alias <domain> -keyalg RSA -keystore <keystore.jks> -keysize 2048

這時會需要輸入一些資料,請注意這裡的first and last name請輸入你的domain(例如:google.com)

2.產生CSR

繼續輸入以下指令,在<>中的值請改成您的值:

$ keytool -certreq -alias <domain> -keystore <keystore.jks> -file <domain.csr> 

這時會產生一個CSR,執行

$ cat domain.csr

這時會跑出一組認證要求碼,將此組要求碼複製到GoDaddy網站上

3.到GoDaddy換憑證

在您的產品,找到SSL憑證並按下管理,找到憑證簽名申請將剛複製的要求碼貼上(在此簡略某些步驟,請按照您的網頁操作)

過一會後會收到GoDaddy申請通過通知,就可以下載憑證了,我選擇的伺服器類型是Tomcat,下載後解壓縮後,會有兩個CER檔跟一個PEM檔

4.將CER轉成P12

Spring Boot的SSL憑證需要P12檔,所以必須再將CER轉成P12

繼續輸入以下指令,在<>中的值請改成您的值:

$ keytool -import -trustcacerts -alias intermediate -file <intermediate.crt> -keystore <keystore.jks>

這裡的-alias是輸入intermediate,<intermediate.crt>請輸入剛憑證檔名中有bundle的CER檔

之後繼續輸入以下指令,在<>中的值請改成您的值:

$ keytool -import -trustcacerts -alias <domain> -file <domain.crt> -keystore <keystore.jks>

最後輸入以下指令,在<>中的值請改成您的值:

$ keytool -importkeystore -srckeystore <keystore.jks> -destkeystore <keystore.p12> -srcstoretype JKS -deststoretype PKCS12 -deststorepass <password> -srcalias <domain> -destalias <domain>

這裡的keystore.jks是第一部產生的JKS檔,keystore.p12是想產生的p12檔名,password是p12的密碼,-srcalias是來源alias,-destalias是目標alias

完成以上步驟後就能產生P12檔了!!!

5.設定Spring Boot

將P12憑證放到專案的resources目錄下

P12憑證

然後設定application.yml(application.properties也是同樣的設定)

application.yml設定啟用SSL

然後成功執行Spring Boot就完成囉!!!

感想

萬萬沒想到申請一個憑證竟然花了我一天,希望以後有需要的朋友能快速建立自己的SSL憑證!

如有任何問題或批評指教,歡迎您告訴我!謝謝各位的閱讀.

--

--

--

Shares Android development and Kotlin programming.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Hank Li

Hank Li

Shares Android development and Kotlin programming.

More from Medium

Spring Boot Tests with Kotlin and Embedded Kafka

Spring Data JDBC: Implementing Domain Driven Design Aggregate

Redis Pub/Sub with SpringBoot + Kotlin

Getting started with Spring for GraphQL in Spring Boot