2020年3月29日 星期日

在Synology NAS docker上搭建bitwarden 密碼管理軟體


尋找Open source, self host的密碼管理軟體
而且要能跨平台
最後找到bitwarden https://bitwarden.com/
看官網幾乎所有平台都有支援
iOS上還可以整合到自動填寫密碼, 取代iCloud keychain
所以就想說自己裝起來, 試用看看


網路環境
NAS本機IP : 192.168.0.88

目標, 利用docker跑bitwarden server, port 8888

Ref :
https://www.jkg.tw/p1984/

請參考上面連結, 下面是文字記述
1. DMS 套件中心 > 安裝docker套件
2. 開啟docker
3. docker > 倉庫伺服器  > 搜尋"bitwarden" > 下載 "bitwardenrs/server" 這個image
4. docker > 映像檔 > 選擇剛剛下載的bitwardenrs/server > 佈署 > 進階設定
    a. 進階設定 > 勾選 自動重啟
    b. 儲存空間 > 新增資料夾
        /docker/bitwarden > 掛載路徑 /data
    c. 網路 > "不要選" "不要選" "不要選" 與docker host使用相同網路
d. 連接Port設定
    本機 3012 <> 容器 3012
本機 8888 <> 容器 80
    e. 設定完成, 點選套用, 並打勾設定完成後啟動
    f. docker > 容器, 看看剛剛設定的有沒有跑起來了
 5. 在瀏覽器網址列輸入 http://192.168.0.88:8888
    這時候我用chrome可以開啟頁面
開始註冊帳號的時候, 都填完了, 卻無法按下送出
<<-----------------------------

後來發現, 只要改用其他瀏覽器(不要用chrome)就可以正常登入了
所以請在區網內, 用手機的Safari, 直接打 http://192.168.0.88:8888就可以正常了
後面的動作, 關於SSL key可以全都不要做

因為, 就算後面這樣亂搞後, 電腦(Win7)上的 bitwarden client端軟體也會無法登入

與其花這麼多功, 而且很有可能是錯的
反正我原本就想說只用在內網環境, 手機VPN回來同步

所以就做到這邊即可

目前狀況, 都在內網
iOS, 可以login bitwarden web server
iOS, bitwarden app可以login
Windows, chrome bitwarden plugin, 可以login
Windows, bitwarden app, 可以login
Windows, chrome無法無法無法login bitwarden web

除了用瀏覽器直接敲ip連線web的作法外
其他(iOS app, Windows app, chrome plugin)   都要記得設定自我託管環境URL
   >>開啟App, 主畫面, 左上角有個齒輪
   >>選進去後, 設定自我託管環境URL
   >>http://192.168.0.88:8888

<<------------------------------
Google後, 才發現原來應該是
chrome在http下有些API不能用
   Chrome will not allow the use of crypto APIs without https
   https://github.com/bitwarden/server/issues/592

加上bitwarde, 一定要有https下, 才能正常工作
所以, 這時候還要設定SSL憑證, 不然無法用Chrome登入
Ref :
https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-HTTPS
https://github.com/dani-garcia/bitwarden_rs/wiki/Private-CA-and-self-signed-certs-that-work-with-Chrome
https://blog.miniasp.com/post/2019/02/25/Creating-Self-signed-Certificate-using-OpenSSL

由於我沒有domain, 加上也只打算在local端跑server
手機在外真的要sync的話, 就VPN回來再做sync
所以選擇用self-signed-certs

--- 下面開始都是亂搞, 小弟我對憑證這塊完全不懂, 所以就是囫圇吞棗 ---
--- 請自行尋找比較正規的做法 ---
--- 如果可以提供比較正確的做法給我參考, 那就更感謝了 ---
1. Create CA key
   openssl genpkey -algorithm RSA -aes128 -out private-ca.key -outform PEM -pkeyopt rsa_keygen_bits:2048

   Enter PEM pass phrase:
   這時候要輸入密碼, 請自己設定, 但是要記好, 後面會用到

   Enter PEM pass phrase:
   再輸入一次密碼

2. Create CA certificate:
   openssl req -x509 -new -nodes -sha256 -days 3650 -key private-ca.key -out self-signed-ca-cert.crt
 
   Enter pass phrase for private-ca.key:
   輸入上面的密碼
 
   後面會有一堆問題, 我看網路上大家是說都沒關係
   但是有一欄, 我有填一個local domain name, 192.168.0.88
   Common Name (e.g. server FQDN or YOUR name) []:192.168.0.88
 
   Country Name (2 letter code) [AU]:
   State or Province Name (full name) [Some-State]:
   Locality Name (eg, city) []:
   Organization Name (eg, company) [Internet Widgits Pty Ltd]:
   Organizational Unit Name (eg, section) []:
   Common Name (e.g. server FQDN or YOUR name) []:192.168.0.88
   Email Address []:

3. Create a bitwarden key:
   openssl genpkey -algorithm RSA -out bitwarden.key -outform PEM -pkeyopt rsa_keygen_bits:2048

4. Create the bitwarden certificate request file
   openssl req -new -key bitwarden.key -out bitwarden.csr
 
5. Create a text file bitwarden.ext
   建立一個文字檔-bitwarden.ext, 內容直接下面貼進去即可(DNS記得換一下)
   authorityKeyIdentifier=keyid,issuer
   basicConstraints=CA:FALSE
   keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
   extendedKeyUsage = serverAuth
   subjectAltName = @alt_names

   [alt_names]
   DNS.1 = 192.168.0.88
   DNS.2 = bitwarden.local

6. Create the bitwarden certificate, signed from the root CA:
   openssl x509 -req -in bitwarden.csr -CA self-signed-ca-cert.crt -CAkey private-ca.key -CAcreateserial -out bitwarden.crt -days 365 -sha256 -extfile bitwarden.ext

7. 把產生出來bitwarden.crt, bitwarden.key丟到NAS上的
   docker/bitwarden/ssl

8. 到NAS > docker > 容器 > bitwardenrs_srv > 編輯
   儲存空間, 新增docker/bitwarden/ssl 掛載路徑 /ssl
   環境設定, 新增ROCKET_TLS, 數值{certs="/ssl/bitwarden.crt",key="/ssl/bitwarden.key"}
 
9. 儲存, 啟動這個容器

10. chrome上輸入 https://192.168.0.88:8888
   會顯示不受信任, 往下捲會有一個"繼續前往"
   點下去就好了

11. 先在Chrome上註冊一個帳號吧

手機iOS端,

1. 去App Store搜尋bitwarde, 安裝
2. 開啟App, 主畫面, 左上角有個齒輪
   選進去後, 設定自我託管環境URL
   https://192.168.0.88:8888
3. 這時後登入會顯示錯誤, 需要安裝剛剛的CA certificate
4. 回到電腦端, 把剛剛產生的self-signed-ca-cert.crt用email寄給自己
5. 手機收信, 儲存附件self-signed-ca-cert.crt到iphone上
6. iphone > 檔案 > 找剛剛的self-signed-ca-cert.crt, 按一下
   會出現"已下載描述擋"
7. iphone > 設定 > 描述檔 > 192.168.0.88 > 安裝 > 安裝
8. iphone > 設定 > 一般 > 關於本機 > 憑證信任設定 > 192.168.0.88 > 啟用
9. iphone > App bitwarde, 應該就可以登入了
10.iphone > 設定 > 密碼與帳號 > 自動填寫密碼 > Bitwarden

剩下就開始試用看看好不好用了

沒有留言:

張貼留言

在Raspberry Pi 2B上跑Docker, AdguardHome, Bitwarden, RPi-Monitor

在Raspberry Pi 2B上跑Docker, AdguardHome, Bitwarden, RPi-Monitor 請先參考前置準備工作 安裝Raspberry Pi 2B 來跑docker 前置準備 安全性考量, 移除預設pi帳號 Ref :     h...