1. 參考 http://startssl.com
http://blog.miniasp.com/post/2013/01/10/The-Complete-Guide-Free-StartSSL-personal-and-web-site-ssl-tls-certificates.aspx
銷售憑證的公司競爭激烈,國外甚至於有一家簽發憑證的業者 StartSSL™ 提供完全免費的 SSL 與 S/MIME 憑證,每次可申請一年期,憑證有效日到期之前還可以再次申請一次憑證,一樣是免費。這個免費的申請方案其實已經存在很多年,一年可以省下數千元的憑證簽證費用,是個不錯的選擇。但礙於申請的步驟十分繁瑣,可能還是有許多人不知道如何申請免費憑證。
§ 瞭解根憑證的種類 §
天下沒有白吃的午餐,看似好康的免費生意背後,背後總感覺有些風險,我仔細研究之後,的確發現有些值得注意的地方,但對大部分人來說,能夠申請到一個免費的 SSL 憑證或 S/MIME 憑證,還是感覺十分划算,總體來說,這個免費生意可以算是一個非常成功的行銷手法,像我這篇文章就是間接在幫他們宣傳,當然也是幫大家省錢啦。 (^_^)
憑證的運作,必須靠 信任的根憑證 (Root CA) 安裝在系統內,這個安裝的過程大多是作業系統內建在裡面,而這些內建的根憑證就是各家認為這些根憑證是「值得信任的」,所以才會被預先置放在作業系統裡。當然,你如果是系統管理者,一樣可以手動安裝其他根憑證到你的電腦裡,或透過群組原則直接派送到公司的每一台電腦。
透過這些信任的根憑證所簽發的子憑證會被安裝到網站伺服器或其他服務上,當用戶端電腦與伺服器之間使用 HTTPS 進行連接時,由於會先做憑證檢查,當用戶端電腦上的根憑證信任伺服器端電腦的子憑證時,雙方就會產生信任關係。但如果雙方沒有信任關係存在,透過瀏覽器連接網頁時,就會看見以下警告畫面,各位應該多多少少會有看過個幾次:
然而,憑證在簽發時,通常會先確認購買人的身份,做一個基本的背景檢查,例如公司的姓名、地址、電話等等,但這個「檢查」的動作,全靠憑證廠商自由心證,他們不做檢查也沒人知道。所以,的確也有些憑證廠商在簽發憑證時是不做身份檢查的,有人來買,就立刻簽發一個憑證出去,先收錢再說。
相對的,當你上網時看到一個「信任的」憑證,但使用這個憑證的單位(個人或公司)是否真得可靠?出問題是否找的到連絡人?這都是未知數!所以,要說憑證市場是一個販售「信任」的行業,一點也不為過。
大約在 2005 年以前,全球憑證的市場只有一種等級的根憑證,也就是 Class 1 憑證,我們稱這類憑證為「一般憑證」或是「比較早期的根憑證」,可以用在沒那麼需要安全的網路環境。也就是比較沒那麼需要購買「信任」的網路環境。「信任」這件事的嚴重性因人而異,我不能告訴你什麼使用情境是「一定要」購買「信任」的憑證,只能跟我說有 Class 1 憑證的存在,而且對一般大眾使用的瀏覽器的確也會被識別為「信任的憑證」。
在 2005 年之後,憑證市場出現了一些變化,有不少軟體開發商與系統管理員覺得,把這些「有驗證身份」的憑證與「沒有驗證身份」的憑證歸納在一起,感覺不太公平,這兩者信任程度是有差的!所以,之後就出現了一個新的 Class 3 憑證類別,這種憑證類別就屬於這種「高安全性」的憑證等級,可以用在高度信任的網路環境下,且這類憑證因為簽發之前都需要做身份檢查,因此向憑證廠商購買時都會需要一年幾千塊到幾萬塊不等的憑證簽發費用。
至於為什麼價差這麼大?不都是一個「簽發憑證」的動作嗎?就算身份檢查需要成本,也沒差這麼多吧?這個問題我們許多客戶都會問起,本文稍早有講過,憑證市場是一個販售「信任」的行業,當廠商覺得自己比較可靠(可被信任),他的定價就會比較高,但不管你支付多少錢請憑證廠商幫你簽發憑證,你的網站外觀根本沒差別!
不過也有可能會有以下情況:當使用者發現你的網站憑證跟 VeriSign 這家老牌的公司採購憑證,他們可能會覺得:「他們的憑證是跟 VeriSign 買的耶,這一定是可靠的大公司才會跟他們買這種貴森森的憑證!」至於使用者是不是真的會這樣覺得,那就就見仁見智了! XD
目前市面上,大多數憑證廠商都是賣 Class 3 的憑證,除此之外還有賣所謂的 EV SSL 憑證,這裡的 EV 是 Extended Validation 的意思,意思是「延伸驗證」,也就是要購買這類的憑證,需要驗證的資料更多,更能掌握憑證使用者的各種資訊,也就是這類憑證,使用者可以更加「信任」的意思!另一個有趣的地方大家可能不知道,若你的網站申請的是 EV SSL 憑證,在 IE 瀏覽器上會出現整條「綠色」的網址列,請記得,這就是「安全」的感覺!哈哈 XD
當然,價格也貴上許多!不過,EV SSL 並不是本文的重點,因此不再贅述。
§ 瞭解 StartSSL™ 網站提供的免費憑證 §
回歸正題,StartSSL™ 網站提供的免費憑證,其實就是 Class 1 根憑證所簽發的憑證,這類憑證基本上不對購買者做身份檢查,而是只檢查 Email 可以收到信,以及你可以管理網站域名,如此而已,今天的文章就是教大家如何通過這些基本檢查,進而申請到免費憑證!
大部分瀏覽器都有內建 StartSSL™ 公司的根憑證,因此使用他們提供的「免費憑證」並沒有多大問題,不過,在某些行動裝置或需要較高安全性的伺服器環境下,預設會將 Class 1 根憑證給移除,如此一來用戶端就無法正常與伺服器連線。我親自測試過,我手邊的 Windows Phone 7.5 預設就不信任 Class 1 的根憑證,還有我同事的 Android 4.1 手機內建的瀏覽器(網際網路)預設也不信任 Class 1 根憑證所簽發的憑證!
但你若要在「台灣」經營電子商務網站,使用 StartSSL™ 網站提供免費憑證絕對是萬萬不可以的,要是交易發生問題,你也無法證明你所使用憑證的可靠度,也不符合中華民國電子簽章法的要求,這點必須特別注意!
電子簽章法 第11條 憑證機構應製作憑證實務作業基準,載明憑證機構經營或提供認證服務之相關作業程序,送經主管機關核定後,並將其公布在憑證機構設立之公開網站供公眾查詢,始得對外提供簽發憑證服務。
【 工商時間 】如果有人想要購買憑證,可以寫信到我們公司,我們會有人協助你購買正確、合法且有效的 SSL 憑證,相關需求請寄信到: service (at) miniasp.com
§ 免費申請 StartSSL™ 個人數位簽章與網站 SSL 憑證完全攻略 §
2. 輸入個人基本資料以申請個人憑證,方便日後登入該網站用。記得要輸入正確,尤其是 Email 地址
按下 Continue 登入時會提示你是否誠實的輸入正確的個人資料,確認後按下「確定」繼續
3. 接著去 Email 信箱收信,你會得到一個 驗證碼 (authentication code)
4. 回到瀏覽器,在網頁上輸入郵件中的驗證碼,並按下 Continue 繼續
他會說正在驗證你的個人資料,約要等 6 個小時內完成審查 ( 其實不用這麼久 )
5. 大約等個 5 ~ 10 分鐘就會收到一審核通過的 Email 郵件,並再次取得 驗證碼 (verification code)
6. 回到瀏覽器,在網頁上輸入郵件中的驗證碼,並按下 Continue 繼續
7. 這時要產生你的個人私鑰,必須選擇加密等級,保留預設選項即可,並按下 Continue 繼續
8. 大約幾秒鐘就會產生完成,直接按下 Install 按鈕,憑證就會自動安裝到你的作業系統裡!
9. 若用 Google Chrome 瀏覽,會看到工具列下方會出現「成功儲存 StartCom Class 1 Primary Intermediate Client CA 發出的用戶端憑證。」的字樣,你可以點選「檢視」按鈕查看憑證資訊。
該憑證已經成功安裝到作業系統中,今後登入 StartSSL™ 網站不需要再次輸入帳號、密碼,從憑證資訊中也可以看出,該憑證的使用目的只有「向遠端電腦證明您的身份」以及「保護電子郵件訊息」這兩點而已,不能用來當作網站伺服器的 SSL 憑證用途:
10. 你也可以透過以下步驟查詢作業系統中的憑證清單
11. 會員註冊成功後,會進入該網站主要頁面,你必須依照三個步驟完成免費憑證申請的動作: (1) 驗證網域擁有權 (2) 申請憑證 (3) 其他憑證相關工具使用,而這三個步驟也相對應的提供三個頁籤可供操作。我們要先從 Validations Wizard 做起:
12. 這裡我們先執行「網站域名驗證」,確認你是特定「域名」的擁有人,確認之後,你才能申請免費憑證!
13. 輸入網域名稱
14. 下一步,你只能從以下 4 個信箱中選擇一個,如果沒有這些信箱的話,請建立一個可以收到信的信箱,如此一來才能驗證網站域名的擁有權!(收的到信,就代表你是網域管理者)
15. 去收信,信件中會有一個 驗證碼 (verification code)
16. 回到瀏覽器,在網頁上輸入郵件中的驗證碼,並按下 Continue 繼續
17. 按下 Finish 即可完成驗證工作,接下來 30 天內,你可以建立任意數量的子網域憑證!而且免費!
18. 完成後,從畫面右下角可以看出已經通過驗證的那些域名 (Domain Names)
19. 接著,透過 Certificates Wizard 產生 Web Server SSL/TLS Certificate 憑證
20. 輸入憑證金鑰密碼,該密碼你一定要紀錄下來,否則之後就算申請到也沒用!
21. 將網頁上的加密金鑰檔 (純文字),開啟記事本將內容貼入,並另存新檔
注意:檔案的儲存編碼一定要是 ANSI 格式,若儲存成 UTF-8 with BOM 後續步驟將會發生問題!
22. 準備新增一個域名,選擇你剛剛驗證過的域名,然後按下 Continue 繼續
23. 輸入一個 子網域 (sub-domain) 的名稱
24. 重新檢視你的憑證資訊,之後產生的憑證,單一憑證上將會同時有 miniasp.com 與其子網域兩個域名的 SSL 憑證,最後按下 Continue 繼續。
25. 成功產生憑證,請先另存文字檔,可以用網頁上的建議取名為 ssl.crt 或取名 *.crt 都可以。
注意:這是個不含「金鑰」的憑證而已,不含任何要保護的成分,是可以公開的,這也就是所謂的公鑰。
注意:這是個不含「金鑰」的憑證而已,不含任何要保護的成分,是可以公開的,這也就是所謂的公鑰。
26. 憑證建立成功,你會在網頁右下角看到申請成功的憑證域名
27. 接著準備進入 Tool Box 頁籤,產生 PFX 完整憑證檔(就是包含私密金鑰的重要檔案)
點選 Create PKCS#12 (PFX) File 連結
28. 請重新檢視一下你目前已經產生的資訊有以下三個:
- 產生金鑰前設定的「金鑰密碼」 ( 0-Password.txt )
- 加密過的私密金鑰檔案 ( ssk.key )
- 公開的憑證檔案 ( ssl.crt )
29. 將檔案內容分別貼入網頁上的欄位,如下圖示:
30. 最後點選 Get PFX 下載 PFX 憑證檔
如下圖示,副檔名為 *.p12 或 *.pfx 都是合法的副檔名
免費憑證申請就大功告成!
最後,我們先將 *.p12 檔案匯入 IIS 網站伺服器 (或其他網站伺服器)
再去修正站台的「繫結」設定,將 SSL 憑證選上去即可!
2. FireFox 會出現 憑證不信任的狀況
參考 http://www.kaijia.me/2012/08/firefox-untrusted-startssl-certificate-issue-solved/
StartSSL证书的支持率一直是一个很大的问题,今天在Apache中安装完StartSSL证书之后遇到了以下情况:
- Firefox提示“此连接是不受信任的”,同时Opera则在地址栏左侧状态中提示“服务器试图应用安全措施,但没有成功”;
- 桌面版本Chrome显示已经加密,但iOS版Chrome则提示“此网站尚未经过身份验证。”;
- Win7下IE9和iOS版本Safari都显示已经加密。
理论上讲,StartSSL支持除了Opera外所有的主流浏览器,因此Firefox遇到的不受信任的连接是不正常情况。
经过查看官网文档和Google后找到了问题的原因:Firefox仅包含了StartCom的根证书,而中间证书需要服务器提供,一般网上的Howto都不会提及这一点,所以会出现类似问题。
以下解决方法基于Jason Weathered的文章《A free SSL certificate for your web server》改进(之前Kaijia是根据《Setting up SSL: Ubuntu and Apache 2》架设的SSL,其中证书和Key文件都放在/etc/apache2/ssl/文件夹中,此例中假定你将域名的.crt和.key文件也放在/etc/apache2/ssl/中):
首先你需要在StartSSL的控制板的Tool Box->StartCom CA Certificates中下载StartCom CA证书,需要下载StartCom Root CA (PEM encoded)、你的证书等级对应的CA证书(免费的Class 1证书下载Class 1 Intermediate Server CA)。下载完成后将这两个pem文件复制到服务器的/etc/apache2/ssl/文件夹中。
在命令行下运行以下命令:
1
2
3
4
| cd /etc/apache2/ssl mv ca.pem startssl.ca.crt mv sub.class1.server.ca.pem startssl.sub.class1.server.ca.crt cat startssl.sub.class1.server.ca.crt startssl.ca.crt > startssl.chain.class1.server.crt |
然后修改原来SSL部分的Apache设置,Kaijia虚拟域名的原有设置为:
1
2
3
4
5
6
7
| < VirtualHost *:443> DocumentRoot /var/www/yourdomain.com ServerName yourdomain.com SSLEngine On SSLCertificateFile /etc/apache2/ssl/yourdomain.crt SSLCertificateKeyFile /etc/apache2/ssl/yourdomain.key </ VirtualHost > |
在原有设置中增加一条:SSLCertificateChainFile /etc/apache2/ssl/startssl.chain.class1.server.crt,更改为如下:
1
2
3
4
5
6
7
8
| < VirtualHost *:443> DocumentRoot /var/www/yourdomain.com ServerName yourdomain.com SSLEngine On SSLCertificateFile /etc/apache2/ssl/yourdomain.crt SSLCertificateKeyFile /etc/apache2/ssl/yourdomain.key SSLCertificateChainFile /etc/apache2/ssl/startssl.chain.class1.server.crt </ VirtualHost > |
之后重启Apache:
1
| service apache2 restart |
刷新浏览器后Firefox显示连接安全,而Opera在Linux下显示安全,Windows下仍然提示“服务器试图应用安全措施,但没有成功”,可能与系统根证书目录,但毕竟StartCom自己都没说过支持Opera,这样说来问题也是解决了。
沒有留言:
張貼留言