全站HTTPS升級系列(四)專案程式碼升級改造

msh01發表於2019-01-11

本文以msh.com 域名為例

一、修改頁面內的 HTTP 協議為HTTPS協議

HTTPS 下不允許 HTTP 請求,如果有此情況,則會在瀏覽器控制檯報如下錯誤

(index):42 Mixed Content: The page at 'https://b.test.iupiao.cn/' was loaded over HTTPS, but requested an insecure stylesheet 'http://at.alicdn.com/t/font_203680_of0yc4ur0ie.css'. This request has been blocked; the content must be served over HTTPS.
複製程式碼

或者

Mixed Content: The page at 'https://b.test.iupiao.cn/' was loaded over HTTPS, but requested an
複製程式碼

錯誤原因可能如下:

  • 當前的HTTPS所承載的頁面,但是在頁面內引用了通過HTTP 協議訪問的靜態資源
  • 當前的HTTPS所承載的頁面,傳送了請求路徑為HTTP 協議的Ajax 非同步請求

解決方案

將所有的HTTP 協議的URL全域性替換為HTTPS協議

二、 修改頁面內的ws協議為wss協議

Nginx做全站HTTPS升級的時候,是不涉及到WebSocket相關的配置的

唯一需要做的,就是升級成功後,在前端程式碼裡面把ws://協議替換為wss://即可

想深入瞭解的話,請參考這篇文章: WebSocket 和socket、HTTP的區別和聯絡

三、後端改造

本專案用Java作為後端語言。在後端,通過SpringRestTemplate來做各個後端服務直接的資料請求

全站升級HTTPS後,RestTemplate 請求https路徑下的介面時會報錯,解決方式參見下方程式碼

原理:

  • 把RestTemplate 的例項bean的生成方法重寫一遍,使之信任所有的安全證照
  • spring在例項化RestTemplate 的時候,會呼叫此方法,

把下面程式碼放到任意一個spring管理下的service或者controller即可,之後spring裡面的所有的RestTemplate 例項就會通過此方法生成

@Bean
public RestTemplate restTemplate()
        throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
    TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;

    SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
            .loadTrustMaterial(null, acceptingTrustStrategy)
            .build();

    SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);

    CloseableHttpClient httpClient = HttpClients.custom()
            .setSSLSocketFactory(csf)
            .build();

    HttpComponentsClientHttpRequestFactory requestFactory =
            new HttpComponentsClientHttpRequestFactory();

    requestFactory.setHttpClient(httpClient);
    RestTemplate restTemplate = new RestTemplate(requestFactory);
    return restTemplate;
}
複製程式碼

系列文章

全站HTTPS升級系列(一)升級前的科普工作

全站HTTPS升級系列(二)基於 acme.sh從Letsencrypt生成免費的泛域名證照

全站HTTPS升級系列(三)nginx配置全站HTTPS

全站HTTPS升級系列(四)專案程式碼升級改造

相關文章