1静袖,環(huán)境說明
服務(wù)器系統(tǒng):centos7
服務(wù)器IP地址:云服務(wù)器的公網(wǎng)IP
域名:bjubi.com
簡單步驟流程:
擁有一臺服務(wù)器(省略)> 申請注冊域名(省略)> 申請免費ssl安全證書》Centos安裝Nginx > Nginx配置ssl > 網(wǎng)站https訪問成功
2膏斤,域名解析到服務(wù)器
在阿里云控制臺-產(chǎn)品與服務(wù)-云解析DNS-找到需要解析的域名點“解析”,進入解析頁面后選擇【添加解析】按鈕會彈出如下頁面:
主機記錄這里選擇@伐割,記錄值就是服務(wù)器ip地址,確認刃唤。
3隔心,申請ca證書
在阿里云控制臺-產(chǎn)品與服務(wù)-安全(云盾)-CA證書服務(wù)(數(shù)據(jù)安全),點擊購買證書尚胞。(阿里云SSL免費證書申請地址)
點擊“補全”,輸入要解析的域名笼裳,點下一步:
說明:因為我們這里申請的是開發(fā)版免費證書唯卖,所以一個證書僅支持一個域名認證,不支持通配符躬柬。等待幾分鐘拜轨,證書狀態(tài)變?yōu)椤耙押灠l(fā)”后,證書就申請成功了允青。
4橄碾,下載證書
列表中找到已簽發(fā)的證書,下載:
下載的文件有兩個:
1琼掠,214292799730473.pem
2拒垃,214292799730473.key
5,服務(wù)器安裝瓷蛙,配置nginx
這里安裝
注意:這里安裝Nginx的過程省略了恶复,如果需要詳細的安裝Nginx教程,可以參考:NGINX入門】1.Nginx基本介紹和安裝入門
登錄到服務(wù)器:
$ apt-get update // 更新軟件
$ apt-get install nginx // 安裝nginx
6速挑,配置ca證書
1谤牡,nginx的安裝目錄為:/etc/nginx/。進入目錄姥宝,增加cert/文件夾翅萤,把剛剛下載的兩個文件上傳到cert/文件夾中。
2,在/etc/nginx/sites-enabled/下套么,增加bjubi.com文件培己。內(nèi)容如下:
說明:下面的配置是對443端口和80端口進行監(jiān)聽,443端口要啟用ssl胚泌。監(jiān)聽443端口的server配置可以仿照上面ca認證頁面的nginx配置示例進行配置省咨。
root節(jié)點筆者創(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é)議版本遏片;默認為后三個嘹害;
ssl_session_cahce off|none|[builtin[:size]][shared:name:size];指明ssl會話緩存機制撮竿;
builtin:使用openssl內(nèi)置的ssl會話緩存。各worker私有笔呀;
shared:在各worker之間使用一個共享的緩存幢踏;
name:獨有名稱;
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時報錯:缺少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ù)器的實際位置)
2.生成新的Nginx配置坠七。執(zhí)行
/usr/local/nginx/sbin/nginx -V
查看configure arguments:后邊有沒有值水醋,如果有,就復(fù)制下來灼捂。
然后執(zhí)行
./configure --原來有的模塊(如果有的話) --with-http_ssl_module
make
3.關(guān)閉現(xiàn)在運行的Nginx服務(wù)器离例。
/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
所以無法關(guān)閉悉稠。于是宫蛆,我嘗試把新的正確的nginx.conf替換出問題的nginx.conf。
再次執(zhí)行關(guān)閉的猛,成功耀盗。
4.OK,執(zhí)行最后的步驟卦尊。把編譯好的nginx覆蓋掉原有的nginx叛拷。
cp ./objs/nginx /usr/local/nginx/sbin/
系統(tǒng)會提示是否覆蓋,輸入y岂却。
我運行時忿薇,系統(tǒng)提示Text file busy,執(zhí)行失敗躏哩。
沒關(guān)系署浩!
ps -A
找到所有Nginx的進程。
Kill 1234
再次執(zhí)行
cp ./objs/nginx /usr/local/nginx/sbin/
沒有報錯扫尺。把正確的nginx.conf文件夾上傳筋栋。
啟動nginx。
./nginx -c /usr/local/nginx/conf/nginx.conf
運行成功Uぁ弊攘!
8. 參考
(1)Nginx系列教程(8) nginx配置安全證書SSL
https://blog.csdn.net/wx_15323880413/article/details/106014438