public async Task CanGenerateWildcard() { var dirUri = await GetAcmeUriV2(); var hosts = new[] { $"wildcard-{DomainSuffix}.es256.certes-ci.dymetis.com" }; var ctx = new AcmeContext(dirUri, GetKeyV2(), http: GetAcmeHttpClient(dirUri)); var orderCtx = await AuthzDns(ctx, hosts); var certKey = KeyFactory.NewKey(KeyAlgorithm.RS256); var finalizedOrder = await orderCtx.Finalize(new CsrInfo { CountryName = "CA", State = "Ontario", Locality = "Toronto", Organization = "Certes", OrganizationUnit = "Dev", CommonName = hosts[0], }, certKey); var pem = await orderCtx.Download(); var builder = new PfxBuilder(pem.Certificate.ToDer(), certKey); foreach (var issuer in pem.Issuers) { builder.AddIssuer(issuer.ToDer()); } builder.AddIssuer(File.ReadAllBytes("./Data/test-root.pem")); var pfx = builder.Build("ci", "abcd1234"); Assert.NotNull(pfx); }
/// <summary> /// Converts the certificate to PFX with the key. /// </summary> /// <param name="certificateChain">The certificate chain.</param> /// <param name="certKey">The certificate private key.</param> /// <returns>The PFX.</returns> public static PfxBuilder ToPfx(this CertificateChain certificateChain, IKey certKey) { var pfx = new PfxBuilder(certificateChain.Certificate.ToDer(), certKey); if (certificateChain.Issuers != null) { foreach (var issuer in certificateChain.Issuers) { pfx.AddIssuer(issuer.ToDer()); } } return(pfx); }
/// <summary> /// Converts the certificate To the PFX builder. /// </summary> /// <param name="cert">The certificate.</param> /// <returns>The PFX builder.</returns> /// <exception cref="System.Exception">If the certificate data is missing.</exception> public static PfxBuilder ToPfx(this AcmeCertificate cert) { if (cert?.Raw == null) { throw new Exception($"Certificate data missing, please fetch the certificate from ${cert.Location}"); } var pfxBuilder = new PfxBuilder(cert.Raw, cert.Key); var issuer = cert.Issuer; while (issuer != null) { pfxBuilder.AddIssuer(issuer.Raw); issuer = issuer.Issuer; } return(pfxBuilder); }
/// <summary> /// Converts the certificate To the PFX builder. /// </summary> /// <param name="cert">The certificate.</param> /// <returns>The PFX builder.</returns> /// <exception cref="System.Exception">If the certificate data is missing.</exception> public static PfxBuilder ToPfx(this AcmeCertificate cert) { if ((cert ?? throw new ArgumentNullException(nameof(cert))).Raw == null) { throw new AcmeException( string.Format(Strings.ErrorMissingCertificateData, cert.Location)); } var pfxBuilder = new PfxBuilder(cert.Raw, cert.Key); var issuer = cert.Issuer; while (issuer != null) { pfxBuilder.AddIssuer(issuer.Raw); issuer = issuer.Issuer; } return(pfxBuilder); }