1、什麼是 SSL 證書,什麼是 HTTPS
SSL 證書是一種數字證書,它使用 Secure Socket Layer 協議在瀏覽器和 Web 服務器之間創建一條安全通道,從而實現:
一、數據信息在客戶端和服務器之間的加密傳輸,保證雙方傳遞信息的安全性,不可被第三方竊聽;
二、用戶能夠經過服務器證書驗證他所訪問的網站是否真實可靠。html
HTTPS 是以安全爲目標的 HTTP 通道,即 HTTP 下加入 SSL 加密層。HTTPS 不一樣於 HTTP 的端口,HTTP默認端口爲80,HTTPS默認端口爲443。nginx
2、自行頒發不受瀏覽器信任的SSL證書瀏覽器
生成一個RSA密鑰 安全
$ openssl genrsa -des3 -out yt.key 1024bash
拷貝一個不須要輸入密碼的密鑰文件服務器
$ openssl rsa -in 33iq.key -out yt_nopass.keysession
生成一個證書請求ide
$ openssl req -new -key yt.key -out yt.csr測試
注:該命令是生成證書請求,會提示輸入省份、城市、域名信息等,重要的是,email必定要是你的域名後綴的。這樣就有一個 csr 文件了,提交給 ssl 提供商的時候就是這個 csr 文件。固然我這裏並無向證書提供商申請,而是在後面本身簽發了證書。網站
本身簽發證書
$ openssl x509 -req -days 365 -in yt.csr -signkey yt.key -out yt.crt
注:把生成的證書放到nginx配置文件統計目錄下。個人在/usr/local/nginx/conf/
3、修改nginx主配文件nginx.conf
server {
server_name yt.com;
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/conf/yt.crt;
ssl_certificate_key /usr/local/nginx/conf/yt_nopass.key;
注:若ssl_certificate_key使用tfjybj.key,則每次啓動Nginx服務器都要求輸
入key的密碼。
重啓nginx服務
nginx –s reload
本身頒發的SSL證書可以實現加密傳輸功能,但瀏覽器並不信任,會給出提示:
或
經過第三方頒發證書(阿里雲)
頒發證書
登陸阿里雲管理控制檯,【雲盾】菜單選擇【證書服務】,選擇購買證書;
我弄得免費版的作的測試,申請以後,通過一兩天的審覈,而後就能夠下載證書了。下載解壓後是兩個文件,一個key結尾,私鑰,一個是pem結尾,是公鑰。
配置nginx
文件說明:
證書文件」申請的證書名字.pem」,包含兩段內容,請不要刪除任何一段內容。
若是是證書系統建立的CSR,還包含:證書私鑰文件」申請的證書名字.key」。
( 1 ) 在Nginx的安裝目錄下建立cert目錄,而且將下載的所有文件拷貝到cert目錄中。若是申請證書時是本身建立的CSR文件,請將對應的私鑰文件放到cert目錄下而且命名爲」申請的證書名字.key」;
( 2 ) 打開 Nginx 安裝目錄下 conf 目錄中的 nginx.conf 文件,找到:
# HTTPS server # #server { # listen 443; # server_name localhost; # ssl on; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_timeout 5m; # ssl_protocols SSLv2 SSLv3 TLSv1; # ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; # ssl_prefer_server_ciphers on; # location / { # # #} #}
( 3 ) 將其修改成 (如下屬性中ssl開頭的屬性與證書配置有直接關係,其它屬性請結合本身的實際狀況複製或調整) :
server {
listen 443;
server_name localhost;
ssl on;
root html;
index index.html index.htm;
ssl_certificate cert/申請的證書名字.pem;
ssl_certificate_key cert/申請的證書名字.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 / {
root html;
index index.html index.htm;
}
}
保存退出。
( 4 )重啓 Nginx。
( 5 ) 經過 https 方式訪問您的站點