故事是這樣子的,小弟用 Rainlendar + GCALDaemon + Windows排程 同步 Google 行事曆
其實 Rainlendar Pro 就有同步功能,€9.95
GCALDaemon 目前在 sourceforge 已經找不到了…Orz
還好 Github 還有 LancelotLiu Fork 的版本 GCALDaemon
原本用 OracleJDK 都順順同步,直到前陣子換了 OpenJDK 在同步時卻噴出以下錯誤
1 | 2018-11-03 11:06:25 | ERROR | GCalUtilitiesV3 | Unable to load calendar! |
通常這錯誤是憑證認證上發生問題,經過比較以後發現 OpenJDK 的 cacerts 確實少了 Google 憑證鏈的 Root CA憑證 (根憑證)
匯出 根憑證
Chrome 連至 https://www.google.com/ > 點選網址左邊鎖頭 > 憑證
憑證路徑 > 點選最上層根憑證 (即 Google Trust Services - GlobalSign Root CA-R2) > 檢視憑證
詳細資料 > 複製到檔案 接著按照憑證匯出精靈一步一步匯出憑證,這邊取名為
globalsignr2ca.cer
匯入 根憑證
方法A: 使用 Java keytool
keytool -import -alias globalsignr2ca -keystore %JAVA_HOME%/jre/lib/security/cacerts -file globalsignr2ca.cer
方法B: 使用 KeyStore Explorer
- 開啟 KeyStore Explorer,並點選 “Open an existing KeyStore”,選擇要匯入的 cacerts 若要修改 JAVA_HOME 的可以直接點選 “Open the CA Certificates KeyStore”
- 輸入 cacerts 密碼,預設應為
changeit
- 點選 “Import Trusted Certificate” 選擇剛剛匯出的根憑證
- KeyStore 顯示憑證內容,確認無誤後按 OK
- KeyStore 詢問是否接受此為信賴憑證,點選 是
- 要求輸入 alias,輸入
globalsignr2ca
再次執行 GCALDaemon 確認可以正常同步了 🎉