1. 程式人生 > >各類網站部署SSL證書

各類網站部署SSL證書

要給自己的網站配置 SSL 證書,首先要申請一個 SSL 證書,有很多平臺可以免費申請(當然也有收費的),比如說騰訊雲。申請成功後,將證書下載下來,下載到的是一個壓縮包,裡面包含各種伺服器版本的證書,不同伺服器不一樣的配置。

1. Apache部署SSL證書

編輯 Apache根 目錄下 conf/httpd.conf 檔案,
找到 #LoadModule ssl_module modules/mod_ssl.so 和 #Include conf/extra/httpd-ssl.conf,去掉前面的#號註釋;
編輯 Apache 根目錄下 conf/extra/httpd-ssl.conf 檔案,修改如下內容:

<VirtualHost www.domain.com:443>
DocumentRoot “/var/www/html” #你的網站根目錄位置
ServerName www.domain.com      #你的域名
SSLEngine on                                    #啟用SSL功能
SSLCertificateFile /usr/local/apache/conf/2_www.domain.com_cert.crt    #你的CA證書檔案
SSLCertificateKeyFile /usr/local/apache/conf/3_www.domain
.com.key #你的私鑰檔案 SSLCertificateChainFile /usr/local/apache/conf/1_root_bundle.crt #你的證書鏈檔案 </VirtualHost>

2. Nginx部署SSL證書

將域名 www.domain.com 的證書檔案 1_www.domain.com_bundle.crt 、私鑰檔案 2_www.domain.com.key 儲存到同一個目錄,例如 /usr/local/nginx/conf 目錄下。
更新 Nginx 根目錄下 conf/nginx.conf 檔案如下:

server
{ listen 443; server_name www.domain.com; #填寫繫結證書的域名 ssl on; #啟用SSL功能 ssl_certificate 1_www.domain.com_bundle.crt; #證書檔案 ssl_certificate_key 2_www.domain.com.key; #私鑰檔案 ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個協議配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #按照這個套件配置 ssl_prefer_server_ciphers on; location / { root html; #站點目錄 index index.html index.htm; } }

配置完成後,先用 bin/nginx –t 來測試下配置是否有誤,正確無誤的話,重啟 nginx。就可以使 https://www.domain.com 來訪問了。

2.1 使用全站加密,http 自動跳轉 https

對於使用者不知道網站可以進行 https訪問的情況下,讓伺服器自動把 http 的請求重定向到 https。
在伺服器這邊的話配置的話,可以在頁面里加js指令碼,也可以在後端程式裡寫重定向,當然也可以在 web 伺服器來實現跳轉。Nginx 是支援 rewrite 的(只要在編譯的時候沒有去掉 pcre)
在 http 的 server 裡增加 rewrite ^(.*) https://host1 permanent;
這樣就可以實現 80 進來的請求,重定向為 https 了。

3. Tomcat 證書部署

3.1 獲取證書
如果申請證書時有填寫私鑰密碼,下載可獲得 Tomcat 資料夾,其中有金鑰庫 www.domain.com.jks;
如果沒有填寫私鑰密碼,不提供 Tomcat 證書檔案的下載,需要使用者手動轉換格式生成。
可以通過 Nginx 資料夾內證書檔案和私鑰檔案生成jks格式證書
轉換工具:https://www.trustasia.com/tools/cert-converter.htm
使用工具時注意填寫 金鑰庫密碼 ,安裝證書時配置檔案中需要填寫。

3.2 證書安裝

配置 SSL 聯結器,將 www.domain.com.jks 檔案存放到 conf 目錄下,然後配置同目錄下的 server.xml 檔案:

<Connector port=”443″
protocol=”HTTP/1.1SSLEnabled=”true”
maxThreads=”150″
scheme=”https”
secure=”true”
keystoreFile=”conf\www.domain.com.jks”
keystorePass=”changeit”
clientAuth=”false”
sslProtocol=”TLS” />

注:
這裡寫圖片描述

3.3 http 自動跳轉 https 的安全配置
到conf目錄下的 web.xml。在 後面,,也就是倒數第二段裡,加上這樣一段

<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>

這步目的是讓非 ssl 的 connector 跳轉到 ssl 的 connector 去。所以還需要前往 server.xml 進行配置:

<Connector
port=”80″
protocol=”HTTP/1.1″
connectionTimeout=”20000″
redirectPort=”443″
/>

redirectPort 改成 ssl 的 connector 的埠 443,重啟後便會生效。