- 金鑰一致、初始向量一致,加解密才會正確。
- 有時候忽略初始向量,只有金鑰一致也會正確,是因為加密端與解密端的預設初始向量恰好一致,例如都是零。
- 金鑰不一致,結果很難看。
- 金鑰一致,初始向量不一致,只會讓前八個位元組的解密結果錯誤,這個長度恰好就是初始向量的長度。
星期五, 10月 17, 2014
TripleDes 的 InitialVector
以前不知初始向量的作用為何,甚至認為它應該算是金鑰的一部份。原來:
星期四, 10月 09, 2014
搞定 OCSP
過去一直只仰賴 CRL,最近終於把 OCSP 也搞定。其實幾乎全靠著官網的一篇範例程式,加上對憑證鍊的一些粗淺認識,猜到實務上必須怎麼改才能符合自己的情境。
因為 Google App Engine 無法調整一些敏感的系統參數,所以整理的結果不能上雲端,有點可惜。為了怕以後又要花好多時間回想,這次就連測試程式也配套做好留存。
因為 Google App Engine 無法調整一些敏感的系統參數,所以整理的結果不能上雲端,有點可惜。為了怕以後又要花好多時間回想,這次就連測試程式也配套做好留存。
星期一, 9月 15, 2014
星期四, 7月 24, 2014
星期四, 6月 05, 2014
使用 MSDeploy 安裝憑證
依據這一篇文章,我們知道微軟對於憑證存放區至少分了八塊,再看到這一篇文章,另人失望地寫明「僅支援 My 存放區」。對此高度存疑的我,為了要信任一個懶惰又小氣的安全網站,不死心地嘗試,結果還是突破了 My 的限制,成功地將憑證放到「受信任的人」存放區,我想要訣可能是權限要夠,而且必須同時指定憑證的目標存放區與雜湊值,還有「盡信書(官網)不如無書(官網)」吧?
星期四, 4月 17, 2014
取得伺服器的加密憑證
openssl s_client -connect hostname:port 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > filename
星期二, 1月 28, 2014
星期五, 11月 15, 2013
首度測通非 Windows 平台經瀏覽器存取 SmartCard 憑證卡
以下的順序非常重要,顛倒了就會困難重重:
- Ubuntu 12.04 (32bit)
- PC/SC
- EZ100PU driver
- /etc/rc.local: /usr/sbin/pcscd&
- reboot
- card reader (with any? smart card) testing ok
- JRE
- libHicos_p11v1.so: [JRE_HOME]/lib/i386
- view html with signed java applet
由於上個月 Java 7u51 推出,不得不更新,否則瀏覽器(還是 Java 本身?)會抱怨版本太舊。而更新會有一些連帶要求:
- 標示所需的 Permissions 與 Codebase,可參考這個連結。
- 若是自簽憑證,請在 Java 的控制面板「安全」頁籤,管理憑證、匯入簽署用的憑證到「Signer CA」。千萬注意,不是「Trusted Certificates」!
星期二, 9月 10, 2013
signtool.exe error: 0x800703f0
在使用憑證卡簽署元件時,我曾多次遇到這個問題,看來是隨機且無奈的,不過最近總算比較清楚。由於微軟有個「Windows Root Certificate Program」,在計畫名單上的根憑證都是 On-Demand 自動安裝,但安裝的速度我們無法控制,因此很有可能在首次使用某種憑證時一直簽不過,但下次莫名其妙地又好了。如果要完全避免這個問題,可以事先手動安裝
- 信任根憑證
- 中繼憑證
- 個人憑證(簽署用憑證裝在此)
星期二, 7月 23, 2013
政府測試憑證的問題
從今年三月起,由於保證等級的問題,測試憑證管理中心必須獨立出來。但直到最近,發出來的測試憑證關於「發行單位」的憑證連結,仍然是指向舊的。寫信去反映,倒是很快(半天)得到答案:請自行下載。意思是不理我就對了。
錯的事情不改正,這就是我們的政府,或懷有國營事業心態的承商。也對啦,這又不是什麼大事,軍中都能整死人了,沒有體制只靠人治豈不多見?
錯的事情不改正,這就是我們的政府,或懷有國營事業心態的承商。也對啦,這又不是什麼大事,軍中都能整死人了,沒有體制只靠人治豈不多見?
星期三, 7月 17, 2013
安裝玉山銀行 WebATM 之後的 Mac 無法在 VM Guest 用讀卡機
玉山銀行的 WebATM 首先能在 Mac 使用晶片讀卡機,做得漂亮!可惜一但安裝,虛擬機器的讀卡機就會因「忙碌」而連不上,即便是關閉瀏覽器甚至重開機都無效。
究其原因,有一個「pcscd」持續地佔住讀卡機,即使原先不在,只要一插上就歸它管,而且這個程序殺了一秒鐘又會再起來,所以想「暫停」得費點工夫:
後來發現兩個缺點:一是因為找不到原來的 path 而無法恢復,二是在 Consloe 會有很多錯誤訊息,所以那只是個治標不治本的爛方法呀!依據錯誤訊息為線索,在我的機器上可以找到 /Library/LaunchDaemons/org.opensc.pcscd.plist 以及 /Library/LaunchDaemons/org.opensc.pcscd.autostart 兩個內容一模一樣的檔案,而且那個找不回來的 path 都出現了。所以想「暫停」的步驟可改成:
究其原因,有一個「pcscd」持續地佔住讀卡機,即使原先不在,只要一插上就歸它管,而且這個程序殺了一秒鐘又會再起來,所以想「暫停」得費點工夫:
- ps -ef | grep pcscd | grep -v grep | awk '{print $8 "\t" $2}' -> 取得 path 與 processId
- sudo chmod -x path
- sudo kill processId
- sudo chmod +x path
後來發現兩個缺點:一是因為找不到原來的 path 而無法恢復,二是在 Consloe 會有很多錯誤訊息,所以那只是個治標不治本的爛方法呀!依據錯誤訊息為線索,在我的機器上可以找到 /Library/LaunchDaemons/org.opensc.pcscd.plist 以及 /Library/LaunchDaemons/org.opensc.pcscd.autostart 兩個內容一模一樣的檔案,而且那個找不回來的 path 都出現了。所以想「暫停」的步驟可改成:
- sudo launchctl unload /Library/LaunchDaemons/org.opensc.pcscd.plist
- (可省略)sudo rm /Library/LaunchDaemons/org.opensc.pcscd.plist
- (可省略)sudo cp /Library/LaunchDaemons/org.opensc.pcscd.autostart /Library/LaunchDaemons/org.opensc.pcscd.plist
- sudo launchctl load /Library/LaunchDaemons/org.opensc.pcscd.plist
- (如果前一次用的是舊方法暫停,再加上)sudo chmod +x path
Yosemite 已不再使用 pcscd,所以招術失靈,請參考這篇。
星期一, 7月 15, 2013
信任一個懶惰又小氣的安全網站
要從標題這句話倒過來解釋:
接下來是安裝:此時可以關閉 Firefox,然後在該檔點兩下,「安裝憑證」到「使用者」或「電腦」的「受信任」,或「電腦」的「第三方」根憑證存放區,如此一來不論是透過 IE 或 Chrome 都已信任這個安全網站。至於 Firefox 請到「選項」、「進階」、「檢視憑證清單」、「憑證機構」、「匯入」上述的臨時檔案。
[2014/06/05]
到了最近比較新的作業系統,例如 Windows 8.1,可能要改放到「受信任的人」憑證存放區。
- 安全網站:傳輸過程經 SSL 安全通道加密。
- 小氣:或者可以說「節儉」,不願交保護費給 Verisign 這類大公司。自簽根憑證,再據以發行網站憑證。
- 懶惰:不積極宣導如何信任我的網站,也沒有提供散佈憑證的安全管道。
- 信任:安裝對方的自簽根憑證。
接下來是安裝:此時可以關閉 Firefox,然後在該檔點兩下,「安裝憑證」到「使用者」或「電腦」的「受信任」,或「電腦」的「第三方」根憑證存放區,如此一來不論是透過 IE 或 Chrome 都已信任這個安全網站。至於 Firefox 請到「選項」、「進階」、「檢視憑證清單」、「憑證機構」、「匯入」上述的臨時檔案。
[2014/06/05]
到了最近比較新的作業系統,例如 Windows 8.1,可能要改放到「受信任的人」憑證存放區。
星期三, 4月 03, 2013
Java keytool / jarsigner 藉由 PKCS#11 標準存取智慧卡上的憑證
首先需要智慧卡憑證本身的驅動程式(例如 C:\Windows\HiCOSPKCS11.dll),再來準備一個組態檔,姑且命名為 HiCOS.cfg,內容如下:
name = HiCOS
library = C:\Windows\HiCOSPKCS11.dll
執行 keytool 時帶這些參數:
keytool -providerClass sun.security.pkcs11.SunPKCS11 -providerArg HiCOS.cfg -keystore NONE -storetype PKCS11 -list
執行 jarsigner 也類似:
jarsigner -providerClass sun.security.pkcs11.SunPKCS11 -providerArg HiCOS.cfg -keystore NONE -storetype PKCS11 my.jar cert1
name = HiCOS
library = C:\Windows\HiCOSPKCS11.dll
執行 keytool 時帶這些參數:
keytool -providerClass sun.security.pkcs11.SunPKCS11 -providerArg HiCOS.cfg -keystore NONE -storetype PKCS11 -list
執行 jarsigner 也類似:
jarsigner -providerClass sun.security.pkcs11.SunPKCS11 -providerArg HiCOS.cfg -keystore NONE -storetype PKCS11 my.jar cert1
星期五, 3月 29, 2013
星期三, 3月 20, 2013
如何用自簽憑證測試 Tomcat / IIS SSL
首先是製作自簽憑證,最大眾化的工具是 Java keytool,指令如下(所有藍字的部份都可以依個別情況修改):
keytool -genkeypair -alias a -keystore store.pfx -storetype pkcs12 -keyalg RSA -dname "CN=www.xyz.com,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -storepass password
接著暫時先看 Tomcat 6.x,假設上述產出的 store.pfx 放在 conf 目錄下,再來是在 server.xml 設定以下段落:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="conf/store.pfx"
keystoreType="pkcs12" keystorePass="password"
truststoreFile="conf/store.pfx"
truststoreType="pkcs12" truststorePass="password"
clientAuth="false" sslProtocol="TLS" />
在用 IE 測試前,網際網路選項->內容->憑證->受信任的根憑證授權單位->匯入 store.pfx,接著開 Tomcat https 的網頁即可。
至於 IIS 7.5 則比較簡單,先在 IIS 管理員匯入伺服器憑證,當然還是 store.pfx,「允許匯出此憑證」需保持勾選;然後是 SSL 設定->繫結即可。
[2013/08/15 補充]
keytool -genkeypair -alias a -keystore store.pfx -storetype pkcs12 -keyalg RSA -dname "CN=www.xyz.com,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -storepass password
接著暫時先看 Tomcat 6.x,假設上述產出的 store.pfx 放在 conf 目錄下,再來是在 server.xml 設定以下段落:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="conf/store.pfx"
keystoreType="pkcs12" keystorePass="password"
truststoreFile="conf/store.pfx"
truststoreType="pkcs12" truststorePass="password"
clientAuth="false" sslProtocol="TLS" />
在用 IE 測試前,網際網路選項->內容->憑證->受信任的根憑證授權單位->匯入 store.pfx,接著開 Tomcat https 的網頁即可。
至於 IIS 7.5 則比較簡單,先在 IIS 管理員匯入伺服器憑證,當然還是 store.pfx,「允許匯出此憑證」需保持勾選;然後是 SSL 設定->繫結即可。
[2013/08/15 補充]
- 在 store 只有一個 key 的情況下,也就是上例,別名(alias)可有可無。
- CN= 的內容必須與提供外界訪問的網域名稱完全相符,在本機測試時,當然也可以是電腦名稱或是 localhost。
- -storetype pkcs12 如果省略的話,會是另一種 keytool 預設的格式,IIS 可能不支援,Tomcat 應該會支援,Jetty 只支援這種,不接受 pkcs12。
- keytool 預設格式的 store 即使附檔名一樣為 pfx,還是不能在 IE 匯入憑證,但我們可以用 keytool -exportcert 輕易地抽出憑證(不含金鑰)到另一個檔案,再匯入 IE。
星期四, 2月 07, 2013
星期四, 1月 24, 2013
用自然人憑證為程式簽署
憑證相關的工作搞了許久,之前曾掙扎著要不要花錢買個憑證來簽自己想公開的程式。最近靈光一閃,自然就生出這樣的主意,不過沒想到早就有先知了,請參考
http://kmmr.pixnet.net/blog/post/33086772
但還是有一點小小改進:由於我的 signtool.exe 並沒有 signwizard 這個指令,首先關於雙憑證選擇的問題,為了唯一性,必須選 /sha1 再敲一長串雜湊值,有點麻煩。後來摸索出一種做法,先到憑證存放區把加解密用的憑證刪掉,在下指令的時候選 /n 這個參數,帶上憑證主旨,再靠 /a 這個參數讓工具自行判斷最佳值即可。
再來就是像我這種大公司裏的小角色,拿到工商憑證可不容易,試了「測試憑證」也是可以的,不過一定要 2048bits,原因暫時沒有深究。
如果要把這招搬到 Silverlight,效果似乎比較不理想,因為還要補機碼、佈憑證,甚至可以包在 ActiveX 的其他程式庫都要再額外設法放到用戶的電腦上。
順手查了一下目前的作業系統佔比,沒有內建 .NET Framework 的 Windows XP 還有近四成,大概還得再過一兩年才能不為此頭痛。
http://kmmr.pixnet.net/blog/post/33086772
但還是有一點小小改進:由於我的 signtool.exe 並沒有 signwizard 這個指令,首先關於雙憑證選擇的問題,為了唯一性,必須選 /sha1 再敲一長串雜湊值,有點麻煩。後來摸索出一種做法
再來就是像我這種大公司裏的小角色,拿到工商憑證可不容易,試了「測試憑證」也是可以的,不過一定要 2048bits,原因暫時沒有深究。
如果要把這招搬到 Silverlight,效果似乎比較不理想,因為還要補機碼、佈憑證,甚至可以包在 ActiveX 的其他程式庫都要再額外設法放到用戶的電腦上。
順手查了一下目前的作業系統佔比,沒有內建 .NET Framework 的 Windows XP 還有近四成,大概還得再過一兩年才能不為此頭痛。
星期一, 1月 07, 2013
與政府憑證管理中心交手
- 2012/03/09
上網填了一張諮詢單(1010302350),指出 HiCOS PKCS#11 2.1.6 + 1024 bits 測試卡簽章會有多了後半段垃圾的問題。 - 2012/03/15
獲得回應,將在 2.1.7 版改善,但請自行留意網站上釋出的新版。 - 2012/04/23
一直沒看到網站上有新版釋出,再去函詢問,得到另一個諮詢單號(1010404529)。 - 2012/05/07
又得到另一個諮詢單號(1010502127),至於什麼事都忘了。 - 2012/05/09
2.1.7 版釋出,也有郵件通知。 - 2012/05/28
上網填了一張諮詢單(1010510768),指出 HiCOS PKCS#11 2.1.7 + 1024 bits 測試卡解密失敗。當天下午就接到電話告知,轉由某單位處理,網站上此單號直接結案。當天下班前,被轉單位來信要求,用 HiCOS 卡片環境檢測工具確認卡片是否正常?十二分鐘後,回覆檢測一切正常的電子郵件。 - 2012/05/31
對方表示查不出問題,要求提供測試程式。 - 2012/06/01
提供測試程式與紀錄,對方終於認同這個問題,並表示將釋出新版解決。 - 2012/09/27
已過了近四個月還沒見到新版,又發現一個問題,是關於兩張卡一起使用的,只好再去函詢問。當天接獲回覆,新版預計於十月底釋出,並要求新的測試程式。當晚,寄出測試程式。 - 2012/10/25
收到「預計釋出的新版」,希望我測試確認無誤。當天回信確認之前提報的問題不再。 - 2013/01/07
又過了兩個多月還沒見到新版釋出,再提報未上市的 HiCOS PKCS#11 2.1.8 解密後會有多了一大段填補零的問題,並直接提供測試程式。 - 2013/01/11
提報一個問題:在一部電腦上同時接兩個讀卡機,插入 1024 bits 與 2048 bits 的測試卡各一,每次都輸入正確的 Pincode,但可能因憑證卡的位置對調讓登入成功或失敗,並直接提供測試程式。 - 2013/01/11
確認一個問題:若 1024 bits 測試憑證上的公、私鑰標籤都不是空白(預設值),雖然申請測試憑證看來沒問題,但無法簽章或解密。原因是在申請測試憑證時,憑證管理中心會尋找卡上可用的金鑰對綁定新憑證,但在上述狀況下並無法挑選到可用的金鑰對,即便如此,該網站還是顯示申請成功。這個不打算回報了,吃力不討好。 - 2013/03/04
收到「預計釋出的新版」,希望我測試確認無誤。當天回信確認之前提報的問題不再。
訂閱:
文章 (Atom)