前言: 話說前陣子爸爸家陽台不斷出現米奇老鼠,立刻清理陽台所有東西,然後又跟市政部門反映問題,可是情況還沒有好轉,米老鼠來完一隻又一隻,我爸陽台在老鼠界應該是網紅打卡聖地(誤),要不然就是米奇老鼠版米奇林三星餐廳(?) 雖然我們抓到了三隻,到上兩個禮拜為止還有至少一隻一直抓不到,每天淩晨還會來吃事後煙留下老鼠屎,真_北。 這隻老鼠對傳統攻擊有抗性,有IT9朋友前陣子用Raspberry pi自製了一台electric mouse trap ,用pi的超聲波雷達放在鞋盒裡,鞋盒裡有一堆食物,底部佈了鐵網,偵測到有老鼠進去以後立即關門通9V電,通個1分鐘再放牠離開,大推我自己也造一台 (Youtube片搜尋一大堆,人類真變態啊,朋友好變態啊)。可是我覺得這樣又好像有點太殘忍,不如先偵測牠們什麼時候來,嚇嚇牠們看看有沒有效果再說吧。 目的: 用Raspberry pi及手上有的感測器弄一隻放陽台用來偵測和嚇嚇老鼠的東西,並把紀錄圖像化到雲端給老爸使用。 邏輯及設計: 當老鼠進入偵測範圍,Motion Sensor偵測到生物活動Raspberry pi 處理來自Motion Sensor的訊號,如果夠強的話開始準備作出回應 Raspberry pi在Angry cats sounds中隨機選出叫聲,再經由Speaker輸出貓叫聲 Raspberry pi指示強光元件發出強光束照射目標 把偵測計數上傳到雲端圖表 材料: Sensor 在網路上看了一些Raspberry pi wild animal camera ,很多也是用Motion Sensor先偵測動物再來,我用的是PIR Motion Sensor被動式紅外線感測器,有低耗電成本便宜的好處。[1],而且可手動調整靈敏度及反應時間。 PIR Motion Sensor就是下面這個 圖片來源: learn.adafruit.com 可手動調整敏感度還有反應時間,這個有點不好調,要試好多遍才找到最佳位置。 可以在Raspbian中輸入pinout查詢GPIO避免插錯 圖片來源: learn.adafruit.com . 一台Raspberry pi 這次使用較舊的Raspberry pi model B+ 萬一老鼠生氣被咬爛錢包也不太痛 . 一張
序:
最近用Microsoft的WebAPI寫了一支程式,因為連結中包含敏感資訊,所以要確保連線要被加密。但是由於程式只供內部系統使用,所以又未至於誇張到使用外部授權單位所發的憑證。看了一堆文章以後,發現IIS中 "自我簽署憑證" 跟OpenSSL兩種方法應該乎合我的需求,所以就開始設定囉。
什麼是 自我簽署憑證?
根據Microsoft的說法:"自我簽署憑證不是由憑證授權單位所發行。這些憑證可確保網站連線會被加密;但是,它們無法確保產生憑證之組織的身分識別。如果加密資料的能力比識別發行組織的能力還重要,則自我簽署憑證非常有用。"加密資料正正是我想要的東西 XD
怎樣做?
程式端又怎樣?
程式端也是很簡單,如果你使用的是WebClient,當存取自我簽署憑證應該會出現 "基礎連接已關閉: 無法為 SSL/TLS 安全通道建立信任關係。"或 "The underlying connection was closed: Could not establish trust relationship for SSL/TLS secure channel" 的錯誤訊息。
解決方法只需要在宣告WebClient以後加入
"ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };"
就可以解決了。這句意思是說關掉WebClient的預設防護機制,強列建議只適用於已知安全的網站/Web Service上。
希望可以幫助大家解決公司內部加密通訊的一些問題 :-)。有錯誤請指教!
最近用Microsoft的WebAPI寫了一支程式,因為連結中包含敏感資訊,所以要確保連線要被加密。但是由於程式只供內部系統使用,所以又未至於誇張到使用外部授權單位所發的憑證。看了一堆文章以後,發現IIS中 "自我簽署憑證" 跟OpenSSL兩種方法應該乎合我的需求,所以就開始設定囉。
什麼是 自我簽署憑證?
根據Microsoft的說法:"自我簽署憑證不是由憑證授權單位所發行。這些憑證可確保網站連線會被加密;但是,它們無法確保產生憑證之組織的身分識別。如果加密資料的能力比識別發行組織的能力還重要,則自我簽署憑證非常有用。"加密資料正正是我想要的東西 XD
怎樣做?
- IIS中自我簽署憑證:很多大大也發過相同的文章,我也不再次發明輪胎了;91大有很詳細的說明可以參考。
- 2015/12/30補充:
如果要自我簽署一張超過一年期限的憑證,例如10年的要怎麼辦?
1. 首先從微軟網站下載SelfSSL套件
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17275
2. 檢查IIS中是否已安裝以下元件,沒有的話要先裝回,不然會出現「Error opening metabase: 0x80040154」的錯誤
3. 用Administrator的權限打開cmd,輸入 selfssl /n:cn=www.mydomain.com /v:3650 /s:8 /k:2048
- /n:cn=www.mydomain.com - 此SSL是給www.mydomain.com. cn= (common name) 最好不要不填,不然將來要找這張憑證會很麻煩
- /v:3650 - 憑證有效日,單位為天數,例如憑證有效期為十年的話值為3650。
- /s:8 - IIS中安裝此憑證的Site編號。要查出Site的ID在cmd中可輸入%systemroot%\system32\inetsrv\APPCMD list site <site名稱>
- /k:2048 - 金匙長度,單位為bits.
4. 完成後可以打開IIS,在左邊樹狀目錄下點root,也就是伺服器圖示,然後按Server Certificates,應該可以看到剛新增的憑證,接下來Site就可以使用用這張自我簽署的憑證了。
- OpenSSL:利用Win32 OpenSSL這套工具產生憑證。
方法流程 - 首先產生一張Root CA的key 這篇教學
- 然後產生一張自我簽署的Root CA OpenSSL憑證
- 再利用上面的Root CA憑證產生Private Key 參考
- 再利用Private Key產生IIS可用的.pfx檔案格式 參考
- 例子
- set RANDFILE=c:\OpenSSL\.rnd
- set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg
- genrsa -out xxxxxxx.key 2048 -des3 xxxxxxx
- req -new -x509 -days 36135 -key xxxxxxx.key -out xxxxxxx.crt
程式端又怎樣?
程式端也是很簡單,如果你使用的是WebClient,當存取自我簽署憑證應該會出現 "基礎連接已關閉: 無法為 SSL/TLS 安全通道建立信任關係。"或 "The underlying connection was closed: Could not establish trust relationship for SSL/TLS secure channel" 的錯誤訊息。
解決方法只需要在宣告WebClient以後加入
"ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };"
就可以解決了。這句意思是說關掉WebClient的預設防護機制,強列建議只適用於已知安全的網站/Web Service上。
希望可以幫助大家解決公司內部加密通訊的一些問題 :-)。有錯誤請指教!
Comments
Post a Comment