[英]How to add SSH identity file keypair to JKS keystore
我正在構建的Java應用程序的任務之一是連接到遠程SFTP服務器。 為了做到這一點,我有遠程機器的證書和本地身份( .ssh
文件夾中的id_rsa
和id_rsa.pub
)。 這工作正常。
我想將證書和身份放在受密碼保護的java密鑰庫中,以便更容易和更安全地配置。 我有這個工作的證書,但我遇到了在JKS或PKCS12密鑰庫中存儲SSH身份的問題(任何一個都可以工作)。
為了隔離問題,我嘗試了以下步驟:
我使用ssh-keygen -b 2048
在te本地目錄中創建兩個身份文件id_rsa_demo
和id_rsa_demo.pub
。 據我所知,這些是身份的私鑰和公鑰,所以我嘗試將它們組合成一個identity.p12
文件:
openssl pkcs12 -export \
-inkey "id_rsa_demo" \
-in "id_rsa_demo.pub" \
-out "identity.p12" \
-password "pass:topsecret" \
-name "demoalias"
這給了我unable to load certificates
的錯誤。 我四處搜索,似乎openssl需要一個帶有-in
參數完整鏈的證書。 由於我生成的身份沒有,我嘗試了-nocerts
選項,如下所示:
openssl pkcs12 -export \
-inkey "id_rsa_demo" \
-in "id_rsa_demo.pub" \
-out "identity.p12" \
-password "pass:topsecret" \
-name "demoalias" \
-nocerts
我沒有錯誤,但-nocerts
選項符合其承諾,並且不會將我的公鑰添加到pkcs12文件中:
openssl pkcs12 -info -in identity.p12
Enter Import Password:
MAC Iteration 2048
MAC verified OK
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
Bag Attributes
friendlyName: demoalias
Key Attributes: <No Attributes>
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAOXpzckBb28CAggA
MBQGCCqGSIb3DQMHBAjPq9ibr445xQSCBMi5IlOk5F28kQPB5D97afiUb5d3It46
...
ejwYfHTj6bm+dEOUk68zNrWwKqwuJx5AZv3U8sm1cicVmh9W0HpL5tSmMMpDS1ey
Uos=
-----END ENCRYPTED PRIVATE KEY-----
有沒有辦法將SSH身份存儲到PKCS12或JKS密鑰庫中?
假設您有一個如下所示的私鑰:
id_rsa
-----BEGIN RSA PRIVATE KEY----- MIICWgIBAAKBgQCh3czej+KeEraesxts3xP6kx+cO/Fu8ROc/k4hSl7fO9jFZ6Lm OsGlzsRsi8VDg9n/fh6iFng/Umgnfd4J0IiLQihSRYnvyOsqqXbIJ8mBtydqO4s+ CjZLLDRSEMx3dw6GhFOcQ7xYYOeUMNY8QFidPn2LjURfMxG9XWOrCww8rwIBJQKB gGA+sSpjZCajV9P7yx4jxrCqgX99lnlREpSy4lj7ybUqgOQUG6t84dg1wOaYS8dH erOXGSIbMr3d+L2JHD0v4ntcKqzJm6Nf1FE27V0hvpzZl3fNax4NI/cIXM78zBx4 lBblr5QMYnTSd5eADIcDy7TZHuScRPkPViQ2x9QPayQ9AkEA67lfOXFEJ8iTYHdu ykvj0Xqcs/peDX5nYXCEJ2XECxgxfKYVbQPazO5ACgp1VsgFMCsd4rDSwahOAgkE rGfgCwJBAK/KFkSqMCLga8m19uqOftTQ+GhFc0O1lchWQ0A99+b9Rcs0yAe10GCN SbgrEmMuXEQS1emT6ZHM7KIh2P7kiG0CQQDSPYxH/TzJiWDZf0cjIRdMIT+ncJkS 9DKw2flTkh2NWsRaap1858MleowkoYs/j81Gov76nbUNlhwPpy2uhiivAkByBor8 G11+aA6QrWHkQMD4vuZReSgr62gTPt+DndE74o4i8c3bfNowyllU3asP5rhjgdbc svheksMBYhA2ohNNAkAiKQdv08UAG77piJi09OFIEcetTiq/wy9Zeb6fmEuMFzsT 2aR6x0d43OXqAgcKFgFuzqdXgxqhP/n9/eIqXdVA -----END RSA PRIVATE KEY-----
做兩件事:
1)創建證書以包裝密鑰並將公鑰公開為證書,以便keytool
理解它。
openssl x509 -signkey id_rsa -req -in example.req
2)根據新請求創建自簽名證書。
openssl x509 -signkey id_rsa -req -in example.req -out example.cer
然后, 合並證書和私鑰 ,並導入到keytool
。
cat example.cer id_rsa > example.full
keytool -import -keystore example.jks -file example.full
這將獲得鑰匙。 利用私鑰和公鑰以及與您選擇的SSH / SFTP庫進行交互是一項練習。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.