標籤:centos rails https ssl passenger
rails+apache2+passenger+ssl實現https雙向認證通訊
環境:
系統:Centos7
伺服器:apache(httpd) 2.4.6
製作工具:openssl 1.0.1
Rails版本 :4.1.6
準備工作:
安裝apache和openssl
#yum install httpd httpd-devel httpd-tools
#yum install openssl
安張mod_ssl
#yum install mod_ssl
一、建立根憑證
1建立CA私密金鑰
#openssl genrsa -out ca.key 1024
2建立CA簽章要求(根據要求填寫資訊,密碼那個選項不要填寫,直接斷行符號就行了,不然在後面伺服器啟動的時候,每次啟動都要輸入密碼,比較麻煩)
#openssl req -new -key ca.key -out ca.csr
(
下面貼出來的是要填寫的資訊,根據提示填寫就行了
Country Name (2 letter code) [GB]:CN //輸入國家名稱
State or Province Name (full name) [Berkshire]:AnHui //省名
Locality Name (eg, city) [Newbury]:BoZhou //城市
Organization Name (eg, company) [My Company Ltd]:xuewb.com //組織名稱
Organizational Unit Name (eg, section) []:xuewb.com //單位名稱
Common Name (eg, your name or your server‘s hostname) []: *.xuewb.com //根據具體情況填寫,不要寫錯
Email Address []:[email protected] //郵箱
Please enter the following ‘extra‘ attributes
to be sent with your certificate request
A challenge password []: //密碼,可以不寫,寫的話,每次用到的時候要輸入
An optional company name []: //可以不寫
)
3自己簽發CA根憑證
#openssl x509 -req -days 365 -signkey ca.key -in ca.csr -out ca.crt
二、簽發伺服器端認證
1建立伺服器私密金鑰
#openssl genrsa -out server.key 1024
2建立服務端認證簽發請求
#openssl req -new -key server.key -out server.csr
3利用上面一步驟建立的CA根憑證,簽發伺服器憑證
openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -CAserial ca.srl -CAcreateserial -in server.csr -out server.crt
三、簽發用戶端認證
1建立用戶端私密金鑰
#openssl genrsa -out client.key 1024
2建立用戶端認證簽發請求
#openssl req -new -key client.key -out client.csr
3利用CA根憑證,簽發用戶端認證
#openssl x509 -req -days 3650 -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt
4把用戶端認證轉換成p12格式(作用是此格式可以匯入到瀏覽器的你的認證,這一選項)
#openssl pkcs12 -export -clcerts -inkey client.key -in client.crt -out client.p12
=============================
備忘:用下面命令可以查看相應的檔案的內容
1 查看私密金鑰資訊
#openssl rsa -noout -text -in ca.key
2查看產生的簽章要求檔案
#openssl req -noout -text -in ca.csr
3查看CA根憑證
#openssl x509 -noout -text -in ca.crt
=============================
四、把上面步驟製作的根憑證、伺服器憑證、用戶端認證匯入到瀏覽器中
(1)我使用的Firefox瀏覽器,
匯入這些認證:
編輯---->喜好設定---->進階---->認證---->查看認證-->伺服器---->匯入
然後把上面步驟建立的CA根憑證(ca.crt)和伺服器憑證(server.crt)匯入進來
(2)匯入用戶端認證:
編輯---->喜好設定---->進階---->認證---->查看認證-->您的認證---->匯入
要注意的是這一步匯入的不是client.crt檔案,而是經過轉換的client.p12檔案
五、配置apache2伺服器(httpd)
設定檔rails_ssl.conf如下(這個檔案是完整的,不過不要把安裝mod_ssl後產生的ssl.conf檔案去除,不用動它就行了,裡面有一些基礎配置,如果你想動的話,把一些基礎配置放到這個設定檔下也可以):
#===================================================================
#備忘:
DocumentRoot /var/www/html/xuewb/public
這行中的xuewb是我建的rails的項目名稱
SSLCertificateFile /etc/httpd/cfb_crt/cfb/server.crt
這行中/etc/httpd/cfb_crt/cfb/server.crt是我存放上面步驟製作好的檔案的路徑,我把製作好的所需要的檔案複製到
/etc/httpd/cfb_crt/cfb這個目錄下了,你配置的時候修改成你自己存放檔案的地方就行了,不過要有存取權限
#====================================================================
六、修改hosts檔案,使s.crowdroid.com 這個網域名稱映射到本機伺服器
vim /etc/hosts
127.0.0.1 s.xuewb.com
儲存退出(wq!)
七、重新啟動httpd
#sudo service httpd restart
八、把SElinux先關掉,否則沒有訪問受到限制
#sudo setenforce 0
#===================================================
備忘:
查看狀態:#getenforce
(如果為permissive模式,說明已經關閉;如果為enforcing模式,表示沒有關閉的狀態,用這種方式實現的關閉是暫時的,下次重啟伺服器會再次啟動,如果想永久關閉,可以使用root使用者,vim /etc/sysconfig/selinux,將SELINUX=enforcing修改成SELINUX=disabled 重啟後才會生效)
#===================================================
九、訪問https://s.xuewb.com
參考資料:
http://httpd.apache.org/docs/2.4/en/ssl/
http://kyfxbl.iteye.com/blog/1910891
http://blog.chinaunix.net/uid-20553497-id-2239318.html
#=========簡單解讀============
對稱式加密演算法
對稱式加密演算法用來對敏感性資料等資訊進行加密,常用的演算法包括:
DES(Data Encryption Standard):資料加密標準,速度較快,適用於加密大量資料的場合。
3DES(Triple DES):是基於DES,對一塊資料用三個不同的密鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard):進階加密標準,是下一代的密碼編譯演算法標準,速度快,安全層級高;
非對稱演算法
常見的非對稱式加密演算法如下:
RSA:由 RSA 公司發明,是一個支援變長密鑰的公用密鑰演算法,需要加密的檔案塊的長度也是可變的;
DSA(Digital Signature Algorithm):數位簽章演算法,是一種標準的 DSS(數位簽章標準 (DSS));
ECC(Elliptic Curves Cryptography):橢圓曲線密碼編
rails+apache2+passenger+ssl實現https雙向認證通訊