1

CA は、jvm 内で PEM に変換したい P12 を提供します。

はい、openssl コマンドを使用すると動作します:

openssl pkcs12 -in jack.p12 -out jack.pem -nodes -clcerts

しかし、安全でないことは言うまでもなく、javaからopensslプログラムにキーとキーストアのパスワードを取得するのは醜いです。

そのため、BouncyCastle は Java に最適な暗号化 API のようです... 弾むを使用して (P12 を PEM に変換する) どうすればよいでしょうか...

4

2 に答える 2

1

次に例を示します。

  private File createPem(final Certificate certP12, final String name) {
    File file = new File(getFileName(name, "pem"));
    FileWriter fileWriter;
    try {
        fileWriter = new FileWriter(file);

        PEMWriter pemWriter = new PEMWriter(fileWriter);
        pemWriter.writeObject(certP12);
        pemWriter.flush();

        pemWriter.close();
        fileWriter.close();
    } catch (IOException e) {
        log.error("", e);
    }

    return file;
  }
于 2012-09-19T17:51:24.883 に答える
0
  1. 証明書を Org.BouncyCastle.X509.X509Certificate としてロードします
  2. ペムに変換します。
public static Org.BouncyCastle.X509.X509Certificate ImportCertFromPfx(string path, string password)
        {
            Pkcs12Store store = new Pkcs12StoreBuilder().Build();
            store.Load(File.OpenRead(path), password.ToCharArray());
            string alias = null;
            foreach (string str in store.Aliases)
            {
                if (store.IsKeyEntry(str))
                    alias = str;
            }
            if (alias == null)
            {
                Console.WriteLine("alias is null");
            }
            else
                Console.WriteLine(alias);

            X509CertificateEntry certEntry = store.GetCertificate(alias);
            Org.BouncyCastle.X509.X509Certificate x509cert = certEntry.Certificate;
            return x509cert;
        }
Org.BouncyCastle.X509.X509Certificate x509cert = ImportCertFromPfx(p12path, p12password);

StringBuilder CertPem = new StringBuilder();
PemWriter CSRPemWriter = new PemWriter(new StringWriter(CertPem));
CSRPemWriter.WriteObject(x509cert);
CSRPemWriter.Writer.Flush();

//get Cert text
var CertPemText = CertPem.ToString();
Console.WriteLine(CertPemText);
于 2021-04-25T06:19:23.243 に答える