一我碟、什么是 SSL 證書霹陡,什么是 HTTPS
【SSL】: 目前互聯(lián)網(wǎng)常用的HTTP協(xié)議是非常不安全的明文傳輸協(xié)議。而SSL協(xié)議及其繼任者TLS協(xié)議双藕,是一種實現(xiàn)網(wǎng)絡(luò)通信加密的安全協(xié)議淑趾,可在客戶端(瀏覽器)和服務(wù)器端(網(wǎng)站)之間建立一條加密通道,保證數(shù)據(jù)在傳輸過程中不被竊取或篡改忧陪。
【HTTPS】: https叫安全的超文本傳輸協(xié)議扣泊,使用TCP端口443,他的數(shù)據(jù)會用PKI中的公鑰進行加密嘶摊,這樣抓包工具捕獲到的數(shù)據(jù)包也沒有辦法看包中的內(nèi)容延蟹,安全性大大提高,要解密數(shù)據(jù)的話就要用到PKI中的私鑰叶堆。所以一些安全性比較高的網(wǎng)站如:網(wǎng)上銀行阱飘,電子商務(wù)網(wǎng)站都需要用https訪問!
二蹂空、什么網(wǎng)站需要使用SSL證書,
1果录、購物交易類網(wǎng)站
不用多說上枕,網(wǎng)上銀行、支付寶弱恒、Paypal等肯定會全程加密以保護你的信息安全辨萍。
2、注冊與登陸
一些大的網(wǎng)站返弹,比如電子郵箱锈玉,注冊會員或者登陸的時候,會專門通過SSL通道义起,保證密碼安全不被竊取拉背。
3、某些在線代理 或 實現(xiàn)加密傳輸 或 認證服務(wù)器真實身份
用戶通過http協(xié)議訪問網(wǎng)站時默终,瀏覽器和服務(wù)器之間是明文傳輸椅棺,這就意味著用戶填寫的密碼犁罩、帳號、交易記錄等機密信息都是明文两疚,隨時可能被泄露床估、竊取、篡改诱渤,被黑客加以利用丐巫。
安裝SSL證書后,使用Https加密協(xié)議訪問網(wǎng)站勺美,可激活客戶端瀏覽器到網(wǎng)站服務(wù)器之間的"SSL加密通道"(SSL協(xié)議)递胧,實現(xiàn)高強度雙向加密傳輸,防止傳輸數(shù)據(jù)被泄露或篡改励烦。
釣魚欺詐網(wǎng)站泛濫谓着,用戶如何識別網(wǎng)站是釣魚網(wǎng)站還是安全網(wǎng)站?網(wǎng)站部署全球信任的SSL證書后坛掠,瀏覽器內(nèi)置安全機制赊锚,實時查驗證書狀態(tài),通過瀏覽器向用戶展示網(wǎng)站認證信息屉栓,讓用戶輕松識別網(wǎng)站真實身份舷蒲,防止釣魚網(wǎng)站仿冒。
三友多、受瀏覽器信任的證書
要獲取受瀏覽器信任的證書牲平,則需要到證書提供商處申請。證書授證中心域滥,又叫做CA機構(gòu)纵柿,為每個使用公開密鑰的用戶發(fā)放一個數(shù)字證書。瀏覽器在默認情況下內(nèi)置了一些CA機構(gòu)的證書启绰,使得這些機構(gòu)頒發(fā)的證書受到信任昂儒。VeriSign即是一個著名的國外CA機構(gòu),工行委可、建行渊跋、招行、支付寶着倾、財付通等網(wǎng)站均使用VeriSign的證書拾酝,而網(wǎng)易郵箱等非金融網(wǎng)站采用的是中國互聯(lián)網(wǎng)信息中心 CNNIC頒發(fā)的SSL證書。一般來說卡者,一個證書的價格不菲蒿囤,以VeriSign的證書為例,價格在每年8000元人民幣左右崇决。
據(jù)說也有免費的證書可以申請蟋软。和VeriSign一樣镶摘,StartSSL也 是一家CA機構(gòu),它的根證書很久之前就被一些具有開源背景的瀏覽器支持(Firefox瀏覽器岳守、谷歌Chrome瀏覽器凄敢、蘋果Safari瀏覽器等)。后 來StartSSL竟然搞定了微軟:在升級補丁中湿痢,微軟更新了通過Windows根證書認證(Windows Root Certificate Program)的廠商清單涝缝,并首次將StartCom公司列入了該認證清單。現(xiàn)在譬重,在Windows 7或安裝了升級補丁的Windows Vista或Windows XP操作系統(tǒng)中拒逮,系統(tǒng)會完全信任由StartCom這類免費數(shù)字認證機構(gòu)認證的數(shù)字證書,從而使StartSSL也得到了IE瀏覽器的支持臀规。 網(wǎng)上很多如何申請合法證書的流程滩援。
三、自行頒發(fā)不受瀏覽器信任的SSL證書
此處指針對使用較多的服務(wù)器Apache和nginx 說明
準備工作:確保你系統(tǒng)?已安裝 openSSL 塔嬉。
1玩徊、安裝好apache環(huán)境,注意要裝ssl版本的谨究。這里裝在c:/apache目錄下恩袱。
2、apache 服務(wù)器 配置 ssl
Apache一般都自帶openssl胶哲。
1)在DOS命令下進入apache/bin目錄(因為openssl.exe程序是在此目錄下畔塔,如何不是使用Apache自帶的openssl,請進入相應(yīng)的目錄)
2)在windows環(huán)境下需先設(shè)置Openssl環(huán)境變量:
執(zhí)行命令:set OPENSSL_CONF=..\conf\openssl.cnf ??
解釋:此處操作是為了讓openssl找到openssl.cnf配置? ..\conf\openssl.cnf 是openssl.cnf對應(yīng)的路徑,請在執(zhí)行之前確保 openssl.cnf 存在鸯屿,否則會出現(xiàn):WARNING: can't open config file: /usr/local/ssl/openssl.cnf 信息提示澈吨。還有在windows系統(tǒng)下.cnf 默認會被當成快捷方式,看不到擴展名寄摆。
3)生成私鑰文件:
執(zhí)行命令:openssl genrsa 1024>server.key
說明:這是用128位rsa算法生成密鑰谅辣,得到server.key文件。 > 是輸出文件的標識符
這種生成方法生成的是沒有密鑰的私鑰文件冰肴。當然屈藐,Apache提供了加入密鑰(Password)的命令榔组,就是加入?yún)?shù)-des3熙尉。
加入?yún)?shù)后的命令:openssl genrsa 1024 -des3 > server.key
使用上述命令生成私鑰文件是需要輸入密鑰的,運行的時候會讓你輸入并確認你的密鑰搓扯。但是在Windows環(huán)境下會導(dǎo)致以下錯誤:錯誤:Apache啟動失敗检痰,錯誤提示是:Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file .....)
原因是window下的apache不支持加密的私鑰文件。
注:生成的證書中RSA密鑰對的默認長度是1024锨推,取值是2的整數(shù)次方铅歼。建議使用4096以上公壤。
所以最后使用的命令:openssl genrsa 4096 -des3 > server.key
4)生成證書請求文件。
執(zhí)行命令:openssl req -new -key server.key > server.csr
說明:這是用步驟3的密鑰生成證書請求文件server.csr, 這一步會有很多參數(shù)椎椰,需要一一輸入厦幅。
按提示輸入一系列的參數(shù):
Country Name (2 letter code) [AU]:CN ISO國家代碼(只支持兩位字符)
State or Province Name (full name) [Some-State]:ZJ所在省份
Locality Name (eg, city) []:HZ所在城市
Organization Name (eg, company):SW_TECH公司名稱
Organizational Unit Name (eg, section) []:SW_TECH組織名稱
Common Name (eg, YOUR name) []:xxx.com申請證書的域名 (可以是*xxx.com)
Email Address []:admin@xxx.com 管理員郵箱
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: 交換密鑰
An optional company name []: ?注:Common Name必須和httpd.conf中server?name必須一致,否則apache不能啟動 (啟動apache時錯誤提示為:RSA server certificate CommonName (CN) `Kedou' does NOT match server name!? )
5)簽署服務(wù)器證書文件慨飘。
執(zhí)行命令行:openssl req -x509 -days 3650 -key server.key -in server.csr > server.crt
說明:這是用步驟3,4的的密鑰和證書請求生成證書server.crt确憨,-days參數(shù)指明證書有效期,單位為天瓤的,x509表示生成的為X.509證書休弃。
以上簽署證書僅僅做測試用,真正運行的時候圈膏,應(yīng)該將CSR發(fā)送到一個CA返回真正的證書塔猾。網(wǎng)上有些文檔描述生成證書文件的過程比較繁瑣,就是因為 ? ?他們自己建立了一個CA中心稽坤,然后再簽署server.csr
用openssl x509 -noout -text -in server.crt 可以查看證書的內(nèi)容丈甸。證書實際上包含了Public Key
3、配置httpd.conf
1) 打開httpd.conf文件慎皱,移除注釋的行:
Include conf/extra/httpd-ssl.conf
LoadModule?ssl_module?modules/mod_ssl.so
2) 打開httpd-ssl.conf老虫,修改如下:
SSLEngine?On
SSLCertificateFile?../bin/server.crt
SSLCertificateKeyFile?../bin/server.key
#SSLCertificateChainFile?../bin//ca.crt?//?暫未啟用
#......
DocumentRoot?"c:/apache/htdocs"
ServerName?www.xxx.com:443
4、重啟apahce服務(wù)茫多,訪問https://localhost祈匙,完工!
5天揖、===========出現(xiàn)錯誤匯集==========
1,夺欲、"Syntax error on line 80 of c:/apache/conf/extra/httpd-ssl.conf:ErrorLog takes one argument,The filename of the error log"或者"Syntax error on line 99 of c:/apache/conf/extra/httpd-ssl.conf:SSLCertificateFile takes one argument,SSL Server Certificate file ('/path/to/file' -PEM or DER encoded)"
解決方法:文件路徑加雙引號
2、"Syntax error on line 76 of C:/apache/conf/extra/httpd-ssl.conf:SSLSessionCache:'shmcb'session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?)."
解決辦法:
打開httpd.conf今膊,找到LoadModule socache_shmcb_module modules/mod_socache_shmcb.so些阅,把前面的注釋去掉。