好的,這是另一個「我沒有真正想法從哪裏開始」的問題,所以希望答案很簡單。但是,我並不知道要搜索什麼,而迄今爲止我的嘗試並沒有發揮太大的作用。如何讀取用於OpenSAML的私鑰?
我想讀從(目前上盤)文件中的私鑰。最終,密鑰將駐留在數據庫中,但這一點足夠好,而且這種差異對解析密鑰材料沒有任何真正的影響。我已經能夠創建一個擁有公鑰部分(由調試器確認)的實例,但我似乎無法弄清楚如何讀取私有部分。生成密鑰對爲:
openssl genrsa 512 > d:\host.key
openssl req -new -x509 -nodes -sha1 -days 365 -key d:\host.key > d:\host.cert
(是,我知道,512位RSA密鑰很久以前破然而,對於試圖獲得API的工作,我認爲沒有理由耗盡系統熵供應不必要)
代碼到目前爲止是:
import org.opensaml.xml.security.credential.Credential;
import org.opensaml.xml.security.x509.BasicX509Credential;
private Credential getSigningCredential()
throws java.security.cert.CertificateException, IOException {
BasicX509Credential credential = new BasicX509Credential();
credential.setUsageType(UsageType.SIGNING);
// read public key
InputStream inStream = new FileInputStream("d:\\host.cert");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream);
inStream.close();
credential.setEntityCertificate(cert);
// TODO: read private key
// done.
return credential;
}
但我怎麼讀文件host.key
成credential
私鑰部分,這樣我就可以使用生成Credential
實例簽名數據?
是,BasicX509Credential是OpenSAML,我們對此深感抱歉監督。我一定會試試這個。是的,我完全清楚,512位RSA密鑰並不是安全的,但是這個特殊的設置完全是爲了試圖讓所有東西都能正常工作,所以密鑰長度並不是問題。 – 2011-03-08 14:31:02
似乎像一個魅力工作,非常感謝你!當然,我的簽名代碼似乎被破壞了,但至少根據調試器,我從磁盤上的兩個文件中獲得了適當的「Credential」。在旅途中... – 2011-03-08 14:45:07
謝謝。我在Windows上重定向< and >時遇到了很多麻煩,所以可能需要使用-in和-out開關替換它們。 – 2013-02-19 17:30:25