2020年3月13日 星期五

[macOS] GnuPG 筆記 - key generator / import / export / public key / private key

最近在跟大公司討論 DRM 事宜,要求信件採用 PGP 加密保護。筆記一下環境建置:

GnuPG 安裝:
  • 從 https://gnupg.org/download/ 到 GnuPG for OS X 區
  • 下載 GnuPG-2.2.19.dmg ,安裝後在 /usr/local/gnupg-2.2/
  • 推論環境變數可能就能找到 gpg2 ,或是用 /usr/local/gnupg-2.2/bin/gpg2
產生 GPG Keys(依照對方的使用設定):

$ gpg2 --full-generate-key
gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
  (14) Existing key from card
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: HelloWorld
Email address: group@HelloWorld.com
Comment:
You selected this USER-ID:
    "HelloWorld <group@HelloWorld.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.


Passphrase: HelloWorld!!


We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key ####### marked as ultimately trusted
gpg: directory '/path/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/home/.gnupg/openpgp-revocs.d/#1#2#3#4#5#6#7#8#9#0.rev'
public and secret key created and signed.

pub   rsa2048 2020-03-13 [SC]
      #1#2#3#4#5#6#7#8#9#0
uid                      HelloWorld <group@HelloWorld.com>
sub   rsa2048 2020-03-13 [E]


匯出 Public Key 靠這招:

$ gpg2 --armor --export "HelloWorld <group@HelloWorld.com>" > your-pubkey.asc

$ gpg2 --armor --export "#1#2#3#4#5#6#7#8#9#0" > your-pubkey.asc


匯出 private key:

$ gpg2 --export-secret-keys "HelloWorld <group@HelloWorld.com>" > your-private-key.asc

$ gpg2 --export-secret-keys "#1#2#3#4#5#6#7#8#9#0" > your-private-key.asc


列出目前的 keys:

$ gpg2 --list-keys
/path/.gnupg/pubring.kbx
------------------------------------
pub   rsa2048 2020-03-13 [SC]
      #1#2#3#4#5#6#7#8#9#0
uid           [ unknown] HelloWorld <group@HelloWorld.com>
sub   rsa2048 2020-03-13 [E]

$ gpg2 --list-secret-keys
/path/.gnupg/pubring.kbx
------------------------------------
sec   rsa2048 2020-03-13 [SC]
      #1#2#3#4#5#6#7#8#9#0
uid           [unknown] HelloWorld <group@HelloWorld.com>
ssb   rsa2048 2020-03-13 [E]


刪除 Keys,若該 key 組合內有 secret key ,需要先刪除 secret key  :

$ gpg2 --delete-secret-keys "#1#2#3#4#5#6#7#8#9#0"

刪除 public key:

$ gpg2 --delete-keys "#1#2#3#4#5#6#7#8#9#0"

匯入 Keys:

$ gpg2 --import your-private-key.asc
$ gpg2 --import your-pubkey.asc


使用 Keys 做加密,產生 *.gpg 檔案:

$ cat /tmp/text
hello world
$ gpg2 -r "#1#2#3#4#5#6#7#8#9#0" -e /tmp/text
$ ls /tmp/text.gpg
/tmp/text.gpg


使用 Keys 對 *.gpg 解密,若沒有 private key 獲得到:

$ gpg2 -r "#1#2#3#4#5#6#7#8#9#0" -d /tmp/text.gpg
gpg: encrypted with 2048-bit RSA key, ID ######, created 2020-03-13
      "HelloWorld <group@HelloWorld.com>"
gpg: decryption failed: No secret key


有 private key 就會正常解出來:

$ gpg2 -r "#1#2#3#4#5#6#7#8#9#0" -d /tmp/text.gpg
gpg: encrypted with 2048-bit RSA key, ID #, created 2020-03-13
      "HelloWorld <group@HelloWorld.com>"
hello world

2020年2月27日 星期四

kobo desktop 下載 , kobo app download @ macOS / Windows

昨晚跟在 FB 工作的學弟通個電話,聊了一陣子,被推坑看了一本 2017 年再版的書。找了一陣子,實體書都賣光了,只剩 KOBO 有電子書在賣,恰好當年 Kobo 在台灣推廣時,一直說第一次購書可以折 100 元,當時 NETFLIX 給力很夯,只是我最後買了實體書 XD 因此,那一百元折價一直沒用,就這樣很快地刷卡。

接著下一刻就囧了,大家都說可以用電腦看,找了很久台灣官網上沒有下載連結,輾轉得知改用美版網站就有了!
  • https://www.kobo.com/us/en/p/desktop 下方有 Download Now
    • https://kbdownload1-a.akamaihd.net/desktop/kobodesktop/kobosetup.dmg
    • https://kbdownload1-a.akamaihd.net/desktop/kobodesktop/kobosetup.exe
最近共用了 Kindle 看書、豆瓣閱讀 Mobile app 跟 Web 觀看付費書籍,接下來試試 Kobo 囉

2020年2月19日 星期三

[Linux] 在 Ubuntu 重編 git 處理 error: gnutls_handshake() failed: A TLS fatal alert has been received @ Ubuntu 12.04

當使用 git clone https:// 來源時,會出現以下錯誤訊息:

error: gnutls_handshake() failed: A TLS fatal alert has been received. while accessing https://service/project.git/info/refs
fatal: HTTP request failed

解法就是重編 git (細節似乎是 gnutls 問題)

流程:
  1. 到 https://github.com/git/git/releases 下載 git 程式碼(此例用 v2.25.1)
  2. 安裝 libcurl4-openssl-dev libexpat1-dev 等編譯環境
  3. 編他:./configure --with-expat --with-curl --with-openssl
連續動作:

$ dpkg -l | grep gnutls
ii  libcurl3-gnutls                             7.22.0-3ubuntu4.17                      Multi-protocol file transfer library (GnuTLS)
ii  libgnutls-dev                               2.12.14-5ubuntu3.14                     GNU TLS library - development files
ii  libgnutls-openssl27                         2.12.14-5ubuntu3.14                     GNU TLS library - OpenSSL wrapper
ii  libgnutls26                                 2.12.14-5ubuntu3.14                     GNU TLS library - runtime library
ii  libgnutls26:i386                            2.12.14-5ubuntu3.14                     GNU TLS library - runtime library
ii  libgnutlsxx27                               2.12.14-5ubuntu3.14                     GNU TLS library - C++ runtime library
ii  libneon27-gnutls                            0.29.6-1ubuntu1                         HTTP and WebDAV client library (GnuTLS enabled)
$ sudo apt-get install libcurl4-openssl-dev tcl-dev libexpat1-dev
$ wget https://github.com/git/git/archive/v2.25.1.tar.gz
$ tar -xvf v2.25.1.tar.gz && cd git-v2.25.1
$ make configure
$ ./configure --with-expat --with-curl --with-openssl
$ make test
$ sudo make install


其中 make test 會跑一陣子,可以選擇執行 XD

2020年2月8日 星期六

[macOS] 替 Macbook Pro 2015 13寸 升級為 1TB SSD / MacBook Pro (Retina, 13-inch, Early 2015) / MacBookPro12,1

MacbookProUpgradeSSD01

前陣子 幫 Macbook Pro 更換膨脹電池 時,意外發現這台 2015 年的 Macbook Pro 可以自行換 SSD,瞬間心花怒放 XD 實在是當年花了不少錢買了 256GB 的 Macbook Pro ,接著近半年想要編譯 Chromium / CEF 時,常常移來移去就是為了多生出個 40GB,更別說系統槽光 Xcode 要更新時必須砍掉 Xcode 重新安裝才行,不能當下直接更新成新版。就這樣,評估一下大家換 SSD 的心得就衝了。

首先 Apple SSD 是客製化的接頭,需要買一張轉卡。其次則是要買大廠 SSD 才不會踩到 macOS 深度睡眠的問題。於是乎就賭了一下,在蝦皮買了 250 元左右的轉卡(網路上也有人賣到 500),接著採購 INTEL 660p 1TB 的 SSD ,真是奢侈的空間啊!就這樣大概 4000 左右就完成更新了!而選擇買兩百多的轉卡,是因為覺得上頭沒有 IC?應當只是接頭轉換,再加上很多討論文就說買兩百多即可。而買 INTEL 660p 1TB (讀1800M/寫1800M) 而不買金士頓 A2000 1TB (讀2200M/寫2000M) 是覺得筆電已經五年前了,應當讀寫效率沒這麼好不需多追求多好,反正再過幾年說不定又換了筆電了?

而經歷過拆電池的洗禮,拆裝 SSD 變得十分簡單,反而出現的兩段插曲!

MacbookProUpgradeSSD03

MacbookProUpgradeSSD04

一則是 macOS USB 安裝碟出包,用去年做的 macOS USB 安裝碟開機會看到 macOS 多國語當機畫面,當下還以為硬體不合。後來換了一個 USB 重新製作就搞定

另一個則是 iCloud 同步問題,用了新硬碟後立刻重灌完畢,重灌後發現 "桌面與文件檔案夾" 並沒有自動同步,就是連目錄、檔案都沒看到任何蹤影,且連續兩天沒解決。試了很多怪招,像是回到舊硬碟關掉 iCloud、或是網路上常見的刪除 iCloud 帳號資料重新開機等等。後來覺得照片和 Safari 書籤/密碼都有同步,那就擺在個幾晚,果真第三天起床後就看到了!估計是 iCloud 的桌面被我擺太多東西,所以要花很多時間初始化同步環境。

當身邊就多了一隻 256GB SSD 時,覺得晾在很浪費,躊躇著到底要不要花錢買專用的外接盒,研究完想了兩天,牙一咬就下單了,後來得知連貴鬆鬆的 OWC-MAC Envoy Pro 外接盒不一定支援,例如 Apple 原廠 SSD 若是 Toshiba 就不行,有需要的話,建議可以先多問一下賣家。

MacbookProUpgradeSSD02

MacbookProUpgradeSSD05

看來年初繳的3C稅非常恐怖:
  • 轉卡含運: 250元
  • Intel 660p 1TB: 3900元
  • OWC-MAC Envoy Pro 外接盒: 3300元
再加上處理膨脹的電池問題,不多不少就剛好破萬 Orz

除了轉卡只能在蝦皮等非官方地方買外,其餘的則盡可能在知名網路購物平台購買,主要是東西很貴,不小心出問題很麻煩。

而除了 OWC 外,創建也有出一堆 Macbook SSD 升級包,像是升級包內的 SSD 不用轉卡,直接是 Apple 的形狀(?),但...真的貴不少!大概貴一倍吧,像是升級包 7000 元(含 SSD + 外接盒) 只能擁有 240GB 的空間,若是 1TB 可是要價 1萬五了! 可參考 JetDrive 855 關鍵字或是 PCHOME Apple專用★SSD ,真是商機無限啊。

最後 又逢全球疫情 "遠端工作" 的時機興起,剛好擴充完的筆電環境可以無憂無慮在家工作了 :P 

2020年2月1日 星期六

[macOS] 替 Macbook Pro 2015 13寸 換電池 / MacBook Pro (Retina, 13-inch, Early 2015) / MacBookPro12,1 / A1582

Retina, 13-inch, early 2015 換電池 A1582

我也忘了多久,可能有半年以上,筆電一直蓋不緊。昨晚不知哪根筋不對,仔細觀摩了一下,推論應當是電池膨脹,沒多久隨意查到 A1582 這個電池型號,就在 PCHOME 24小時下單,雖說 PCHOME 24 標記在 "副廠-其他牌子" 有點抖,還是下手了。果真拿到貨看了一下,有些線的外觀有點兒粗糙,推論應當還不影響什麼,至少裝完從系統資訊可以看到:

  電量資訊:
  剩餘電量(mAh): 6515
  已充飽電:
  正在充電:
  總充電容量(mAh): 6581
  健康狀態資訊:
  循環使用次數: 0
  狀態: 正常
而拆電池的心得:
需要勇氣跟一支尺!因為電池是被黏著的,要拆必須想辦法扳起來,尺是個好幫手。
購買來的電池,通常都會附上特殊的五跟六螺絲,用來拆背蓋以及裡頭的螺絲。

Retina, 13-inch, early 2015 換電池 A1582

個人龜毛了點,覺得不美觀的地方:

Retina, 13-inch, early 2015 換電池 A1582

接著,拆完筆電背蓋,可以看到膨脹的景觀:

Retina, 13-inch, early 2015 換電池 A1582

開始動工,先把電池連接線拔起來:

Retina, 13-inch, early 2015 換電池 A1582

再把中間的連接線處的螺絲蓋保護移除,並把中間接線拔掉:

Retina, 13-inch, early 2015 換電池 A1582

最後則是右邊還有個螺絲要移除:

Retina, 13-inch, early 2015 換電池 A1582

接著就努力把電池拔起來吧!我是先靠著膨脹的電池空隙,先把左右兩邊的電池靠著尺插入後,左右旋轉尺來小幅度處理:

Retina, 13-inch, early 2015 換電池 A1582

Retina, 13-inch, early 2015 換電池 A1582

拆到只剩中間,就真的比較難拆,有那種要很使勁的那種勇氣,因為中間黏的面積也大:

Retina, 13-inch, early 2015 換電池 A1582

Retina, 13-inch, early 2015 換電池 A1582

接著,就要嘗試連接新的電池了!由於賣家都說,建議驗證完電池沒問題再粘上去,但實務上新的電池有透明板子在保護,其實無法先擺入再看看,我最後是先讓電池稍微在那個位置處連上連接好,再用筆電背蓋護一下來開機驗身,驗完立馬關機,轉過來,在拔掉電池連接線。

Retina, 13-inch, early 2015 換電池 A1582

Retina, 13-inch, early 2015 換電池 A1582

如此,就可以撤掉新電池的透明背板等保護,喬好位置後再讓他好好黏好:

Retina, 13-inch, early 2015 換電池 A1582

收工!可以把舊電池回收了

Retina, 13-inch, early 2015 換電池 A1582