顯示具有 SSL 標籤的文章。 顯示所有文章
顯示具有 SSL 標籤的文章。 顯示所有文章

2010年6月29日 星期二

[LAMP]SSL介紹

SSL介紹:出處
SSL(Secure Socket Layer)是Netscape所提出來的資料保密協定,採用了RC4、MD5,以及RSA等加密演算法。


網路上需要確定網站真的是那個網站,所以SSL也具備認證的機能。SSL是以金字塔的結構
組成,最下層的是一般的伺服器,它們經由向上跟CA申請取得SSL的憑證,CA會在SSL相關檔案上籤名,CA是具有公信力和認證能力的機構,CA必須向上跟RootCA(如政府機構等)申請。當使用者連結具SSL的服務時,伺服器會傳送憑證給使用者,使用端的程式接收到憑證後會向CA確認憑證,若CA確認這個憑是它們簽發的則會回傳給使用端正確的訊息。
具有SSL功能的網站可以向 世界少數幾個發證機構(例如目前最大的VeriSign或第二大的Thawte兩家認證公司)申請,經過嚴格的文件證明確認後,才能取得國際認可(較新版 的MSIE或Netscape瀏覽軟體會自動認得)的電子認證。



所有 SSL憑證都是發給公司或是法人,典型的 SSL 憑證將包括您的網域名稱(domain name)、您的公司名稱(company name)、您的住址(address)、您的所在城市(city)、您的省份(state)和您的國家(country),它也包含了憑證的到期日和負責核發此憑證的發證中心詳細資料。當一個瀏覽器連結到一個安全網站時,它將收到這個網站的SSL憑證並且檢驗它是否過期、它是否是已經被瀏覽器信任的發證中心所核發的,以及它是否如核發時 所登記的內容被該網站使用,假如有任何一項檢查不通過,瀏覽器將顯示一個警告訊息給使用者。



在Ubuntu上安裝 apache+mysql+php+openssl
sudo tasksel install lamp-server
安裝 lamp (apache mysql php)

sudo apt-get install mysql-admin mysql-gui-tools-common mysql-query-browser
安裝mysql的管理介面

sudo apt-get install -y php5-gd
安裝GD庫

sudo apt-get install -y openssl
安裝Openssl

sudo apt-get install -y ssl-cert
安裝簽署憑證的工具

sudo a2enmod ssl
安裝ssl模組

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
sudo ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl
複製一份預設擋供ssl用,並且用ln建立連結(捷徑)至sites-enabled/ssl

sudo vim /etc/apache2/sites-enabled/ssl
在以下位置後面加入紅色的設定值

NameVirtualHost *:443

sudo vim /etc/apache2/sites-enabled/default
在以下位置後面加入紅色的設定值

NameVirtualHost *:80
SSLEngine On
SSLCerficationFile /etc/apache2/etc/apache.pem

sudo vim /usr/sbin/make-ssl-cert
將"-keyout $output"改成"-keyout $output -days 3650"即可將憑證有效時間改成10年

sudo mkdir /etc/apache2/ssl
建立ssl憑證所擺放目錄

sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/etc/apache.pem

make-ssl-cert is a wrapper of OpenSSL
依照指示輸入憑證相關訊息,即可產生自簽的電子證書!

sudo /etc/init.d/apache2 force-reload
重新載入配置

sudo /etc/init.d/apache2 restart
重新啟動Apache2
產生自簽的CA
產生自簽的CA的意義是,自己架設一個CA,並為自己的伺服器的憑證簽名。則使用端收到憑證時,會向CA確定,這時就用自己架的CA去確認說憑證是有效的。當然這樣是沒有公信力的,而且把自己架的伺服器登記為CA需要手動加入,一般這樣做都是為了測試用。



參考以下連結

http://wiki.ubuntu.org.cn/OpenSSL
主要做兩件事情

第一件是架CA:Creating the Certificate Authority

第二件是架server:Creating a Self-Signed Server Certificate

並使用自己的CA為它簽名

2007年11月27日 星期二

Windows下安裝Apache + SSL

資料來源:http://blog.pixnet.net/whateverusay/post/9408748

http://blog.ericsk.org/archives/215

http://www.pczone.com.tw/vbb3/thread/47/96241/


這兩個網站基本上說明的已經算很清楚,但對於Apache不熟悉的人,可能還有一些問題,因此把資料彙整一下。

(1)首先下載Apache的OpenSSL版本:

http://209.61.202.80/apache/Apache_2.2.3-Openssl_0.9.8d-Win32.zip

假設你把它安裝在D:\Apache2.2\目錄下
安裝時會詢問你domain name、server name與admin email
你輸入的內容會寫到httpd.conf檔案內 (d:\apache2.2\conf\httpd.conf)

httpd.conf是啟動Apache的主要設定檔案

(2)打開httpd.conf

將LoadModule ssl_module modules/mod_ssl.so前面的#去掉
將Include conf/extra/httpd-ssl.conf前面的#去掉
將httpd.conf存檔

(3)打開D:\apache2.2\conf\extra\httpd-ssl.conf

將#SSLMutex "file:D:/Apache2.2/logs/ssl_mutex"
改成SSLMutex none

並確認:



# General setup for the virtual host
DocumentRoot "D:/Apache2.2/htdocs"
ServerName your.server.com.tw:443
ServerAdmin your@email.com
ErrorLog "D:/Apache2.2/logs/error_log"
TransferLog "D:/Apache2.2/logs/access_log"

以上your.server.com是你的機器名稱,如果沒有domain name,可以用ip來代替

這個檔案主要是Apache開啟後,需要知道SSL的設定組態

(4)繼續看httpd.conf

SSLCertificateFile "D:/Apache2.2/conf/ssl/server.crt"

SSLCertificateKeyFile "D:/Apache2.2/conf/ssl/server.key"

如果不需要瀏覽端認證,以下可以不管他:

#SSLVerifyClient require
#SSLVerifyDepth 10

如果自發認證,以下可以不管他:

#SSLCertificateChainFile "D:/Apache2.2/conf/server-ca.crt"
#SSLCACertificatePath "D:/Apache2.2/conf/ssl.crt"
#SSLCACertificateFile "D:/Apache2.2/conf/ssl.crt/ca-bundle.crt"
#SSLCARevocationPath "D:/Apache2.2/conf/ssl.crl"
#SSLCARevocationFile "D:/Apache2.2/conf/ssl.crl/ca-bundle.crl"

修改完後將httpd.conf存檔

(5)要產生SSL所需要的key的前置動作

這個動作牽涉到幾個:
(a)Apache目錄下的/bin/openssl.exe
(b)Apache目錄下的/bin/openssl.cnf (不是openssl.conf喔)

打開openssl.cnf,看看內容:

[ CA_default ]
dir= ./ssl

你先在Apache目錄下的/bin/下建立ssl目錄
也就是有了 d:\apache2.2\bin\ssl,這個目錄放置SSL檔案

(6)在 d:\apache2.2\bin\ssl下建立一個空檔案
index.txt

(7)在 d:\apache2.2\bin\ssl下建立一個檔案serial,內容就輸入01
(不要副檔名喔)

所以目前d:\apache2.2\bin\ssl有兩個檔案: index.txt與serial

在d:\apache2.2\bin\ssl下再新建一個目錄newcerts

(8)產生SSL key
以dos command進到d:\apache2.2\bin
並以下面指令產生key(中間過程會要你輸入一些組態...自己看看...應該沒問題)

d:\apache2.2\bin
openssl genrsa -des3 -out ssl/ca.key 1024

d:\apache2.2\bin
openssl req -config openssl.cnf -new -key ssl/ca.key -out ssl/ca.csr

d:\apache2.2\bin
openssl x509 -days 3650 -req -signkey ssl/ca.key -in ssl/ca.csr -out ssl/ca.crt

d:\apache2.2\bin
openSSL genrsa -out ssl/server.key 1024

d:\apache2.2\bin
openssl req -config openssl.cnf -new -key ssl/server.key -out ssl/server.csr

d:\apache2.2\bin
openssl ca -config openssl.cnf -days 3650 -cert ssl/ca.crt -keyfile ssl/ca.key -in ssl/server.csr -out ssl/server.crt

檢查你的d:\apache2.2\bin\ssl下
是否有了11個檔案及一個目錄 ,將整個ssl目錄copy到d:\apache2.2\conf下

(9)現在重新開啟Apache,應該已經可以用https://來開你的SSL
如果不能的話,看看d:\apache2.2\logs\error.log是哪裡出問題