一、引言
為什么我們要配置這個SSL證書呀?
SSL證書,就是遵守SSL安全套接層協議的服務器數字證書,由瀏覽器受信任的根證書頒發機構在驗證服務器身份后頒發,具有網站身份驗證和加密傳輸等功能。SSL證書並不是什么高深的技術產品,只需要成功申請下發后,安裝到網站服務器即可。當你訪問一個網站時,如果發現瀏覽器的地址欄中顯示的是“https://”,就說明這個網站已經安裝部署了SSL證書。
網站安裝SSL證書到底有哪些好處呢?簡單整理幾條給大家:
好處一:隱私信息加密。對網站傳輸的數據進行SSL加密,防止被黑客監聽、竊取和篡改,有效保證用戶的隱私信息。
好處二:提高網站排名。谷歌、百度等主流搜索引擎表示優先收錄以HTTPS開頭的網站,並賦予網站高權重,有效提高網站關鍵詞在搜索引擎中的排名。
好處三:受瀏覽器信任。安裝由權威證書頒發機構簽發的證書,會成為谷歌、火狐等主流瀏覽器受信任的站點。
好處四:提升企業形象。安裝高級SSL證書可以顯示單位名稱,大大提升企業的形象和可信度。
好處五:防止流量劫持。網站流量劫持現象頻繁發生,安裝SSL證書,能有效避免流量劫持。
二、准備工作
1、首先得有自己的一台雲服務器,需要在后台把443端口開放。
2、購買一個域名(騰訊雲、阿里雲都行),.com的域名需要備案,其他的不需要備案但是也能訪問,可能不穩定。
3、在騰訊雲、阿里雲申請一個SSL證書,有免費版的,然后下載下來如圖。
配置SSL關聯到對應域名
一般申請注冊階段就配置好了
下載證書
下載證書.png
三、Nginx配置SSL
3.1將下載的ssl nginx證書上傳至雲服務器
阿里雲申請的ssl:nginx文件如下所示:
1,214292799730473.pem
2,214292799730473.key
騰訊雲申請的ssl, nginx文件如下所示:
3.2開始安裝配置nginx
一、安裝編譯工具及庫文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
二、安裝 PCRE(讓 Nginx 支持 Rewrite 功能)
二、安裝 PCRE(讓 Nginx 支持 Rewrite 功能)
#下載最新版本的,注意不要用pcre2 wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz tar -xvf pcre-8.42.tar.gz cd pcre-8.42 #安裝編譯 ./configure make && make install #查看pcre版本 pcre-config --version
三、安裝nginx(源碼安裝)
#下載 wget https://nginx.org/download/nginx-1.15.9.tar.gz tar -xvf nginx-1.15.9.tar.gz cd nginx-1.15.9 #編譯安裝 ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.42 make && make install #查看版本 /usr/local/webserver/nginx/sbin/nginx -v
四、nginx配置

#啟動 /usr/local/webserver/nginx/sbin/nginx /usr/local/webserver/nginx/sbin/nginx -s reload # 重新載入配置文件 /usr/local/webserver/nginx/sbin/nginx -s reopen # 重啟 Nginx /usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx
配置nginx配置文件(/usr/local/webserver/nginx/conf/nginx.conf)
user root; #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 443 ssl; server_name www.relishfruit.com; ssl_certificate /usr/local/nginx/conf/Nginx/1_www.relishfruit.com_bundle.crt; ssl_certificate_key /usr/local/nginx/conf/Nginx/2_www.relishfruit.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; } server { listen 80; server_name www.relishfruit.com; rewrite ^ https://$server_name$request_uri? permanent; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } } }
修改項為:
- server_name 設置綁定的域名
- ssl_certificate 證書
- ssl_certificate_key 證書的私鑰
- ssl_protocols 使用的協議
- ssl_ciphers 配置加密套件,寫法遵循 openssl 標准

http 自動跳轉 https (可選)
這時候的網站既可以使用http://
請求,也可以使用https://
請求。
如果想將所有的http請求自動跳轉為https請求,在/usr/local/nginx/conf/nginx.conf
添加
rewrite ^(.*) https://$host$1 permanent;
現在重啟Nginx,Chrome應該能正常顯示Https.如果只想使用Https連接,可以再添加一個server,然后跳轉到https
server {
listen 80; server_name liuzhichao.com www.liuzhichao.com ; rewrite ^ https://$server_name$request_uri? permanent; }
重啟nginx,測試如下:
注意事項:
1、nginx:[emerg]unknown directive ssl,就是這個錯誤提示
因為我們配置這個SSL證書需要引用到nginx的中SSL這模塊,然而我們一開始編譯的Nginx的時候並沒有把SSL模塊一起編譯進去,所以導致這個錯誤的出現。
步驟一:我們先來到當初下載nginx的包壓縮的解壓目錄,如果你是看小編寫的教程安裝的,解壓目錄應該在“/usr/loacl/src/”,絕大多數應該都是在這個目錄下的,已經是一種規范了。
重啟報錯:缺少http_ssl_module模塊
這是由於在最開始編譯nginx時,沒有加入http_ssl_module模塊的原因導致的。
解決方案:重新編譯一次nginx,並把http_ssl_module模塊加上去。
- 如果出現這個問題,一般情況下也可能沒有安裝openssl和openssl-devel模塊。請安裝這兩個模塊:
yum install openssl
yum install openssl-devel
步驟二:來到解壓目錄下后,按順序執行一下命令: 命令1、./configure --with-http_ssl_module //重新添加這個ssl模塊 注意如果沒有出現錯誤,則直接看命令2即可 執行以上一條命令出現這個錯誤(./configure:錯誤:SSL模塊需要OpenSSL庫。),原因是因為缺少了OpenSSL,那我們再來安裝一個即可執行:yum -y install openssl openssl-devel 等待OpenSSL的安裝完成后,再執行./configure ,最后在執行” 命令1" 即可。 命令2、執行make命令,但是不要執行make install,因為make是用來編譯的,而make install是安裝,不然你整個nginx會重新覆蓋的。 命令3、在我們執行完做命令后,我們可以查看到在nginx解壓目錄下,objs文件夾中多了一個nginx的文件,這個就是新版本的程序了。首先我們把之前的nginx先備份一下,
然后把新的程序復制過去覆蓋之前的即可。 cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak cp objs/nginx /usr/local/nginx/sbin/nginx 命令4,最后我們來到Nginx安裝目錄下,來查看是否有安裝ssl模塊成功。執行./sbin/nginx -V即可看
重新啟動nginx則OK了。