我們寫的接口默認都是http形式的,不過我們的接口很容易被人抓包,而且一抓全是明文的挺尷尬的
spring boot配置https生成證書大的方向有3種:
1.利用keytool自己生成證書
2.從免費的https網站申請證書,例如letsencrypt
3.買收費的證書
本人沒錢,記錄下第一種和第二種方法。
第一種方法:
找個地方keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650,全部回車什么都不用填,最好選擇是,然后輸入密碼;將生成的keystore.p12復雜到resources文件下,然后在配置文件application.yml下加入:
server:
port: 8080
ssl:
key-store: classpath:keystore.p12
key-store-password: yourpassword
key-store-type: PKCS12
key-alias: tomcat
security:
require-ssl: true
security:
require-ssl: true
啟動項目,訪問接口的時候在前面加https://才能訪問,我們用抓包軟件fiddler試着抓了下,明文的輸入輸出被加密了,看了下證書10年
第二種方法:
下載letsencrypt的證書,這個其它地方有記錄http://www.cnblogs.com/waterlufei/p/7261311.html ,然后在/etc/letsencrypt/live/example.com目錄執行:
openssl pkcs12 -export -in fullchain.pem \
-inkey privkey.pem \
-out keystore.p12 \
-name tomcat \
-CAfile chain.pem \
-caname root
輸入確認密碼,會產生keystore.p12文件,復制到windows,后面的步驟跟上面一樣
最后看了下第二種方法的證書周期是3個月,但是直接在瀏覽器中訪問接口地址還是和第一種方法一樣https都是提示不安全,這是因為我們申請的證書是基於域名申請的,而我們本地不是這個域名,這不要緊,我們把項目部署到服務器后就好了,一路標綠,game over,接口和html頁面都可以https了:


小技巧:我們啟動的項目的時候如果不想每次都修改配置文件,可以在jar包同目錄下新建config目錄,然后在config下面新建application.yml,這樣我們改革端口什么的很方便,不用再打包項目了
