Nginx + https + 免費SSL證書配置指南

生成證書php

$ 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.confhtml

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, 完成了。但這樣證書是不被信任的,本身玩玩還行,要被信任請看下面。nginx

如下內容轉載自
http://goo.gl/YOb5
http://goo.gl/Gftjweb

HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,所以加密的詳細內容 請看SSL。chrome

它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL代表它使用了HTTP,但HTTPS存在不一樣 於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司進行,提供了身份驗證與加密通信方法,如今它被廣 泛用於萬維網上安全敏感的通信,例如交易支付方面。ubuntu

一、自行頒發不受瀏覽器信任的SSL證書:
HTTPS的SSL證書能夠自行頒發,Linux下的頒發步驟以下:windows

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 + https + 免費SSL證書配置指南 7f13bbb85e123811 thumb

nginx.conf 的SSL證書配置,使用 api.bz_nopass.key,在啓動Nginx是無需輸入SSL證書密碼,而使用 api.bz.key 則須要輸入密碼:api

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證書雖然可以實現加密傳輸功能,但得不到瀏覽器的信任,會出現如下提示:
Nginx + https + 免費SSL證書配置指南 6c3f2b38523ed259瀏覽器

二、受瀏覽器信任的StartSSL免費SSL證書:
跟VeriSign同樣,StartSSL(網址:http://www.startssl.com,公司名:StartCom)也是一家CA機構,它的根證書很 久以前就被一些具備開源背景的瀏覽器支持(Firefox瀏覽器、谷歌Chrome瀏覽器、蘋果Safari瀏覽器等)。安全

在今年9月 份,StartSSL居然搞定了微軟:微軟在升級補丁中,更新了經過Windows根證書認證程序(Windows Root Certificate Program)的廠商清單,並首次將StartCom公司列入了該認證清單,這是微軟首次將提供免費數字驗證技術的廠商加入根證書認證列表中。如今,在 Windows 7或安裝了升級補丁的Windows Vista或Windows XP操做系統中,系統會徹底信任由StartCom這類免費數字認證機構認證的數字證書,從而使StartSSL也獲得了IE瀏覽器的支持。

註冊成爲StartSSL(http://www.startssl.com) 用戶,並經過郵件驗證後,就能夠申請免費的可信任的SSL證書了。步驟比較複雜,就不詳細介紹了,申請向導的主要步驟以下:
Nginx + https + 免費SSL證書配置指南 b56b050d03ca03b8 thumb

Nginx + https + 免費SSL證書配置指南 d4477635bf39c593 thumb

Nginx + https + 免費SSL證書配置指南 f4b4b38f6c656990 thumb

startssl在9月微軟補丁更新中被支持,使得startssl證書獲得認可。

申請流程以下 startssl.com

個人環境是windows 7

請不要使用chrome和IE8,不然將沒法生成KEY而沒法申請成功。建議使用firefox。

此外我還趕上了點意外,我使用的移動的網絡被誤判爲澳大利亞的IP並收到郵件要求解釋。

我將APNIC的查詢地址和查詢結果發送給對方後賬戶才申請成功。

control panel / sign-up 注意填寫正確資料。收到郵件後複製驗證碼。而後能夠生成一個證書,注意,startssl.com不是以用戶名、密碼來驗證用戶的,是用證書來驗證用戶 的。

因此生成證書後(火狐會導入證書),注意備份證書。丟失證書後只能從新註冊。

登陸後還要驗證域名才能爲該域名生成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經過。

相關文章
相關標籤/搜索