要保證web瀏覽器到伺服器的安全連線,https幾乎是唯一選擇。https其實就是http over ssl,也就是讓http連線建立在ssl安全連線之上。
ssl使用證書來建立安全連線。有兩種驗證模式:
僅客戶端驗證伺服器的證書,客戶端自己不提供證書;
客戶端和伺服器都互相驗證對方的證書。
顯然第二種方式安全性更高,一般用網上銀行會這麼搞,但是,普通的web**只能採用第一種方式。
客戶端如何驗證伺服器的證書呢?伺服器自己的證書必須經過某「權威」證書的簽名,而這個「權威」證書又可能經過更權威的證書簽名,這麼一級一級追溯上去,最頂層那個最權威的證書就稱為根證書。根證書直接內建在瀏覽器中,這樣,瀏覽器就可以利用自己自帶的根證書去驗證某個伺服器的證書是否有效。
如果要提供乙個有效的證書,伺服器的證書必須從verisign這樣的證書頒發機構簽名,這樣,瀏覽器就可以驗證通過,否則,瀏覽器給出乙個證書無效的警告。
申請乙個證書簽名的費用是一年幾十~幾百刀不等,所以如果只是出於管理目的,可以建立自簽名證書,保證管理員通過瀏覽器安全連線到伺服器。
下面簡單介紹如何建立乙個自簽名的ssl證書。
建立自簽名證書需要安裝openssl,使用以下步驟:
為https準備的證書需要注意,建立的簽名請求的cn必須與網域名稱完全一致,否則無法通過瀏覽器驗證。
執行指令碼,假設你的網域名稱是www.test.com,那麼按照提示輸入:
$ ./gencert.sh
enter your domain [www.example.com]: www.test.com
create server key...
generating rsa private key, 1024 bit long modulus
.................++++++
.....++++++
e is 65537 (0x10001)
enter pass phrase for www.test.com.key:輸入口令
verifying - enter pass phrase for www.test.com.key:輸入口令
create server certificate signing request...
enter pass phrase for www.test.com.key:輸入口令
remove password...
enter pass phrase for www.test.com.origin.key:輸入口令
writing rsa key
sign ssl certificate...
signature ok
subject=/c=us/st=mars/l=itranswarp/o=itranswarp/ou=itranswarp/cn=www.test.com
getting private key
todo:
copy www.test.com.crt to ../ssl/www.test.com.crt
copy www.test.com.key to ../ssl/www.test.com.key
add configuration in nginx:
server
輸入口令 部分是輸入,注意4次輸入的口令都是一樣的。
在當前目錄下會建立出4個檔案:
web伺服器需要把 www.test.com.crt 發給瀏覽器驗證,然後用 www.test.com.key 解密瀏覽器傳送的資料,剩下兩個檔案不需要上傳到web伺服器上。
以nginx為例,需要在server 中配置:
server
如果一切順利,開啟瀏覽器,就可以通過https訪問**。第一次訪問時會出現警告(因為我們的自簽名證書不被瀏覽器信任),把證書通過瀏覽器匯入到系統(windows使用ie匯入,mac使用safari匯入)並設定為「受信任」,以後該電腦訪問**就可以安全地連線web伺服器了:
self-signed-cert
如何在應用伺服器中配置證書呢?例如tomcat,gunicorn等。正確的做法是不配置,讓nginx處理https,然後通過proxy以http連線後端的應用伺服器,相當於利用nginx作為https到http的安全**,這樣即利用了nginx的http/https處理能力,又避免了應用伺服器不擅長https的缺點。
證書生成 通配證書生成的方法
今天幫乙個朋友搞了點事情,我提供了乙個可完全隱藏wkwebview並且能載入web的sdk提供給對方使用,為了防止sdk在多個專案的復用,限制了這個sdk只能在具體的某個bundle id下執行,正常情況下這樣是沒有問題的。通過換bundle id進行真機測試的方案很合理,但是針對現在這種需要特定的...
ssl證書生成
openssl req new x509 days 3650 nodes out opt ssl certs postfix.pem keyout opt ssl private postfix.pem第乙個是證書,第二個是key 私鑰 可以應用在很多程式上。下面舉兩個例子 nginx postfi...
nginx證書生成
一 把證書準備好。步驟與使用openssl自簽發伺服器https證書所述大同小異。在這裡再重複一次。1 製作ca證書 ca.key ca私鑰 openssl genrsa des3 out ca.key 2048 製作解密後的ca私鑰 一般無此必要 openssl rsa in ca.key out...