nginx+php 環境下的https環境搭建

1,建一個目錄

# 生成一個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

編輯配置文件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證書能夠實現加密傳輸功能,但瀏覽器並不信任,會出現以下提示:

四、受瀏覽器信任的證書
要獲取受瀏覽器信任的證書,則需要到證書提供商處申請。證書授證中心,又叫做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瀏覽器的支持。(來源及申請步驟

五、只針對註冊、登陸進行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;
    }
}

注:提供一個免費的openssl證書網站:去上面下載證書,替換自己生成的證書https://buy.wosign.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章