Date: Mon, 3 Jul 2017 21:03:01 +0200 From: Matthias Apitz <guru@unixarea.de> To: freebsd-questions@freebsd.org Subject: Re: browserpass addon for FF Message-ID: <20170703190301.GA2963@c720-r314251> In-Reply-To: <20170703142356.GA18729@venera> References: <20170703121324.GA26289@sh4-5.1blu.de> <20170703142356.GA18729@venera>
next in thread | previous in thread | raw e-mail | index | archive | help
--AhhlLboLdkugWU4S Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable At the end of the day, I have now all the pieces together and using GnuPG encrypted credential with FF works really fine; the credentials are stored as a tree in the file system and access requires the 6 digit PIN to unlock the secret key on the GnuPG-card. There is no way to use the credentials meanwhile the laptop and GnuPG-card are not stolen together *and* connected, i.e. the card is PIN unlocked. I'm attaching a small how-to if someone else wants to wade through about password-storage and browserpass. Thanks for all helping hints. matthias How to use GnuPG-card with Firefox and credentials We need as root some more ports: # cd /usr/ports/sysutils/password-store # make install clean # cd /usr/ports/lang/go # make install clean The 'fdescfs' must be mounted: # mount -t fdescfs null /dev/fd and/or inserted into /etc/fstab as: fdescfs /dev/fd fdescfs rw 0 0 If 'fdescfs' is not mounted, the command 'pass init ...' will fail with: $ pass init foo Password store initialized for foo /usr/local/bin/pass: l=C3=ADnea 84: /dev/fd/62: No such file or directory I've used to init the ~/.password-store (note 'guru@unixarea.de' is not an email addr, but something which identifies the GnuPG secret key stored on the GnuPG-card): $ pass init guru@unixarea.de Which gives: $ ls -la ~/.password-store total 48 drwx------ 3 guru wheel 512 3 jul. 08:19 . drwxr-xr-x 248 guru wheel 33792 3 jul. 08:12 .. -rw------- 1 guru wheel 17 3 jul. 08:17 .gpg-id $ cat ~/.password-store/.gpg-id guru@unixarea.de Now we can insert userid/passwords into the tree of the ~/.password-store; = note the syntax Business/cheese-whiz-factory where 'Business' is some domain and 'cheese-whiz-factory' the userid in this: $ pass insert Business/cheese-whiz-factory Enter password for Business/cheese-whiz-factory: cheese Retype password for Business/cheese-whiz-factory: cheese $ pass Password Store =E2=94=94=E2=94=80=E2=94=80 Business =E2=94=94=E2=94=80=E2=94=80 cheese-whiz-factory.gpg $ pass Business/cheese-whiz-factory # this will ask for the PIN to unlock = the GnuPG-card cheese The file 'Business/cheese-whiz-factory.gpg' contains the password 'cheese' but GnuPG encrypted: $ file ~/.password-store/Business/cheese-whiz-factory.gpg=20 /home/guru/.password-store/Business/cheese-whiz-factory.gpg: PGP RSA encryp= ted session key - keyid: B6ECF161 C3A6C925 RSA (Encrypt or Sign) 4096b . The 2nd part now is a bit tricky: the 'browserpass' mozialla add-on: I followed a hint from from Boris Samorodov <bsam@passap.ru> how to install= 'browserpass' directly from github.com: =20 $ cd $ go get -u github.com/dannyvankooten/browserpass $ GOPATH=3D/home/guru/go export GOPATH $ cd $GOPATH/src/github.com/dannyvankooten/browserpass/cmd/browserpass $ go build [*] $ ls -l total 2884 -rwxr-xr-x 1 guru wheel 2901409 3 jul. 13:02 browserpass -rw-r--r-- 1 guru wheel 357 3 jul. 13:00 main.go $ PATH=3D$PATH:$GOPATH/bin $ go install $ ls -l $GOPATH/bin total 2880 -rwxr-xr-x 1 guru wheel 2901409 3 jul. 13:03 browserpass so far so good, but: Now the installation requires the integration with the browser through some script 'install.sh'; I looked for it and did: $ bash src/github.com/dannyvankooten/browserpass/install.sh Select your browser: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D 1) Chrome 2) Chromium 3) Firefox 4) Vivaldi 1-4: 3 Installing Firefox host config cp: /home/guru/go/src/github.com/dannyvankooten/browserpass/firefox-host.js= on: No such file or directory Hmmm, where the hell is the *.json file we need? $ find ~/go -name *.json =2E/src/github.com/dannyvankooten/browserpass/chrome/host.json =2E/src/github.com/dannyvankooten/browserpass/chrome/manifest.json =2E/src/github.com/dannyvankooten/browserpass/chrome/policy.json =2E/src/github.com/dannyvankooten/browserpass/firefox/host.json =2E/src/github.com/dannyvankooten/browserpass/firefox/manifest.json =2E/src/github.com/dannyvankooten/browserpass/package.json =2E/src/github.com/dannyvankooten/browserpass/vendor/vendor.json I fixed the above install.sh and copied over=20 $ cp src/github.com/dannyvankooten/browserpass/firefox/host.json /home/guru= /.mozilla/native-messaging-hosts/com.dannyvankooten.browserpass.json and modified the 'path' in it to show: $ cat /home/guru/.mozilla/native-messaging-hosts/com.dannyvankooten.browser= pass.json { "name": "com.dannyvankooten.browserpass", "description": "Browserpass binary for the Firefox extension", "path": "/home/guru/go/src/github.com/dannyvankooten/browserpass/cmd/brow= serpass/browserpass", "type": "stdio", "allowed_extensions": [ "browserpass@dannyvankooten.com" ] } XXX: Maybe the exec /home/guru/go/src/github.com/dannyvankooten/browserpass/cmd/= browserpass/browserpass should be copied to some better place; Now install the 'browserpass' add-on from: https://addons.mozilla.org/en-US/firefox/addon/browserpass/ = =20 (one must fake the User-agent string to, for example, Ubuntu) this made the 'browserpass' add-on working in general, but the command chain needs to know where the GNUPGHOME is, in my case GNUPGHOME=3D/home/guru/.gn= upg-ccid, because firefox starts /usr/local/bin/pass, which itself starts /usr/local/= bin/gpg2 and this needs the correct GNUPGHOME env value; so I modified the FF icon t= o launch GNUPGHOME=3D/home/guru/.gnupg-ccid firefox %U some more hints: - I have not found a way to enter new user/password from the browser; I alw= ays do it from cmdline with $ pass insert domain.foo/username - if the 'username' contains blanks (or other shell meta chars), they must = escaped as: $ pass insert 'domain.foo/Apitz Matthias' - if there is no 'username', but only the password, just use $ pass insert domain.foo or $ pass insert 192.168.2.1 - XXX still todo: convert all old FF-credentials to the password-store (whi= ch is relatively easy: unload them to a file and build 'pass insert ....' comma= nds; once done this, remove the credentials in FF; really! they are unsave the= re; --=20 Matthias Apitz, =E2=9C=89 guru@unixarea.de, =E2=8C=82 http://www.unixarea.d= e/ =E2=98=8E +49-176-38902045 Public GnuPG key: http://www.unixarea.de/key.pub 8. Mai 1945: Wer nicht feiert hat den Krieg verloren. 8 de mayo de 1945: Quien no festeja perdi=C3=B3 la Guerra. May 8, 1945: Who does not celebrate lost the War. --AhhlLboLdkugWU4S Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEXmn7rBYYViyzy/vBR8z35Hb+nREFAllalOIACgkQR8z35Hb+ nREilw/9HefWKAQt59QGw1kTKBEYVN1qDyMk6j/sQH3DSGuVDhr5TYk+ZV6P/QwJ AAocYKgWxp6fpK/9Gf8grpST3kTuf6TkObVfLkrS9TYVS56tqh7jERyrv4XB9B6q CJQUJpuwEutDwPLeJv/89TV0wZ7GoaoZrxKi9jvIphfvX3S/WmJFjFq7N3eT3h+z JcVyYBpMCNQWBPmPYYqORZa+TwVL1Db1FtanIjqSJnIRy504Q6QuQY/+Ir8WKWgE TDBxvRGp8TowuzY/2Elrwh2QGMGJX99Dtt/wegSG0YL4lszErlDJCTbLnJNsAhzp Oyv0WVy5y7V2MwuhyjQ/BVgGZhePqqHuxm0rJui4gBKAfltJIEVU0Wqx29aYbZ09 ccOt/v+bLsHjokkHA6smSaMkjxZq6zLyKkmLco6L4aWbcOj6coCdV+s1mZRdFNRl ii69DLyRuGOZ6OUD9U9Ku/OYNp8Fgv2EdciOWrKQH2REjDAuFipqCR0035ytw+81 nQ8B8Bsag1US3CZHiljsbHUpsgAOj3YGk9R1jkBHJWbP7KgZkKH45sWso8YwCSUJ BLNWLDnzX99tk4tnmw3ubI1MohnsqvZ5TKiWbxXi5/VPMcrdG172KSF1UP/PtRit jbuV1nTqOHtVEoXstNztjZH/S0YmytM6JvEZ8SLr+obwbx3/7Os= =SLFE -----END PGP SIGNATURE----- --AhhlLboLdkugWU4S--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20170703190301.GA2963>