1、什麼是 SSL 證書,什麼是 HTTPS
SSL 證書是一種數字證書,它使用 Secure Socket Layer 協議在瀏覽器和 Web 服務器之間創建一條安全通道,從而實現:
一、數據信息在客戶端和服務器之間的加密傳輸,保證雙方傳遞信息的安全性,不可被第三方竊聽;
二、用戶能夠經過服務器證書驗證他所訪問的網站是否真實可靠。php
HTTPS 是以安全爲目標的 HTTP 通道,即 HTTP 下加入 SSL 加密層。HTTPS 不一樣於 HTTP 的端口,HTTP默認端口爲80,HTTPS默認端口爲443。linux
推薦閱讀:nginx
基於OpenSSL實現C/S架構中的HTTPS會話 http://www.linuxidc.com/Linux/2013-05/84477.htm瀏覽器
RHEL6.3下配置簡單Apache HTTPS http://www.linuxidc.com/Linux/2013-02/78874.htm安全
Nginx搭建HTTPS服務器 http://www.linuxidc.com/Linux/2013-01/78263.htmbash
Linux實現HTTPS方式訪問站點 http://www.linuxidc.com/Linux/2012-08/69429.htm服務器
2、什麼網站須要使用SSL證書
一、購物交易類網站
不用多說,網上銀行、支付寶、Paypal等確定會全程加密以保護你的信息安全。架構
二、註冊與登錄
一些大的網站,好比電子郵箱,註冊會員或者登錄的時候,會專門經過SSL通道,保證密碼安全不被竊取。框架
三、某些在線代理
這個。。。嗯哼,就不說了。ssh
四、裝B
好比我……
3、自行頒發不受瀏覽器信任的SSL證書
爲曬曬IQ網頒發證書。ssh登錄到服務器上,終端輸入如下命令,使用openssl生成RSA密鑰及證書。
# 生成一個RSA密鑰
$ openssl genrsa -des3 -out 33iq.key 1024 # 拷貝一個不須要輸入密碼的密鑰文件 $ openssl rsa -in 33iq.key -out 33iq_nopass.key # 生成一個證書請求 $ openssl req -new -key 33iq.key -out 33iq.csr # 本身簽發證書 $ openssl x509 -req -days 365 -in 33iq.csr -signkey 33iq.key -out 33iq.crt
第3個命令是生成證書請求,會提示輸入省份、城市、域名信息等,重要的是,email必定要是你的域名後綴的。這樣就有一個 csr 文件了,提交給 ssl 提供商的時候就是這個 csr 文件。固然我這裏並無向證書提供商申請,而是在第4步本身簽發了證書。
編輯配置文件nginx.conf,給站點加上HTTPS協議
server {
server_name YOUR_DOMAINNAME_HERE;
listen 443; ssl on; ssl_certificate /usr/local/nginx/conf/33iq.crt; ssl_certificate_key /usr/local/nginx/conf/33iq_nopass.key; # 若ssl_certificate_key使用33iq.key,則每次啓動Nginx服務器都要求輸入key的密碼。 }
重啓Nginx後便可經過https訪問網站了。
自行頒發的SSL證書可以實現加密傳輸功能,但瀏覽器並不信任,會出現如下提示:
4、受瀏覽器信任的證書
要獲取受瀏覽器信任的證書,則須要到證書提供商處申請。證書授證中心,又叫作CA機構,爲每一個使用公開密鑰的用戶發放一個數字證書。瀏覽器在默認狀況下內置了一些CA機構的證書,使得這些機構頒發的證書受到信任。VeriSign即 是一個著名的國外CA機構,工行、建行、招行、支付寶、財付通等網站均使用VeriSign的證書,而網易郵箱等非金融網站採用的是中國互聯網信息中心 CNNIC頒發的SSL證書。通常來講,一個證書的價格不菲,以VeriSign的證書爲例,價格在每一年8000元人民幣左右。
聽說也有免費的證書能夠申請。和VeriSign同樣,StartSSL也 是一家CA機構,它的根證書好久以前就被一些具備開源背景的瀏覽器支持(Firefox瀏覽器、谷歌Chrome瀏覽器、蘋果Safari瀏覽器等)。後 來StartSSL居然搞定了微軟:在升級補丁中,微軟更新了經過Windows根證書認證(Windows Root Certificate Program)的廠商清單,並首次將StartCom公司列入了該認證清單。如今,在Windows 7或安裝了升級補丁的Windows Vista或Windows XP操做系統中,系統會徹底信任由StartCom這類免費數字認證機構認證的數字證書,從而使StartSSL也獲得了IE瀏覽器的支持。(來源及申請步驟)
5、只針對註冊、登錄進行https加密處理
既然HTTPS能保證安全,爲何全世界大部分網站都仍舊 在使用HTTP呢?使用HTTPS協議,對服務器來講是很大的負載開銷。從性能上考慮,我 們沒法作到對於每一個用戶的每一個訪問請求都進行安全加密(固然,Google這種大神除外)。做爲一個普通網站,咱們所追求的只是在進行交易、密碼登錄等操 做時的安全。經過配置Nginx服務器,可使用rewrite來作到這一點。
在https server下加入以下配置:
if ($uri !~* "/logging.php$") { rewrite ^/(.*)$ http://$host/$1 redirect; }
在http server下加入以下配置:
if ($uri ~* "/logging.php$") { rewrite ^/(.*)$ https://$host/$1 redirect; }
這樣一來,用戶會且只會在訪問logging.php的狀況下,纔會經過https訪問。
更新:有一些開發框架會根據 $_SERVER['HTTPS'] 這個 PHP 變量是否爲 on 來判斷當前的訪問請求是不是使用 https。爲此咱們須要在 Nginx 配置文件中添加一句來設置這個變量。遇到 https 連接重定向後會自動跳到 http 問題的同窗能夠參考一下。
server { ... listen 443; location \.php$ { ... include fastcgi_params; fastcgi_param HTTPS on; # 多加這一句 }} server { ... listen 80; location \.php$ { ... include fastcgi_params; }}