証明書のロード
keystoreの形式がバイナリでさっぱり読めないので気に食わない
pemなら読めるだろうし、鍵の長さを極端に短くすれば埋め込め易いだろうし
openssl genrsa 512 > ~/host.pem openssl req -new -x509 -nodes -days 3650 -key ~/host.pem > ~/host.cert openssl pkcs8 -in ~/host.pem -topk8 -nocrypt -outform DER -out ~/host.pk8
genrsaは32ビットまで下げれるのにcert作るときに512ビットないと怒られるみたい、、、ケチ
有効期限をめちゃめちゃ長くしようおもたら100年越えたあたりからブラウザには19xx年とか言われた、どーでもええねん適当証明にそんなん、無期限とかさしてくれや
んで、pemとcertで動かそうと思ったらpemよめへんってどういうこと??
PKCS#8しか読み込めへんって・・・
KeyStore store = KeyStore.getInstance(KeyStore.getDefaultType()); store.load(null, null); FileInputStream pem = new FileInputStream("~/host.pk8"); byte input[] = new byte[pem.available()]; pem.read(input, 0, input.length); pem.close(); PrivateKey key = KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(input)); CertificateFactory factory = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate) factory.generateCertificate(new FileInputStream("~/host.cert")); store.setKeyEntry("private", key, "123456".toCharArray(), new Certificate[] {cert});
PKCS#8をbase64して埋め込むのが手っ取り早いか
つか、それならいっそkeystoreをbase64したってもよかった、クソ