天天看點

nginx配置安全證書SSL(八)一,環境說明

一,環境說明

伺服器系統:centos7 伺服器IP位址:雲伺服器的公網IP

域名:

bjubi.com

簡單步驟流程: 擁有一台

伺服器

(省略)》

申請注冊域名 申請免費ssl安全證書

》Centos安裝Nginx》Nginx配置ssl》網站https通路成功

二,域名解析到伺服器

在阿裡雲控制台-産品與服務-雲解析DNS-找到需要解析的域名點“解析”,進入解析頁面後選擇【添加解析】按鈕會彈出如下頁面:

主機記錄這裡選擇@,記錄值就是伺服器ip位址,确認。

三,申請ca證書

在阿裡雲控制台-産品與服務-安全(雲盾)-CA憑證服務(資料安全),點選購買證書。(

阿裡雲SSL免費證書申請位址

選擇“免費版DV SSL”,點選立即購買:

然後點去支付:

最後确認支付:

就會回到管理界面:

點選“補全”,輸入要解析的域名,點下一步:

說明:因為我們這裡申請的是開發版免費證書,是以一個證書僅支援一個域名認證,不支援通配符。

等待幾分鐘,證書狀态變為“已簽發”後,證書就申請成功了。

四,下載下傳證書

清單中找到已簽發的證書,下載下傳:

進入下載下傳頁面,找到ngin頁簽中nginx配置資訊,并“下載下傳證書 for Nginx”:

記錄以下内容,為了一會兒配置nginx用:

下載下傳的檔案有兩個:

1,214292799730473.pem

2,214292799730473.key

五,伺服器安裝,配置nginx

這裡安裝

注意:這裡安裝Nginx的過程省略了,如果需要詳細的安裝Nginx教程,可以參考:

Nginx基本介紹和安裝入門(一)

登入到伺服器:

$ apt-get update // 更新軟體
$ apt-get install nginx // 安裝nginx           

六,配置ca證書

1,nginx的安裝目錄為:/etc/nginx/。進入目錄,增加cert/檔案夾,把剛剛下載下傳的兩個檔案上傳到cert/檔案夾中。 2,在/etc/nginx/sites-enabled/下,增加bjubi.com檔案。内容如下:

說明:下面的配置是對443端口和80端口進行監聽,443端口要啟用ssl。監聽443端口的server配置可以仿照上面ca認證頁面的nginx配置示例進行配置。

root節點筆者建立了一個bjubi.com/的檔案夾,專門存放來自這個域名的請求以示區分。

bjubi.com/檔案夾下增加一個index.html檔案,裡面僅僅寫了一行 welcome。

server {           
listen 443;
server_name bjubi.com; // 你的域名
ssl on;
root /var/www/bjubi.com; // 前台檔案存放檔案夾,可改成别的
index index.html index.htm;// 上面配置的檔案夾裡面的index.html
ssl_certificate  cert/214292799730473.pem;// 改成你的證書的名字
ssl_certificate_key cert/214292799730473.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;
ssl_prefer_server_ciphers on;
location / {
    index index.html index.htm;
}                

} server {

listen 80;
server_name bjubi.com;// 你的域名
rewrite ^(.*)$ https://bjubi.com:443/$1 permanent;// 把http的域名請求轉成https                

}

配置完成後,檢查一下nginx配置檔案是否可用,有successful表示可用。
$ nginx -t // 檢查nginx配置檔案           
配置正确後,重新加載配置檔案使配置生效:
nginx -s reload // 使配置生效           

至此,nginx的https通路就完成了,并且通過rewrite方式把所有http請求也轉成了https請求,更加安全。

如需重新開機nginx,用以下指令:
$ service nginx stop // 停止
$ service nginx start // 啟動
$ service nginx restart // 重新開機           

七,通路效果

輸入

https://yq.aliyun.com/go/articleRenderRedirect?url=bjubi.com http:bjubi.com

也會自動跳轉至https頁面。

說明:如果是雲伺服器比如阿裡雲ECS,需要到阿裡雲ECS的管理背景的安全組,修改端口過濾規則把80端口和443端口開放才能通路到。

缺少ssl_module子產品

CentOS下配置Nginx的https時報錯:缺少ngx_http_ssl_module 1.首先,找到Nginx安裝包的位置。比如,我的是:/usr/local/sr
c/nginx-1.15.1
cd /usr/local/src/nginx-1.15.1           

如果忘記安裝包放哪裡了,可以find指令找一下。

如果還是找不到(比如删除了)。可以檢視目前Nginx的版本号,重新下載下傳一個。

【檢視Nginx版本指令】

/usr/local/nginx/sbin/nginx -V  (/usr/local/nginx/是你Nginx伺服器的實際位置)           
2.生成新的Nginx配置。執行
/usr/local/nginx/sbin/nginx -V            

檢視configure arguments:後邊有沒有值,如果有,就複制下來。

然後執行

./configure --原來有的子產品(如果有的話) --with-http_ssl_module           
make           
3.關閉現在運作的Nginx伺服器。
/usr/local/nginx/sbin/nginx -s stop           

由于我的配置檔案報錯,缺少

nginx: emerg the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:121           

是以無法關閉。于是,我嘗試把新的正确的nginx.conf替換出問題的nginx.conf。

再次執行關閉,成功。

4.OK,執行最後的步驟。把編譯好的nginx覆寫掉原有的nginx。
cp ./objs/nginx /usr/local/nginx/sbin/           

系統會提示是否覆寫,輸入y。

我運作時,系統提示Text file busy,執行失敗。

沒關系!

ps -A           

找到所有Nginx的程序。

Kill 1234           

再次執行

cp ./objs/nginx /usr/local/nginx/sbin/           

沒有報錯。把正确的nginx.conf檔案夾上傳。

啟動nginx。

./nginx -c /usr/local/nginx/conf/nginx.conf           

運作成功!!

雲伺服器ECS位址:阿裡雲·雲小站

繼續閱讀