9

Javaコードを使用して自己署名証明書を作成し、KeyStoreに追加しました。次に、作成した秘密鍵と証明書をPEM形式のファイルにエクスポートします。サードパーティのライブラリなしでこれを実現することは可能ですか?以下は、自己歌唱証明書を作成するために使用するコードです。

  public void createSelfSignedSSLCertificate() {
    try {            
        final CertAndKeyGen keypair = new CertAndKeyGen("RSA", "SHA1WithRSA", null);
        final X500Name x500Name =
            new X500Name(commonName, organizationalUnit, organization, city, state, country);
        keypair.generate(keysize);
        final PrivateKey privKey = keypair.getPrivateKey();
        final X509Certificate[] chain = new X509Certificate[1];
        chain[0] = keypair.getSelfCertificate(x500Name, new Date(), validity * 24 * 60 * 60);
        final String alias = JettySSLConfiguration.SSL_CERTIFICATE_ALIAS;
        keyStore.setKeyEntry(alias, privKey, keyStorePassword.toCharArray(), chain);
    } catch (final Exception e) {
       // Handle Exception
    }       
}

キーと証明書をPEM形式のファイルにエクスポートする方法の提案は非常に役立ちます。

4

3 に答える 3

8

Certificate.getEncoded()Key.getEncoded()を使用してDERを取得し、Base 64エンコーディングとヘッダー/フッターを手動で実行します。たとえば、DatatypeConverter.printBase64Binary()またはその他の方法を使用します。何かのようなもの:

certpem = "-----BEGIN CERTIFICATE-----\n" +
          DatatypeConverter.printBase64Binary(chain[0].getEncoded())) +
          "\n-----END CERTIFICATE-----\n";
keypem  = "-----BEGIN RSA PRIVATE KEY-----\n" +
          DatatypeConverter.printBase64Binary(privKey.getEncoded())) +
          "\n-----END RSA PRIVATE KEY-----\n";
于 2013-01-22T11:45:14.970 に答える