請參考 Nginx Wiki http://wiki.nginx.org/NginxHttpSslModule
產生認證 $ cd /usr/local/nginx/conf
$ openssl genrsa -des3 -out server.key 1024
$ openssl req -new -key server.key -out server.csr
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
編輯 nginx.conf server {
server_name YOUR_DOMAINNAME_HERE;
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
}
OK, 完成了。但這樣認證是不被信任的,自己玩玩還行,要被信任請看下面。
以下內容轉載自
http://goo.gl/YOb5
http://goo.gl/Gftj
HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容 請看SSL。
它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP資料轉送。https:URL表明它使用了HTTP,但HTTPS存在不同 於HTTP的預設連接埠及一個加密/身分識別驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司進行,提供了身分識別驗證與加密通訊方法,現在它被廣 泛用於全球資訊網上安全敏感的通訊,例如交易支付方面。
1、自行頒發不受瀏覽器信任的SSL認證:
HTTPS的SSL認證可以自行頒發,Linux下的頒發步驟如下: openssl genrsa -des3 -out api.bz.key 1024
openssl req -new -key api.bz.key -out api.bz.csr
openssl rsa -in api.bz.key -out api.bz_nopass.key
nginx.conf 的SSL認證配置,使用 api.bz_nopass.key,在啟動Nginx是無需輸入SSL認證密碼,而使用 api.bz.key 則需要輸入密碼: server {
server_name sms.api.bz;
listen 443;
index index.html index.htm index.php;
root /data0/htdocs/api.bz;
ssl on;
ssl_certificate api.bz.crt;
ssl_certificate_key api.bz_nopass.key;
......
}
自行頒發的SSL認證雖然能夠實現加密傳輸功能,但得不到瀏覽器的信任,會出現以下提示:
2、受瀏覽器信任的StartSSL免費SSL認證:
跟VeriSign一樣,StartSSL(網址:http://www.startssl.com,公司名:StartCom)也是一家CA機構,它的根憑證很 久之前就被一些具有開源背景的瀏覽器支援(Firefox瀏覽器、GoogleChrome瀏覽器、蘋果Safari瀏覽器等)。
在今年9月 份,StartSSL竟然搞定了微軟:微軟在升級補丁中,更新了通過Windows根憑證認證程式(Windows Root Certificate Program)的廠商清單,並首次將StartCom公司列入了該認證清單,這是微軟首次將提供免費數字驗證技術的廠商加入根憑證認證列表中。現在,在 Windows 7或安裝了升級補丁的Windows Vista或Windows XP作業系統中,系統會完全信任由StartCom這類免費數字認證機構認證的數位憑證,從而使StartSSL也得到了IE瀏覽器的支援。
註冊成為StartSSL(http://www.startssl.com) 使用者,並通過郵件驗證後,就可以申請免費的可信任的SSL認證了。步驟比較複雜,就不詳細介紹了,申請嚮導的主要步驟如下:
startssl在9月微軟補丁更新中被支援,使得startssl認證得到承認。
申請流程如下 startssl.com
我的環境是windows 7
請不要使用chrome和IE8,否則將無法產生KEY而無法申請成功。建議使用firefox。
此外我還遇上了點意外,我使用的移動的網路被誤判為澳大利亞的IP並收到郵件要求解釋。
我將APNIC的查詢地址和查詢結果發送給對方後帳戶才申請成功。
control panel / sign-up 注意填寫正確資料。收到郵件後複製驗證碼。然後可以產生一個認證,注意,startssl.com不是以使用者名稱、密碼來驗證使用者的,是用認證來驗證使用者 的。
所以產生認證後(Firefox會匯入認證),注意備份認證。丟失認證後只能重新註冊。
登入後還要驗證網域名稱才能為該網域名稱產生SSL認證,可以選擇在whois裡的郵箱、hostmaster@domain、 postmaster@domain或者webmaster@domain
然後就可以在Certificates wizard裡就可以申請SSL認證了。
有效期間一年。
======2009/11/26 update===========
Toolbox
把你申請時的private key拿去Decrypt private key,然後把產生的key儲存起來。
然後在Retieve certificate裡選擇你申請的網域名稱,就可以得到cer檔案,儲存起來,放到nginx的conf目錄。
在nginx裡這樣配置 server {
server_name security.meettea.com;
listen 443;
index index.html index.htm index.php;
root /data0/htdocs/security.meettea.com;
ssl on;
ssl_certificate security.cer;
ssl_certificate_key security.key;
}
nginx -s reload下如果沒有任何提示,就說明配置成功了。
可惜firefox3.5測試,不信任class 1的認證。
==============2009/11/26 update===================
在startssl forum看到官方人員說firefox3.5不支援是因為沒有配置好。經過配置解決了firefox 3.5不信任該認證的問題,ubuntu studio下測試通過。
步驟是:擷取https://www.startssl.com/certs/ca.pem
擷取https://www.startssl.com/certs/sub.class1.server.ca.pem
cat ca.pem sub.class1.server.ca.pem >> ca-certs.crt
cat ca-certs.crt >> security.cer
這是因為需要把startssl的根憑證和sub class1的認證附上,因為是他們把憑證發行給你,firefox需要這張認證才認識你的認證。 :)
此外opera測試沒通過,這點,連startssl.com自己都沒有被opera通過。 Incoming search terms: nginx https nginx ssl Nginx_https免費SSL認證配置指南 https nginx nginx ssl 配置 startssl https nginx https 配置 centos nginx https nginx ssl配置
Tags: https, nginx, SSL, startssl
本文地址: http://www.21andy.com/new/20100224/1714.html