nginx配置ssl證書實現https

一,環境說明

服務器系統:centos6html

服務器IP地址:0.0.0.0nginx

域名:bjubi.comcentos

二,域名解析到服務器

在阿里雲控制檯-產品與服務-雲解析DNS-找到須要解析的域名點「解析」,進入解析頁面後選擇【添加解析】按鈕會彈出以下頁面:安全

主機記錄這裏選擇@,記錄值就是服務器ip地址,確認。服務器

三,申請ca證書

在阿里雲控制檯-產品與服務-安全(雲盾)-CA證書服務(數據安全),點擊購買證書,session

選擇「免費版DV SSL」,點擊當即購買:post

而後點去支付:ui

最後確認支付:阿里雲

就會回到管理界面:spa

點擊「補全」,輸入要解析的域名,點下一步:

說明:由於咱們這裏申請的是開發版免費證書,因此一個證書僅支持一個域名認證,不支持通配符。

等待幾分鐘,證書狀態變爲「已簽發」後,證書就申請成功了。

四,下載證書

列表中找到已簽發的證書,下載:

進入下載頁面,找到ngin頁籤中nginx配置信息,並「下載證書 for Nginx」:

記錄如下內容,爲了一下子配置nginx用:

下載的文件有兩個:

1,214292799730473.pem

2,214292799730473.key

五,服務器安裝,配置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文件,裏面僅僅寫了一行<h1>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 // 重啓

七,訪問效果

輸入http:bjubi.com也會自動跳轉至https頁面。

說明:若是是雲服務器好比阿里雲ECS,須要到阿里雲ECS的管理後臺的安全組,修改端口過濾規則把80端口和443端口開放才能訪問到。

 

CentOS下配置Nginx的https時報錯:缺乏ngx_http_ssl_module

1.首先,找到Nginx安裝包的位置。好比,個人是:/usr/local/src/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運行成功!!

相關文章
相關標籤/搜索