2014年4月29日 星期二

Apache2+SSL連線功能-進階篇



上一篇介紹了怎麼讓自我認證的SSL在Ubuntu Server上運作
問題是,自我簽發的認證在使用上,都會跳出
這個網站的安全性憑證不可靠!
或是
此網站的安全性憑證有問題。
這樣的警告網頁,除了覺得礙眼之外,
還要多按個按鈕才可以使用,也很麻煩。

理論上把之前產生最高認證中心的簽證檔,
匯入目前使用的電腦,讓瀏覽器認識後,
應該可以讓自己認證的網頁通行無阻
先朝著這一個方向前進吧




延續前一篇的設定,最高權限的憑證是rootca.crt
把它放到windows中,點兩下觀看一下憑證檔內容 
點選安裝憑證後,會跳到匯入憑證精靈
再按下一步會出現下面的視窗

在此點選將所有憑證放入以下的存放區
層級選擇放到"受信任的根憑證梫權單位"後,再點選下一步
接著會再顯示一次視窗,這次按完成來進行匯入的動作
但此時會跳出
不理會警告,點選是(Y)
就可以完成工作

如果害怕這個認證檔被人亂用
可以加上密碼成為p12(個人資訊交換)的格式
指令如下,先輸入rootca的密碼,再加入自己要用的密碼,隨後再確認一次,檔案就產生了。
sudo openssl pkcs12 -export -in rootca.crt -inkey rootca.key -out rootca.p12

Enter pass phrase for rootca.key:
Enter Export Password:
Verifying - Enter Export Password:
與前者不同,點兩下時,並不會顯示憑證狀態,而是直接安裝
按下下一步後,會跳出輸入密碼的頁面

輸入完成後,按下下一步
接著就與上面一樣,把認證放到"受信任的根憑證梫權單位"就行。
接著重開一次網頁

萬歲,成功啦!哈哈!

不過當我們直接輸入ip位址時,那個討人厭的畫面就又出現了
嗯,確實沒有完全解決認證隨時都OK的問題。

上面的文字描述的很清楚
這是因為給的認證命名為ubuntuserver
而當網址是ip時,明顯與認證的名稱不符
所以瀏覽器懷疑連線是有問題的(被亂轉到不相關的地方)
也就是如果在這個網頁有開放對外的狀況下,
用dyndns.org之類的網址
例如網域變成是xxx.dyndns.org時,那認證也是失效的

那麼可不可以讓ip也取得認證?
答案當然是可以,只是設定上比較麻煩
而這樣設定的話,不只有ip能用,網域的適用性也更廣
一次開個四五個名稱也不是問題
這才是進階篇的重點啦

主要的設定是參考這篇Multiple Names on One Certificate
其實連前面匯出p12設定也是出自此處
只是實際測試時,發生了一些問題,還是不能全抄
所以這邊再以中文重寫一下
首先一樣要改openssl.cnf
加入底下幾項東西
找到在[req],照底下位置加入藍字這一行
[ req ]
default_bits            = 1024
default_keyfile         = privkey.pem
distinguished_name      = req_distinguished_name
attributes              = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert
req_extensions = v3_req

往下找到[v3_req],插入下面藍色文字的部分
[v3_req]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1=ubuntuserver #目前的Host Name或是申請的網域名稱
DNS.2=xxx.dyndns.org #其它的Host Name或是申請的網域名稱
IP.1 = 192.168.1.101 #此台主機的IP
IP.2 = 192.168.1.102 #此台主機其它的IP

然後以此設定產生csr檔,這邊命名為darkdragon.csr
使用的是上一篇產生第二層的darkdragon.key,而非rootca.key
詳細指令如下
sudo openssl req -new -out darkdragon.csr -key darkdragon.key -config openssl.cnf
這個指令與上一篇產生req檔的指令相同,所以要依次輸入一些代碼、地區、公司與網域名稱等
不過由於我們已經有了alt_name
在Common Name(eq YOUR name):時可以空白,或是輸入自己常用id都可以
再以此csr檔去產生crt檔
sudo openssl x509 -req -days 1828 -sha1 -extfile /etc/ssl/openssl.cnf -extensions v3_req -CA rootca.crt -CAkey rootca.key -CAserial rootca.srl -CAcreateserial -in darkdragon.csr -out darkdragon.csr.crt
檔名為darkdragon.csr.crt,與上一篇的darkdragon.crt做區隔

這樣就完成新的設定後
我們再回到apache2的設定裡,去把原先darkdragon.crt換成darkdragon.csr.crt後
重新啟動Apache2


再一次用ip打開網頁,可以發現礙眼的提示不見了
不用再確認一次了

沒有留言: