一、證書購買
一般情況,申請證書時需要添加DNS解析,具體的步驟一般運營商都會給予詳細說明。當然,也需要填寫證書保護的處理的域名,
一般非免費的證書可以支持多個域名處理,免費的一般只能支持一個域名的設置。
如果要使自己的網站支持https通信,並能被所有瀏覽器識別支持,那么就需要自己申購證書,
可以到阿里、萬維網及其它證書運營商處申請購買,當然自己也可以制作CA證書,只不過不被瀏覽器識別,
一般提示該證書未被認證。購買之后,一般不需要額外的證書再配置,比如:在阿里購買的證書一般包含三個文件:
214087265700561.key、
214087265700561.pem、
214087265700561.pfx、
pfx-password.txt,
並且前三者文件名稱相同,密碼文件默認一串pfx數字密碼。
二、證書配置
在Nginx中,如果要添加CA證書支持,就需要開啟對http的ssl安全加密處理模塊,
也就是with-http_ssl_module的支持。另外,需要重新編譯Nginx源碼,將前面的模塊引入進來,
最后,在替換Nginx的二進制啟動文件,重新加載啟動Nginx即可生效。
1、建立cert目錄
cd /usr/local/nginx/conf
mkdir cert
進入nginx配置根目錄,並建立cert目錄,將所有CA證書文件放入其中即可。
2、添加SSL支持
cd /home/nginx-1.8.1
首先,查看下Nginx當前參數:
nginx -V
其次,復制這些參數添加對with-http_ssl_module支持,並執行:
./configure --prefix=/usr/local/nginx--with-http_stub_status_module --add-module=./src/nginx-http-concat-master--with-http_ssl_module
然后,make編譯Nginx源碼(不要makeinstall,否則覆蓋了),並替換二進制nginx文件
make
在替換二進制nginx文件前,需要停掉正在運行的nginx服務,后再替換:
nginx -s stop
cp objs/nginx /usr/local/nginx/sbin/
重新啟動即可:nginx
3、nginx.conf配置
完成了對ssl的支持后,就是對nginx.conf核心配置文件進行配置了,主要是開啟443 ssl端口及服務的監聽,
以及開啟ssl和證書相關的配置,具體如下:
cd /usr/local/nginx/conf/nginx.conf
vim nginx.conf
添加如下內容:
ssl on;
ssl_certificate cert/214087265700561.pem;
ssl_certificate_key cert/214087265700561.key;
ssl_session_timeout 5m;
第一行,開啟對http協議的ssl處理;
第二行,指定pem密鑰文件位置;
第三行,指定證書的key文件位置;
第四行,設置ssl的session超時時間為5分鍾;
4、http到https轉發
cd /usr/local/nginx/conf/nginx.conf
vim nginx.conf
添加如下內容,使http默認訪問方式自動跳轉到https協議方式:
if ($scheme = http) {
return 301https://$server_name$request_uri;
}
三、驗證測試
如何驗證是否支持https加密通信協議?我們只需要打開任何瀏覽器,並在地址欄中輸入我們證書所關聯的域名即可。
此時,如果添加成功,那么會在瀏覽器域名左邊或其它位置出現一個鎖的圖標或安全的字樣(不同瀏覽器略有不同)
四、特殊說明
1、同時支持http和https
如何同時支持http和https?其實很簡單,我們只需要將ssl on;注釋掉。
2、多個域名的SSL處理
多個域名的SSL配置與上面的配置相同,比如:一個主機和多個虛擬主機的域名處理,上面演示的是主機的配置,
而虛擬機中的配置也是相同的。如果所購買的證書為非免費型的證書,那么一個證書可以同時支持多個域名,
比如:一級域名已經配置了,那么二級域名就可以不用再配置了。