讓web應用使用https進行訪問

背景

在網絡安全的大背景下,我們公司終於決定升級官網訪問,採用https代替http,本文存在三種部署方案,第一種是spring boot項目使用內帶tomcat, 第二種是使用nginx部署的項目,第三種使用iis部署的項目。

  1. 首先是生成證書,這個可以去各個證書網站購買,本文不講如何購買,如果我們需要測試的話我們可以在服務器上使用openssl生成一個證書,如果是Windows機器上沒有openssl命令,下載安裝,百度雲下載鏈接提取碼:5kjx,下載後安裝自不用說,但是得記住安裝路徑,安裝完了記得配置下環境變量。
    在這裏插入圖片描述打開命令行程序cmd(以管理員身份運行),運行以下命令:
    1.創建服務器證書密鑰文件 server.key:
    openssl genrsa -des3 -out server.key 1024
    輸入密碼,確認密碼,自己隨便定義,但是要記住,後面會用到。
    2.創建服務器證書的申請文件 server.csr
    openssl req -new -key server.key -out server.csr
    輸出內容爲:
    Enter pass phrase for root.key: ← 輸入前面創建的密碼
    Country Name (2 letter code) [AU]:CN ← 國家代號,中國輸入CN
    State or Province Name (full name) [Some-State]:BeiJing ← 省的全名,拼音
    Locality Name (eg, city) []:BeiJing ← 市的全名,拼音
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名
    Organizational Unit Name (eg, section) []: ← 可以不輸入
    Common Name (eg, YOUR name) []: ← 此時不輸入
    Email Address []:[email protected] ← 電子郵箱,可隨意填
    Please enter the following ‘extra’ attributes
    to be sent with your certificate request
    A challenge password []: ← 可以不輸入
    An optional company name []: ← 可以不輸入
    4.備份一份服務器密鑰文件
    cp server.key server.key.bak
    5.去除文件口令
    openssl rsa -in server.key -out server.key
    6.生成證書文件server.crt
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

這個時候服務器根目錄下會生成文件server.key 和 server.crt。

1.spring boot支持https
創建WebSecurityConfig類繼承WebMvcConfigurationSupport,創建EmbeddedServletContainerFactory bean

@Configuration
public class WebSecurityConfig extends WebMvcConfigurationSupport {
@Bean
public EmbeddedServletContainerFactory servletContainer() {
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
    Connector connector = new Connector();
            connector.setPort(443);   
            connector.setSecure(true);
            connector.setScheme("https");
            connector.setProperty("SSLEnabled", "true");       
            connector.setProperty("keystoreFile", ”server.crt的絕對路徑“);
            connector.setProperty("keystorePassword", “你創建server.key時的密碼“);  
    tomcat.addAdditionalTomcatConnectors(connector );
    return tomcat;
}

}
  1. nginx支持https
    首先查看nginx是不是有ssl模塊,nginx -V,如果沒有看到ssl就重新編譯。
    重新配置
    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
    重新編譯,不需要make install安裝。否則會覆蓋
    make
    然後複製sbin目錄下的nginx文件替換原來文件,再次查看就可以看到支持了。
    然後配置config文件,
##同時支持https和http
server {
            listen 80 default backlog=2048;
            listen 443 ssl;
            server_name xuxiake.com;
            root /html/index.html;
  
            ssl_certificate server.crt絕對路徑;
            ssl_certificate_key server.Key絕對路徑;
        }
        多域名支持
        server {
            listen 443 ssl;
            server_name first.com;
            root /html/index.html;
  
            ssl_certificate server.crt絕對路徑;
            ssl_certificate_key server.Key絕對路徑;
        }
  1. iis添加https訪問
    iis需要.pfx後綴的證書文件,需要使用openssl合成,命令如下,
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

1)在服務器上,單擊開始 > 運行 > MMC打開控制檯。
2)單擊文件 > 添加/刪除管理單元打開添加/刪除管理單元對話框。
3)在可用的管理單元中單擊證書 > 添加 > 計算機賬戶 > 下一步 > 本地計算機(運行此控制檯的計算機) > 完成。
在這裏插入圖片描述4)單擊個人 > 所有任務 > 導入打開證書導入嚮導對話框。
在這裏插入圖片描述5)單擊瀏覽導入下載的PFX格式證書文件。一路下一步直到輸入密碼,輸入你創建server.key時的密碼
在這裏插入圖片描述
6)勾選根據證書類型,自動選擇證書存儲並單擊下一步完成證書的導入。
在這裏插入圖片描述7)打開IIS8.0 管理器面板,定位到待部署證書的站點,單擊綁定。
8)在網站綁定對話框中單擊添加 > 選擇https類型 > 端口選擇443 > 導入的IIS證書名稱 > 確定。

總結

寫到最後,我們這麼配置後一切是都生效了,但是還有一個問題就是用戶直接輸入域名,瀏覽器默認是http的,所以不管是iis還是nginx,我們都需要寫重定向,這個大家就百度吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章