1. 程式人生 > >windows+tomcat+https(免費證書)

windows+tomcat+https(免費證書)

方法一:使用JAVA自帶的keytool生成證書,但是該方法生成的證書不是有效證書,不被瀏覽器信任,如果是被信任的站點,瀏覽器左側會有個綠色的圖示,但是這種方法簡單,本地就可以輕鬆測試。

要想使用https,首先,我們需要有SSL證書,證書可以通過兩個渠道獲得:

  1. 公開可信認證機構
    例如CA,但是申請一般是收費的,一般幾百到幾千一年.
  2. 自己生成
    雖然安全性不是那麼高,但勝在成本低.
  3. 目前證書有以下常用檔案格式:JKS(.keystore),微軟(.pfx),PEM(.key + .crt)。其中,tomcat使用JKS格式,nginx使用PEM格式.這裡用JKS做示例
  4. 生成JKS證書
  5. 開啟命令列輸入keytool -genkey -v -alias testKey -keyalg RSA -validity 3650 -keystore E:\testKey\test.keystore
  6. alias: 別名 這裡起名testKey
    keyalg: 證書演算法,RSA
    validity:證書有效時間,10年
    keystore:證書生成的目標路徑和檔名,替換成你自己的路徑即可,我定義的是E:\testKey\test.keystore
    回車,然後會讓你輸入一些資訊,其中祕鑰庫口令和祕要口令最好輸入同一個,並且記下這個口令,(配置tomcat會用到該口令)其他的可隨意填
  7. Tomcat配置Https
  8. 開啟tomcat下的conf目錄下的server.xml檔案,搜尋https即可定位到相應的元件,完整的配置如下:
  9. <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
                   maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
                   clientAuth="false" sslProtocol="TLS" keystoreFile="你的keystore路徑" keystorePass="生成證書時的口令"  />
  10. 網址輸入https://127.0.0.1:8443可正常訪問,但是會發現http://127.0.0.1:8080也可以正常訪問但是並沒有跳轉到https協議,這裡我們做如下配置
  11. 在web.xml末尾加上如下配置:

    <security-constraint>

        <web-resource-collection >

                  <web-resource-name >SSL</web-resource-name>

                  <url-pattern>/*</url-pattern>

           </web-resource-collection>

           <user-data-constraint>

           <transport-guarantee>CONFIDENTIAL</transport-guarantee>

           </user-data-constraint>

    </security-constraint>

    然後我們訪問Http埠時就會跳轉到https協議埠

    方法二,見後續文章