Thực ra nếu xem xét ASCII-armored và PEM chúng ta sẽ thấy khá là giống nhau ngoại trừ BEGIN/END markers thì PGP còn có thêm 1 dòng (line cuối cùng) là checksum. Mình không rõ nhưng theo RFC 4880 là CRC24.
Ví dụ xem xét public key PGP ASCII-armored và RSA PEM
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
mQINBE9NBIQBEADMSzN6b0FaPP0rGiLDWKfH4ehN66Z0SAIynXm6lBHjmO69pNsm
....
5NsttvIOclBY5A==
=Zqph
-----END PGP PUBLIC KEY BLOCK-----
và
-----BEGIN RSA PUBLIC KEY-----
mQINBE9NBIQBEADMSzN6b0FaPP0rGiLDWKfH4ehN66Z0SAIynXm6lBHjmO69pNsm
...
5NsttvIOclBY5A==
-----END RSA PUBLIC KEY-----
Tại Sysmic.org có chỉ cách convert từ OpenSSL sang GnuPG tuy nhiên là gpgsm (with S/MIME)
Có thể thực hiện như sau:
sudo apt-get install dirmngr
GPG_TTY="tty"
gpgsm --import -v file.p12
Tuy nhiên không thể dùng với gpg. Nếu làm manual thì có lẽ rất vất vả, phải nói là không khả thi. Để import RSA key từ OpenSSL sang GPG mình thực hiện như sau:
Extract private key with passphrase
openssl pkcs12 -in file.p12 -nocerts -out private.pem
Remove passphrase
openssl rsa -in private.pem -out rsa-private.key
Dùng pem2openpgp để convert sang OpenPGP với một string là $USERID (lưu ý install monkeysphere trước để có pem2openpgp)
PEM2OPENPGP_USAGE_FLAGS=authenticate,certify,sign pem2openpgp "Some desc for User ID <any@gmail.com>" < rsa-private.key | gpg --import
Lưu ý: biến môi trường PEM2OPENPGP_USAGE_FLAGS xác định usage là SCA, mặc định pem2openpgp sẽ convert với usage là certify.
gpg: key AC37D3E3: secret key imported
gpg: key AC37D3E3: public key "Some desc for User ID <any@gmail.com>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
gpg: secret keys read: 1
gpg: secret keys imported: 1
$ gpg --list-secret-keys
/home/xxxx/.gnupg/secring.gpg
------------------------------
sec 2048R/AC37D3E3 2012-10-22
uid
Some desc for User ID
<
any@gmail.com
>
Sau khi import xong nhớ thực hiện --edit-key với ID eg
AC37D3E3 thực hiện enable và trust
No comments:
Post a Comment