前言
前段時間買了一臺服務(wù)器,搞了一個博客系統(tǒng),但是苦于沒有SSL證書,導(dǎo)致訪問的過程一直是沒有安全證書的情況下,對于一些不搞程序的童鞋一看到訪問不安全鏈接,立馬就是提示勸退(PS:流下菜雞的眼淚). 所以就去網(wǎng)上瞅了瞅,發(fā)現(xiàn)SSL證書賊幾兒貴,對于我服務(wù)器小白來說,SSL證書的需求比重不算太高,只是想把 HTTP → HTTPS, 找來找去,發(fā)現(xiàn)阿里云有免費(fèi)證書可以白嫖,正所謂不(qiong)嫖(de)白(dou)不(diao)嫖(zha).所以這是就使用免費(fèi)的阿里云SSL證書.
具體的環(huán)境如下所示.
· 阿里云ECS
· centos 8.0
· nginx 1.14.0
申請證書
- 我們先來說一下如何免費(fèi)申請證書.只要你是阿里云實名主體個人/企業(yè)聂儒,一個自然年內(nèi)可以領(lǐng)取一次數(shù)量為20的免費(fèi)證書資源包.具體的領(lǐng)取傳送門如下所示.
- 領(lǐng)取形式如下圖所示.
- 然后我們進(jìn)入阿里云控制臺的SSL證書模塊.然后選擇云盾SSL證書,如下圖所示.
- 然后選擇證書申請,這里我已經(jīng)申請了兩個了,所以就只剩下18次了.如下圖所示.
- 如下圖,點(diǎn)擊單域名模式,然后點(diǎn)擊確定即可.
- 然后下面列表就會出現(xiàn)一條你申請的證書記錄,點(diǎn)擊證書記錄后面的"證書申請"即可.
- 接下來就是配置一些基本信息,如下圖所示.這里證書綁定域名就選擇你需要綁定的域名即可. 例如我想讓 www.coder-dong.com 生成證書,填寫 www.coder-dong.com 即可. CSR生成方法關(guān)閉手動填寫即可,讓阿里云直接自動生成即可,最后點(diǎn)擊下一步.
- 然后需要去你的域名那添加一條解析記錄,并且進(jìn)行驗證.解析信息都在這個頁面上了,如果你的域名在當(dāng)前阿里云賬號上,那么它會幫你自動添加解析記錄,然后點(diǎn)擊驗證即可.
image
- 對于阿里云當(dāng)前賬號則不需要手動添加,如果是其他賬號或者是別的運(yùn)營方申請的域名則需要手動自己添加.假設(shè)記錄值數(shù)據(jù)如下所示.那么添加解析記錄的時候就如圖所示即可.
記錄值 : TXT
主機(jī)記錄 : XXXXXX
記錄值 : YYYYYY
- 添加完成之后,驗證成功狀態(tài)如下圖所示.
- 簽發(fā)完成之后我們點(diǎn)擊SSL證書列表當(dāng)前證書記錄后面的 "下載" 按鈕來下載證書和秘鑰. 如下圖所示.
- 然后選擇Nginx下載即可,具體如下圖所示.
- 下載好了,解壓文件就得到一個.pem證書文件,一個.key秘鑰文件,具體如下所示.這兩個文件我們都需要上傳到我們的服務(wù)器中,上傳過程就不過多敘述了,我使用的是rz命令進(jìn)行文件的上傳.
- ??????證書正好了之后,我們需要開啟服務(wù)器的 443 端口.這一步非常重要,這里我們需要去安全組中進(jìn)行配置.
image
Nginx配置
首先我們先把.pem證書文件和.key秘鑰文件上傳到服務(wù)器上去.由于網(wǎng)上教程的原因,我也在配置文件目錄下創(chuàng)建的了 cert 的文件夾,并且把證書我恩建和秘鑰文件上傳到該文件夾下了.
然后我們需要在Nginx的配置文件nginx.conf配置證書信息.假設(shè)我們申請的證書單域名為 www.coder-dong.com, 那么需要在http這個下添加一個443端口的serve模塊.配置如下所示.
server {
listen 443;
server_name www.coder-dong.com;
ssl on;# 打開SSL
ssl_certificate cert/www.coder-dong.com.pem; # 證書路徑
ssl_certificate_key cert/www.coder-dong.com.key; # 秘鑰路徑
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#表示使用的加密套件的類型巨税。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS協(xié)議的類型。
ssl_prefer_server_ciphers on;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:8000; # 443端口指向本地的8000端口
}
}
- 如上配置完成之后我們就重啟Nginx就可以使用 https://www.coder-dong.com 來訪問我們的本地8000端口了,但是我們平常訪問哪里會加 https 的前綴,都是直接訪問域名,所以這里我們還需要把常用的 80 端口的訪問重定向到 443 端口,假設(shè)我們想只輸入 www.coder-dong.com 就能訪問 443端口,那么我們還需要在Nginx中http模塊添加 server 模塊,具體配置如下所示.
# 關(guān)于模塊中 rewrite 的具體使用,請自行百度.或者直接照葫蘆畫瓢抄襲即可.
server {
listen 80;
server_name www.coder-dong.com; #需要將yourdomain.com替換成證書綁定的域名。
rewrite ^/(.*) https://www.coder-dong.com/$1 permanent; #將所有HTTP請求通過rewrite指令重定向到HTTPS。
}
- 再例如,我想把 coder-dong.com 也映射到 443 端口,配置和上面類似.
server {
listen 80;
server_name coder-dong.com; #需要將yourdomain.com替換成證書綁定的域名放典。
rewrite ^/(.*) https://www.coder-dong.com/$1 permanent; #將所有HTTP請求通過rewrite指令重定向到HTTPS晒衩。
}
OK,這樣就算完成了,最后保存退出,然后重啟Nginx即可.我們就配置完成了.
當(dāng)然了,這里我們上面所有的配置羅列出來,供大家參考.
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.coder-dong.com; #需要將yourdomain.com替換成證書綁定的域名涌攻。
rewrite ^/(.*) https://www.coder-dong.com/$1 permanent; #將所有HTTP請求通過rewrite指令重定向到HTTPS逛绵。
}
server {
listen 80;
server_name coder-dong.com; #需要將yourdomain.com替換成證書綁定的域名诀蓉。
rewrite ^/(.*) https://www.coder-dong.com/$1 permanent; #將所有HTTP請求通過rewrite指令重定向到HTTPS栗竖。
}
server {
listen 443;
server_name www.coder-dong.com;
ssl on;
ssl_certificate cert/coderdong.pem;
ssl_certificate_key cert/coderdong.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#表示使用的加密套件的類型。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS協(xié)議的類型渠啤。
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:8000;
}
}
}
結(jié)語
SSL證書的配置整體來說還是比較簡單的,如果喜歡騷棟,歡迎點(diǎn)贊關(guān)注,如果有任何問題,可以評論留言.感謝各位大佬的閱讀了.
image