【NGINX入門】7.Nginx配置安全證書SSL實(shí)例

1,環(huán)境說明

服務(wù)器系統(tǒng):centos7
服務(wù)器IP地址:云服務(wù)器的公網(wǎng)IP
域名:bjubi.com

簡單步驟流程:
擁有一臺服務(wù)器(省略)> 申請注冊域名(省略)> 申請免費(fèi)ssl安全證書》Centos安裝Nginx > Nginx配置ssl > 網(wǎng)站https訪問成功

2,域名解析到服務(wù)器

在阿里云控制臺-產(chǎn)品與服務(wù)-云解析DNS-找到需要解析的域名點(diǎn)“解析”,進(jìn)入解析頁面后選擇【添加解析】按鈕會彈出如下頁面:
主機(jī)記錄這里選擇@,記錄值就是服務(wù)器ip地址,確認(rèn)。

3,申請ca證書

在阿里云控制臺-產(chǎn)品與服務(wù)-安全(云盾)-CA證書服務(wù)(數(shù)據(jù)安全),點(diǎn)擊購買證書。(阿里云SSL免費(fèi)證書申請地址

選擇“免費(fèi)版DV SSL”,點(diǎn)擊立即購買:

然后點(diǎn)去支付:

最后確認(rèn)支付:

就會回到管理界面:

點(diǎn)擊“補(bǔ)全”,輸入要解析的域名,點(diǎn)下一步:

說明:因?yàn)槲覀冞@里申請的是開發(fā)版免費(fèi)證書,所以一個證書僅支持一個域名認(rèn)證,不支持通配符。

等待幾分鐘,證書狀態(tài)變?yōu)椤耙押灠l(fā)”后,證書就申請成功了。

4,下載證書

列表中找到已簽發(fā)的證書,下載:


進(jìn)入下載頁面,找到ngin頁簽中nginx配置信息,并“下載證書 for Nginx”:

記錄以下內(nèi)容,為了一會兒配置nginx用:

下載的文件有兩個:
1,214292799730473.pem
2,214292799730473.key

5,服務(wù)器安裝,配置nginx

這里安裝
注意:這里安裝Nginx的過程省略了,如果需要詳細(xì)的安裝Nginx教程,可以參考:NGINX入門】1.Nginx基本介紹和安裝入門

登錄到服務(wù)器:

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

6,配置ca證書

1,nginx的安裝目錄為:/etc/nginx/。進(jìn)入目錄,增加cert/文件夾,把剛剛下載的兩個文件上傳到cert/文件夾中。

2,在/etc/nginx/sites-enabled/下,增加bjubi.com文件。內(nèi)容如下:

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

root節(jié)點(diǎn)筆者創(chuàng)建了一個bjubi.com/的文件夾,專門存放來自這個域名的請求以示區(qū)分。

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的域名請求轉(zhuǎn)成https
}

配置完成后,檢查一下nginx配置文件是否可用,有successful表示可用。

$ nginx -t // 檢查nginx配置文件

配置正確后,重新加載配置文件使配置生效:

nginx -s reload // 使配置生效

至此,nginx的https訪問就完成了,并且通過rewrite方式把所有http請求也轉(zhuǎn)成了https請求,更加安全。

如需重啟nginx,用以下命令:

$ service nginx stop // 停止$ service nginx start // 啟動$ service nginx restart // 重啟

ngx_http_ssl_module模塊相關(guān)的配置說明:

ssl_certificate file;指明證書路徑
ssl_certificate_key file;證書對應(yīng)的私鑰文件;
ssl_ciphers ciphers;指明由nginx使用的加密算法,可以是OpenSSL庫中所支持的各種加密套件;
ssl_protocols [SSLv2][SSLv3][TLSv1.1][TLSv1.2];指明使用的SSL協(xié)議版本;默認(rèn)為后三個;
ssl_session_cahce off|none|[builtin[:size]][shared:name:size];指明ssl會話緩存機(jī)制;
builtin:使用openssl內(nèi)置的ssl會話緩存。各worker私有;
shared:在各worker之間使用一個共享的緩存;
name:獨(dú)有名稱;
size:緩存空間大小
ssl_session_timeout time;ssl會話超時時長;即ssl session cache中的緩存有效時長;

7,訪問效果

輸入http:bjubi.com也會自動跳轉(zhuǎn)至https頁面。

說明:如果是云服務(wù)器比如阿里云ECS,需要到阿里云ECS的管理后臺的安全組,修改端口過濾規(guī)則把80端口和443端口開放才能訪問到。

問題:缺少ssl_module模塊

CentOS下配置Nginx的https時報(bào)錯:缺少ngx_http_ssl_module

1.首先,找到Nginx安裝包的位置。比如,我的是:/usr/local/sr

c/nginx-1.15.1cd /usr/local/src/nginx-1.15.1

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

如果還是找不到(比如刪除了)??梢圆榭串?dāng)前Nginx的版本號,重新下載一個。

【查看Nginx版本命令】

/usr/local/nginx/sbin/nginx -V  (/usr/local/nginx/是你Nginx服務(wù)器的實(shí)際位置)

2.生成新的Nginx配置。執(zhí)行

/usr/local/nginx/sbin/nginx -V 

查看configure arguments:后邊有沒有值,如果有,就復(fù)制下來。

然后執(zhí)行

./configure --原來有的模塊(如果有的話) --with-http_ssl_module
make

3.關(guān)閉現(xiàn)在運(yùn)行的Nginx服務(wù)器。

/usr/local/nginx/sbin/nginx -s stop

由于我的配置文件報(bào)錯,缺少

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

所以無法關(guān)閉。于是,我嘗試把新的正確的nginx.conf替換出問題的nginx.conf。

再次執(zhí)行關(guān)閉,成功。

4.OK,執(zhí)行最后的步驟。把編譯好的nginx覆蓋掉原有的nginx。

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

系統(tǒng)會提示是否覆蓋,輸入y。

我運(yùn)行時,系統(tǒng)提示Text file busy,執(zhí)行失敗。

沒關(guān)系!

ps -A

找到所有Nginx的進(jìn)程。

Kill 1234

再次執(zhí)行

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

沒有報(bào)錯。把正確的nginx.conf文件夾上傳。

啟動nginx。

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

運(yùn)行成功??!

8. 參考

(1)Nginx系列教程(8) nginx配置安全證書SSL
https://blog.csdn.net/wx_15323880413/article/details/106014438

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容