Po prodeji StartSSL WoSignu jsou jejich certifikáty prozatím nepoužitelné, proto jsem se musel po roce vrátit k prozkoumání aktuálního stavu nasazení Let’s Encrypt na Windows Serveru. Naštěstí už je k dispozici sada commandletů pro PowerShell ACMESharp (aktuálně ve verzi 0.8.1), která překvapivě funguje :).
Níže uvedený postup funguje s PowerShellem v5, ale starší verze by měly fungovat víceméně stejně (s výjimkou komplikovanější instalace z PowerShell Gallery).
1/ Instalace ACMESharpu
Vytvoříme pracovní adresář a stáhneme modul z PowerShell Gallery vč. podpory NuGet:
Naimportujeme modul a koukneme, co umí:
2/ Vytvoření „trezoru“
Nyní je třeba se dobře rozmyslet, jak/zda hodláme automatizovat následné vystavování certifikátů (jsou platné 90 dnů). Pokud je PS spuštěn pod admin účtem, adresář s vaultem se vytvoří v „C:\ProgramData“ a bude použitelná pro všechny. V opačném případě se vault vytovří v uživatelském profilu.
Použitý email se potvrzovat nemusí, ale rozhodně je dobrý nápad použít skutečný a funkční email 🙂
Tady můžete poprvé narazit na chybu serveru:
Poučení – chyby jsou docela časté, nejlepší je zkusit později znovu. Na to je potřeba pamatovat při následné automatizaci. Takže znovu:
Kontrola co máme ve vaultu (zatím nic moc):
3/ Registrace a potvrzení vlastnictví domény
Teď zaregistrovat doménová jména, která hodláte v certifikátech používat, a nastavit jim aliasy. Ty se následně často používají, rozhodně volte rozumná a jednoznačné hodnoty:
Status je „pending“, nyní je potřeba ověřit vlastnictví domény. K dispozici je více možností, mně nejvíce vyhovuje vytvoření TXT záznamů v DNS:
Podle instrukcí vytvořte novou položku v DNS a počkejte na replikaci:
Nyní můžeme odeslat požadavek na kontrolu a schválení:
Počkáme a zkontrolujeme stav:
Pokud máme „valid“, můžeme pokračovat. Jen pro zajímavost, co máme ve vaultu:
4/ Vytvoření a odeslání žádosti o certifikát
Pro vytvoření jednoduchého certifikát s jediným předmětem (CN) stačí např.:
Opět nezapomeňte na rozumné pojmenování certifikátu (alias).
Pro certifikát se SAN/DNS atributy je potřeba zaregistovat (a ověřit) další jména:
Certifikáty (resp. žádosti) si můžete připravit ještě před ověřením vlastnictví domény, s odesláním ale počkejte na úspěšné ověření.
Žádosti ve vaultu jsou prozatím ve sériových čísel a dalších informací:
Odeslání žádosti k podpisu:
Pokus o odeslání žádosti obsahující neověřená DNS jména skončí chybovou hláškou:
Rychlá oprava:
Následné odeslání k podpisu skončí s chybou (již bylo odesláno), ale můžeme podepsání vynutit:
Při výpisu certifikátů je dobré zkontrolovat, zda certifikáty obsahují „IssuerSerialNumber“ a další náležitosti. Pokud ne, je potřeba provést aktualizaci – jinak nebude možné certifikáty vyexportovat:
Provedeme update a následný export certifikátu do souboru .PFX s heslem:
Export intermediate certifikátu (lze předpokládat občasné změny):
5 /Instalace certifikátu
Konverze hesla a následný import certifikátů a privátních klíců do úložiště Windows:
Kontrola:
..a kontrola obsahu vaultu:
Nyní konečně můžeme nakonfigurovt aplikace a naimportovat certifikáty autorit do úložišť 🙂 Samozřejmě existují i jednodušší postupy (např. pro IIS), nicméně to na serveru nemusí být vždy k dispozici a tento univerzální postup mi přijde nejvhodnější, a vystavování nových certifikátů již naštěstí není tak komplikované.
7/ Automatizace – nástřel skriptu
Velice jednoduchá a chyby neošetřující skript pro vystavení nových certifikátů je k dispozici na Let’s Encrypt na Windows Server 2016 – PowerShell a ACMESharp #2 – skript PoC
Doporučná perioda vystavování je 60 dnů, takže stačí nastavit Task Scheduler na každé dva měsíce a máme vystaráno (samozřejmě dokud se něco nezmění na straně LE).
6/ Textové poznámky
PS C:\Users\jan>md C:\ACME PS C:\Users\jan> Save-Module -Name ACMESharp -Path C:\ACME\ PS C:\Users\jan> Import-Module "C:\ACME\ACMESharp\0.8.1\ACMESharp.psd1" PS C:\Users\jan> Get-Command -Module ACMESharp CommandType Name Version Source ----------- ---- ------- ------ Cmdlet Complete-ACMEChallenge 0.8.1 ACMESharp Cmdlet Get-ACMECertificate 0.8.1 ACMESharp Cmdlet Get-ACMEChallengeHandlerProfile 0.8.1 ACMESharp Cmdlet Get-ACMEIdentifier 0.8.1 ACMESharp Cmdlet Get-ACMEIssuerCertificate 0.8.1 ACMESharp Cmdlet Get-ACMERegistration 0.8.1 ACMESharp Cmdlet Get-ACMEVault 0.8.1 ACMESharp Cmdlet Get-ACMEVaultProfile 0.8.1 ACMESharp Cmdlet Initialize-ACMEVault 0.8.1 ACMESharp Cmdlet New-ACMECertificate 0.8.1 ACMESharp Cmdlet New-ACMEIdentifier 0.8.1 ACMESharp Cmdlet New-ACMERegistration 0.8.1 ACMESharp Cmdlet Set-ACMEChallengeHandlerProfile 0.8.1 ACMESharp Cmdlet Set-ACMEProxy 0.8.1 ACMESharp Cmdlet Set-ACMEServerDirectory 0.8.1 ACMESharp Cmdlet Set-ACMEVault 0.8.1 ACMESharp Cmdlet Set-ACMEVaultProfile 0.8.1 ACMESharp Cmdlet Submit-ACMECertificate 0.8.1 ACMESharp Cmdlet Submit-ACMEChallenge 0.8.1 ACMESharp Cmdlet Update-ACMECertificate 0.8.1 ACMESharp Cmdlet Update-ACMEIdentifier 0.8.1 ACMESharp Cmdlet Update-ACMERegistration 0.8.1 ACMESharp PS C:\Users\jan> Initialize-ACMEVault PS C:\Users\jan> New-ACMERegistration -Contacts mailto:[email protected] -AcceptTos New-ACMERegistration : The underlying connection was closed: An unexpected error occurred on a receive. At line:1 char:1 + New-ACMERegistration -Contacts mailto:[email protected] -AcceptTos + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [New-ACMERegistration], WebException + FullyQualifiedErrorId : System.Net.WebException,ACMESharp.POSH.NewRegistration PS C:\Users\jan> New-ACMERegistration -Contacts mailto:[email protected] -AcceptTos Contacts : {mailto:jon[email protected]} PublicKey : { e = AQAB, kty = RSA, n = pCjY-R0Nx3Vrqz0BQ1a8TdkjqF2WiQolr4xGnKGKlb98mr00u6gA2FRKD5PZZCiLtZuLx5Ao aconZtzYgqesVJ-6KYs_gxJeHSKaVStiGBtggc1bWRybWuO0GtleOGR_3colbPbTjvsISTdn7AihBUrXYwU60WbH5jBSnru_q4C wBZaM7uQgx_EHMQtrJo9SurU0T5FOAnRsACdKA89WaTYEVu1bWBe_sm_vms8vVnuJ6NeIsvfNGFyEfkbOvDcdZwIrBAkLyvmsVp 9cAO6LPpPiwb57OcpnML64B3A-fkylXtsCQOKm-pl-zwT8AdgzCHWmEQH30zbVrcFAwDowVw } RecoveryKey : RegistrationUri : https://acme-v01.api.letsencrypt.org/acme/reg/7838281 Links : {<https://acme-v01.api.letsencrypt.org/acme/new-authz>;rel="next", <https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf>;rel="terms-of-service"} TosLinkUri : https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf TosAgreementUri : https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf AuthorizationsUri : CertificatesUri : PS C:\Users\jan> Get-ACMEVault Id : 669359e0-e314-45d8-bc41-983fdd45b069 Alias : Label : Memo : BaseService : LetsEncrypt BaseUri : https://acme-v01.api.letsencrypt.org/ GetInitialDirectory : True UseRelativeInitialDirectory : True ServerDirectory : {[init, /directory], [directory, /directory], [new-reg, /acme/new-reg], [recover-reg, /recover-reg]...} Proxy : ProviderProfiles : Registrations : {28ac9424-8783-4aac-b371-83dba26df71a} Identifiers : Certificates : IssuerCertificates : PS C:\Users\jan> New-ACMEIdentifier -Dns fs.cloudtest.cz -Alias fscloudtestcz IdentifierPart : ACMESharp.Messages.IdentifierPart IdentifierType : dns Identifier : fs.cloudtest.cz Uri : https://acme-v01.api.letsencrypt.org/acme/authz/TZIDq4qpBqrRJtwUJTotepXecDxW1UriM6nkns4wAb0 Status : pending Expires : 1/5/2017 2:09:04 PM Challenges : {, , } Combinations : {1, 0, 2} PS C:\Users\jan> Complete-ACMEChallenge fscloudtestcz -ChallengeType dns-01 -Handler manual == Manual Challenge Handler - DNS == * Handle Time: [12/29/2016 3:11:09 PM] * Challenge Token: [s4tfCOOuvyGTYBvs-8hoEkEw5TwMsmIivwqW9mCO44c] To complete this Challenge please create a new Resource Record (RR) with the following characteristics: * RR Type: [TXT] * RR Name: [_acme-challenge.fs.cloudtest.cz] * RR Value: [M2Ny4esC4wmRslPn3knxW7uW9TdDtUJLW92Pp6Yupsg] ------------------------------------ IdentifierPart : ACMESharp.Messages.IdentifierPart IdentifierType : dns Identifier : fs.cloudtest.cz Uri : https://acme-v01.api.letsencrypt.org/acme/authz/TZIDq4qpBqrRJtwUJTotepXecDxW1UriM6nkns4wAb0 Status : pending Expires : 1/5/2017 2:09:04 PM Challenges : {, manual, } Combinations : {1, 0, 2} PS C:\Users\jan> nslookup Default Server: UnKnown Address: 10.0.0.4 > server 8.8.8.8 Default Server: google-public-dns-a.google.com Address: 8.8.8.8 > set type=txt > _acme-challenge.fs.cloudtest.cz Server: google-public-dns-a.google.com Address: 8.8.8.8 Non-authoritative answer: _acme-challenge.fs.cloudtest.cz text = "M2Ny4esC4wmRslPn3knxW7uW9TdDtUJLW92Pp6Yupsg" > exit PS C:\Users\jan> Submit-ACMEChallenge fscloudtestcz -ChallengeType dns-01 IdentifierPart : ACMESharp.Messages.IdentifierPart IdentifierType : dns Identifier : fs.cloudtest.cz Uri : https://acme-v01.api.letsencrypt.org/acme/authz/TZIDq4qpBqrRJtwUJTotepXecDxW1UriM6nkns4wAb0 Status : pending Expires : 1/5/2017 2:09:04 PM Challenges : {, manual, } Combinations : {1, 0, 2} PS C:\Users\jan> Get-ACMEVault Id : 669359e0-e314-45d8-bc41-983fdd45b069 Alias : Label : Memo : BaseService : LetsEncrypt BaseUri : https://acme-v01.api.letsencrypt.org/ GetInitialDirectory : True UseRelativeInitialDirectory : True ServerDirectory : {[init, /directory], [directory, /directory], [new-reg, /acme/new-reg], [recover-reg, /recover-reg]...} Proxy : ProviderProfiles : Registrations : {28ac9424-8783-4aac-b371-83dba26df71a} Identifiers : {9e4d9de0-12d0-4570-9d7e-8cb7ba1faf8d} Certificates : IssuerCertificates : PS C:\Users\jan> Update-ACMEIdentifier -IdentifierRef fscloudtestcz IdentifierPart : ACMESharp.Messages.IdentifierPart IdentifierType : dns Identifier : fs.cloudtest.cz Uri : https://acme-v01.api.letsencrypt.org/acme/authz/TZIDq4qpBqrRJtwUJTotepXecDxW1UriM6nkns4wAb0 Status : valid Expires : 2/27/2017 2:18:48 PM Challenges : {, , } Combinations : {1, 0, 2} PS C:\Users\jan> Get-ACMEVault Id : 669359e0-e314-45d8-bc41-983fdd45b069 Alias : Label : Memo : BaseService : LetsEncrypt BaseUri : https://acme-v01.api.letsencrypt.org/ GetInitialDirectory : True UseRelativeInitialDirectory : True ServerDirectory : {[init, /directory], [directory, /directory], [new-reg, /acme/new-reg], [recover-reg, /recover-reg]...} Proxy : ProviderProfiles : Registrations : {28ac9424-8783-4aac-b371-83dba26df71a} Identifiers : {9e4d9de0-12d0-4570-9d7e-8cb7ba1faf8d} Certificates : IssuerCertificates : PS C:\Users\jan> New-ACMECertificate fscloudtestcz -Generate -Alias fscloudtestcz_cert_001 Id : 8f6880b2-e063-4f9d-aebb-0659387634de Alias : fscloudtestcz_cert_001 Label : Memo : IdentifierRef : 9e4d9de0-12d0-4570-9d7e-8cb7ba1faf8d IdentifierDns : fs.cloudtest.cz AlternativeIdentifierDns : KeyPemFile : CsrPemFile : GenerateDetailsFile : 8f6880b2-e063-4f9d-aebb-0659387634de-gen.json CertificateRequest : CrtPemFile : CrtDerFile : IssuerSerialNumber : SerialNumber : Thumbprint : Signature : SignatureAlgorithm : PS C:\Users\jan> New-ACMEIdentifier -Dns app.cloudtest.cz -Alias appcloudtestcz IdentifierPart : ACMESharp.Messages.IdentifierPart IdentifierType : dns Identifier : app.cloudtest.cz Uri : https://acme-v01.api.letsencrypt.org/acme/authz/bjam1q4eb3BGhvc8vnXvAXz55skiJxTJjel0zgPY3o4 Status : pending Expires : 1/5/2017 2:29:08 PM Challenges : {, , } Combinations : {1, 2, 0} PS C:\Users\jan> New-ACMEIdentifier -Dns claimapp.cloudtest.cz -Alias claimappcloudtestcz IdentifierPart : ACMESharp.Messages.IdentifierPart IdentifierType : dns Identifier : claimapp.cloudtest.cz Uri : https://acme-v01.api.letsencrypt.org/acme/authz/2isGaUhjL1D2E2n4Znqa2NYnN-Pwe76GFO2ESNO7VW4 Status : pending Expires : 1/5/2017 2:29:36 PM Challenges : {, , } Combinations : {0, 2, 1} PS C:\Users\jan> New-ACMECertificate fscloudtestcz -Generate -AlternativeIdentifierRefs fscloudtestcz,appcloudtestcz,claimappcloudtestcz -Alias fscloudtestcz_cert_002 imappcloudtestcz -Alias Id : 15bb61c0-5956-42eb-b08d-61d781222e6f Alias : fscloudtestcz_cert_002 Label : Memo : IdentifierRef : 9e4d9de0-12d0-4570-9d7e-8cb7ba1faf8d IdentifierDns : fs.cloudtest.cz AlternativeIdentifierDns : {fs.cloudtest.cz, app.cloudtest.cz, claimapp.cloudtest.cz} KeyPemFile : CsrPemFile : GenerateDetailsFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-gen.json CertificateRequest : CrtPemFile : CrtDerFile : IssuerSerialNumber : SerialNumber : Thumbprint : Signature : SignatureAlgorithm : PS C:\Users\jan> Get-ACMECertificate Seq : 0 Id : 8f6880b2-e063-4f9d-aebb-0659387634de Alias : fscloudtestcz_cert_001 Label : IdentifierDns : fs.cloudtest.cz Thumbprint : SerialNumber : IssuerSerialNumber : CertificateRequest : StatusCode : Seq : 1 Id : 15bb61c0-5956-42eb-b08d-61d781222e6f Alias : fscloudtestcz_cert_002 Label : IdentifierDns : fs.cloudtest.cz Thumbprint : SerialNumber : IssuerSerialNumber : CertificateRequest : StatusCode : PS C:\Users\jan> Submit-ACMECertificate fscloudtestcz_cert_001 Id : 8f6880b2-e063-4f9d-aebb-0659387634de Alias : fscloudtestcz_cert_001 Label : Memo : IdentifierRef : 9e4d9de0-12d0-4570-9d7e-8cb7ba1faf8d IdentifierDns : fs.cloudtest.cz AlternativeIdentifierDns : KeyPemFile : 8f6880b2-e063-4f9d-aebb-0659387634de-key.pem CsrPemFile : 8f6880b2-e063-4f9d-aebb-0659387634de-csr.pem GenerateDetailsFile : 8f6880b2-e063-4f9d-aebb-0659387634de-gen.json CertificateRequest : ACMESharp.CertificateRequest CrtPemFile : 8f6880b2-e063-4f9d-aebb-0659387634de-crt.pem CrtDerFile : 8f6880b2-e063-4f9d-aebb-0659387634de-crt.der IssuerSerialNumber : SerialNumber : 031D33EFFA20786E29F1813341C756DD9FB7 Thumbprint : 85811F8DF23481FAB6E77318339F6DCB1484C542 Signature : 85811F8DF23481FAB6E77318339F6DCB1484C542 SignatureAlgorithm : sha256RSA PS C:\Users\jan> Submit-ACMECertificate fscloudtestcz_cert_002 Submit-ACMECertificate : Error creating new cert :: Authorizations for these names not found or expired: app.cloudtest.cz, claimapp.cloudtest.cz At line:1 char:1 + Submit-ACMECertificate fscloudtestcz_cert_002 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (ACMESharp.Vault.Model.CertificateInfo:CertificateInfo) [Submit-ACMECertificate], AcmeWebException + FullyQualifiedErrorId : urn:acme:error:unauthorized (403),ACMESharp.POSH.SubmitCertificate PS C:\Users\jan> PS C:\Users\jan> PS C:\Users\jan> PS C:\Users\jan> PS C:\Users\jan> New-ACMEIdentifier -Dns app.cloudtest.cz -Alias appcloudtestcz New-ACMEIdentifier : An item with the same key has already been added. At line:1 char:1 + New-ACMEIdentifier -Dns app.cloudtest.cz -Alias appcloudtestcz + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [New-ACMEIdentifier], ArgumentException + FullyQualifiedErrorId : System.ArgumentException,ACMESharp.POSH.NewIdentifier PS C:\Users\jan> Complete-ACMEChallenge appcloudtestcz -ChallengeType dns-01 -Handler manual == Manual Challenge Handler - DNS == * Handle Time: [12/29/2016 3:38:42 PM] * Challenge Token: [Uhr3rnzeTjCWhUcVeGlubibxK08ORq9xo3WVTB5qo-g] To complete this Challenge please create a new Resource Record (RR) with the following characteristics: * RR Type: [TXT] * RR Name: [_acme-challenge.app.cloudtest.cz] * RR Value: [bvJ3_DEF7-aA1Bbw-VEiF0F7ok3-OftRTlKXd5TMuFI] ------------------------------------ IdentifierPart : ACMESharp.Messages.IdentifierPart IdentifierType : dns Identifier : app.cloudtest.cz Uri : https://acme-v01.api.letsencrypt.org/acme/authz/bjam1q4eb3BGhvc8vnXvAXz55skiJxTJjel0zgPY3o4 Status : pending Expires : 1/5/2017 2:29:08 PM Challenges : {, , manual} Combinations : {1, 2, 0} PS C:\Users\jan> Complete-ACMEChallenge claimappcloudtestcz -ChallengeType dns-01 -Handler manual == Manual Challenge Handler - DNS == * Handle Time: [12/29/2016 3:39:53 PM] * Challenge Token: [ArmYtFaYeIgNGKihe8wqPeBmJHD8EkglAarXNOhqgko] To complete this Challenge please create a new Resource Record (RR) with the following characteristics: * RR Type: [TXT] * RR Name: [_acme-challenge.claimapp.cloudtest.cz] * RR Value: [vtkZ1MmJtJ9UkWVizGL5ZcVajjJq8zJ_PfkIyHoK37k] ------------------------------------ IdentifierPart : ACMESharp.Messages.IdentifierPart IdentifierType : dns Identifier : claimapp.cloudtest.cz Uri : https://acme-v01.api.letsencrypt.org/acme/authz/2isGaUhjL1D2E2n4Znqa2NYnN-Pwe76GFO2ESNO7VW4 Status : pending Expires : 1/5/2017 2:29:36 PM Challenges : {, manual, } Combinations : {0, 2, 1} PS C:\Users\jan> Submit-ACMEChallenge appcloudtestcz -ChallengeType dns-01 IdentifierPart : ACMESharp.Messages.IdentifierPart IdentifierType : dns Identifier : app.cloudtest.cz Uri : https://acme-v01.api.letsencrypt.org/acme/authz/bjam1q4eb3BGhvc8vnXvAXz55skiJxTJjel0zgPY3o4 Status : pending Expires : 1/5/2017 2:29:08 PM Challenges : {, , manual} Combinations : {1, 2, 0} PS C:\Users\jan> Submit-ACMEChallenge claimappcloudtestcz -ChallengeType dns-01 IdentifierPart : ACMESharp.Messages.IdentifierPart IdentifierType : dns Identifier : claimapp.cloudtest.cz Uri : https://acme-v01.api.letsencrypt.org/acme/authz/2isGaUhjL1D2E2n4Znqa2NYnN-Pwe76GFO2ESNO7VW4 Status : pending Expires : 1/5/2017 2:29:36 PM Challenges : {, manual, } Combinations : {0, 2, 1} PS C:\Users\jan> Update-ACMEIdentifier cmdlet Update-ACMEIdentifier at command pipeline position 1 Supply values for the following parameters: IdentifierRef: appcloudtestcz IdentifierPart : ACMESharp.Messages.IdentifierPart IdentifierType : dns Identifier : app.cloudtest.cz Uri : https://acme-v01.api.letsencrypt.org/acme/authz/bjam1q4eb3BGhvc8vnXvAXz55skiJxTJjel0zgPY3o4 Status : valid Expires : 2/27/2017 2:41:07 PM Challenges : {, , } Combinations : {1, 2, 0} PS C:\Users\jan> Update-ACMEIdentifier cmdlet Update-ACMEIdentifier at command pipeline position 1 Supply values for the following parameters: IdentifierRef: claimappcloudtestcz IdentifierPart : ACMESharp.Messages.IdentifierPart IdentifierType : dns Identifier : claimapp.cloudtest.cz Uri : https://acme-v01.api.letsencrypt.org/acme/authz/2isGaUhjL1D2E2n4Znqa2NYnN-Pwe76GFO2ESNO7VW4 Status : valid Expires : 2/27/2017 2:41:23 PM Challenges : {, , } Combinations : {0, 2, 1} PS C:\Users\jan> Submit-ACMECertificate fscloudtestcz_cert_002 Submit-ACMECertificate : asset file already exists At line:1 char:1 + Submit-ACMECertificate fscloudtestcz_cert_002 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Submit-ACMECertificate], IOException + FullyQualifiedErrorId : System.IO.IOException,ACMESharp.POSH.SubmitCertificate PS C:\Users\jan> Submit-ACMECertificate fscloudtestcz_cert_002 -Force Id : 15bb61c0-5956-42eb-b08d-61d781222e6f Alias : fscloudtestcz_cert_002 Label : Memo : IdentifierRef : 9e4d9de0-12d0-4570-9d7e-8cb7ba1faf8d IdentifierDns : fs.cloudtest.cz AlternativeIdentifierDns : {fs.cloudtest.cz, app.cloudtest.cz, claimapp.cloudtest.cz} KeyPemFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-key.pem CsrPemFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-csr.pem GenerateDetailsFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-gen.json CertificateRequest : ACMESharp.CertificateRequest CrtPemFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-crt.pem CrtDerFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-crt.der IssuerSerialNumber : SerialNumber : 031BAC84FF368C8624E968188EE1460B5342 Thumbprint : 75092862288073D8CBD439427E8EFEAD9E7CFEC4 Signature : 75092862288073D8CBD439427E8EFEAD9E7CFEC4 SignatureAlgorithm : sha256RSA PS C:\Users\jan> Get-ACMECertificate Seq : 0 Id : 8f6880b2-e063-4f9d-aebb-0659387634de Alias : fscloudtestcz_cert_001 Label : IdentifierDns : fs.cloudtest.cz Thumbprint : 85811F8DF23481FAB6E77318339F6DCB1484C542 SerialNumber : 031D33EFFA20786E29F1813341C756DD9FB7 IssuerSerialNumber : CertificateRequest : ACMESharp.CertificateRequest StatusCode : Created Seq : 1 Id : 15bb61c0-5956-42eb-b08d-61d781222e6f Alias : fscloudtestcz_cert_002 Label : IdentifierDns : fs.cloudtest.cz Thumbprint : 75092862288073D8CBD439427E8EFEAD9E7CFEC4 SerialNumber : 031BAC84FF368C8624E968188EE1460B5342 IssuerSerialNumber : CertificateRequest : ACMESharp.CertificateRequest StatusCode : Created PS C:\Users\jan> Get-ACMECertificate fscloudtestcz_cert_001 -ExportPkcs12 "C:\ACME\fscloudtestcz_cert_001.pfx" -CertificatePassword 'Password123' Get-ACMECertificate : Cannot export PKCS12; Issuer certificate hasn't been resolved At line:1 char:1 + Get-ACMECertificate fscloudtestcz_cert_001 -ExportPkcs12 "C:\ACME\fsc ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-ACMECertificate], InvalidOperationException + FullyQualifiedErrorId : System.InvalidOperationException,ACMESharp.POSH.GetCertificate PS C:\Users\jan> Update-ACMECertificate fscloudtestcz_cert_001 Id : 8f6880b2-e063-4f9d-aebb-0659387634de Alias : fscloudtestcz_cert_001 Label : Memo : IdentifierRef : 9e4d9de0-12d0-4570-9d7e-8cb7ba1faf8d IdentifierDns : fs.cloudtest.cz AlternativeIdentifierDns : KeyPemFile : 8f6880b2-e063-4f9d-aebb-0659387634de-key.pem CsrPemFile : 8f6880b2-e063-4f9d-aebb-0659387634de-csr.pem GenerateDetailsFile : 8f6880b2-e063-4f9d-aebb-0659387634de-gen.json CertificateRequest : ACMESharp.CertificateRequest CrtPemFile : 8f6880b2-e063-4f9d-aebb-0659387634de-crt.pem CrtDerFile : 8f6880b2-e063-4f9d-aebb-0659387634de-crt.der IssuerSerialNumber : 0A0141420000015385736A0B85ECA708 SerialNumber : 031D33EFFA20786E29F1813341C756DD9FB7 Thumbprint : 85811F8DF23481FAB6E77318339F6DCB1484C542 Signature : 85811F8DF23481FAB6E77318339F6DCB1484C542 SignatureAlgorithm : sha256RSA PS C:\Users\jan> Get-ACMECertificate fscloudtestcz_cert_001 -ExportPkcs12 "C:\ACME\fscloudtestcz_cert_001.pfx" -CertificatePassword 'Password123' Id : 8f6880b2-e063-4f9d-aebb-0659387634de Alias : fscloudtestcz_cert_001 Label : Memo : IdentifierRef : 9e4d9de0-12d0-4570-9d7e-8cb7ba1faf8d IdentifierDns : fs.cloudtest.cz AlternativeIdentifierDns : KeyPemFile : 8f6880b2-e063-4f9d-aebb-0659387634de-key.pem CsrPemFile : 8f6880b2-e063-4f9d-aebb-0659387634de-csr.pem GenerateDetailsFile : 8f6880b2-e063-4f9d-aebb-0659387634de-gen.json CertificateRequest : ACMESharp.CertificateRequest CrtPemFile : 8f6880b2-e063-4f9d-aebb-0659387634de-crt.pem CrtDerFile : 8f6880b2-e063-4f9d-aebb-0659387634de-crt.der IssuerSerialNumber : 0A0141420000015385736A0B85ECA708 SerialNumber : 031D33EFFA20786E29F1813341C756DD9FB7 Thumbprint : 85811F8DF23481FAB6E77318339F6DCB1484C542 Signature : 85811F8DF23481FAB6E77318339F6DCB1484C542 SignatureAlgorithm : sha256RSA PS C:\Users\jan> Update-ACMECertificate fscloudtestcz_cert_002 Id : 15bb61c0-5956-42eb-b08d-61d781222e6f Alias : fscloudtestcz_cert_002 Label : Memo : IdentifierRef : 9e4d9de0-12d0-4570-9d7e-8cb7ba1faf8d IdentifierDns : fs.cloudtest.cz AlternativeIdentifierDns : {fs.cloudtest.cz, app.cloudtest.cz, claimapp.cloudtest.cz} KeyPemFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-key.pem CsrPemFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-csr.pem GenerateDetailsFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-gen.json CertificateRequest : ACMESharp.CertificateRequest CrtPemFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-crt.pem CrtDerFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-crt.der IssuerSerialNumber : 0A0141420000015385736A0B85ECA708 SerialNumber : 031BAC84FF368C8624E968188EE1460B5342 Thumbprint : 75092862288073D8CBD439427E8EFEAD9E7CFEC4 Signature : 75092862288073D8CBD439427E8EFEAD9E7CFEC4 SignatureAlgorithm : sha256RSA PS C:\Users\jan> Get-ACMECertificate fscloudtestcz_cert_002 -ExportPkcs12 "C:\ACME\fscloudtestcz_cert_002.pfx" -CertificatePassword 'Password123' Id : 15bb61c0-5956-42eb-b08d-61d781222e6f Alias : fscloudtestcz_cert_002 Label : Memo : IdentifierRef : 9e4d9de0-12d0-4570-9d7e-8cb7ba1faf8d IdentifierDns : fs.cloudtest.cz AlternativeIdentifierDns : {fs.cloudtest.cz, app.cloudtest.cz, claimapp.cloudtest.cz} KeyPemFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-key.pem CsrPemFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-csr.pem GenerateDetailsFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-gen.json CertificateRequest : ACMESharp.CertificateRequest CrtPemFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-crt.pem CrtDerFile : 15bb61c0-5956-42eb-b08d-61d781222e6f-crt.der IssuerSerialNumber : 0A0141420000015385736A0B85ECA708 SerialNumber : 031BAC84FF368C8624E968188EE1460B5342 Thumbprint : 75092862288073D8CBD439427E8EFEAD9E7CFEC4 Signature : 75092862288073D8CBD439427E8EFEAD9E7CFEC4 SignatureAlgorithm : sha256RSA PS C:\Users\jan> Get-ACMECertificate fscloudtestcz_cert_001 -ExportIssuerPEM "C:\ACME\LE.cer" Id : 8f6880b2-e063-4f9d-aebb-0659387634de Alias : fscloudtestcz_cert_001 Label : Memo : IdentifierRef : 9e4d9de0-12d0-4570-9d7e-8cb7ba1faf8d IdentifierDns : fs.cloudtest.cz AlternativeIdentifierDns : KeyPemFile : 8f6880b2-e063-4f9d-aebb-0659387634de-key.pem CsrPemFile : 8f6880b2-e063-4f9d-aebb-0659387634de-csr.pem GenerateDetailsFile : 8f6880b2-e063-4f9d-aebb-0659387634de-gen.json CertificateRequest : ACMESharp.CertificateRequest CrtPemFile : 8f6880b2-e063-4f9d-aebb-0659387634de-crt.pem CrtDerFile : 8f6880b2-e063-4f9d-aebb-0659387634de-crt.der IssuerSerialNumber : 0A0141420000015385736A0B85ECA708 SerialNumber : 031D33EFFA20786E29F1813341C756DD9FB7 Thumbprint : 85811F8DF23481FAB6E77318339F6DCB1484C542 Signature : 85811F8DF23481FAB6E77318339F6DCB1484C542 SignatureAlgorithm : sha256RSA PS C:\Users\jan> dir C:\ACME\ Directory: C:\ACME Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 12/29/2016 2:51 PM ACMESharp -a---- 12/29/2016 3:55 PM 4105 fscloudtestcz_cert_001.pfx -a---- 12/29/2016 3:57 PM 4145 fscloudtestcz_cert_002.pfx -a---- 12/29/2016 4:01 PM 1647 LE.cer PS C:\Users\jan> $pwd=ConvertTo-SecureString -String 'Password123' -Force -AsPlainText PS C:\Users\jan> Import-PfxCertificate "C:\ACME\fscloudtestcz_cert_001.pfx" -Password $pwd -CertStoreLocation Cert:\LocalMachine\My\ -Exportable PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My Thumbprint Subject ---------- ------- 85811F8DF23481FAB6E77318339F6DCB1484C542 CN=fs.cloudtest.cz PS C:\Users\jan> Import-PfxCertificate "C:\ACME\fscloudtestcz_cert_002.pfx" -Password $pwd -CertStoreLocation Cert:\LocalMachine\My\ -Exportable PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My Thumbprint Subject ---------- ------- 75092862288073D8CBD439427E8EFEAD9E7CFEC4 CN=fs.cloudtest.cz PS C:\Users\jan> ls Cert:\LocalMachine\My\ |? subject -eq "CN=fs.cloudtest.cz" |ft subject,issuer,thumbprint Subject Issuer Thumbprint ------- ------ ---------- CN=fs.cloudtest.cz CN=Let's Encrypt Authority X3, O=Let's Encrypt, C=US 85811F8DF23481FAB6E77318339F6DCB1484C542 CN=fs.cloudtest.cz CN=Let's Encrypt Authority X3, O=Let's Encrypt, C=US 75092862288073D8CBD439427E8EFEAD9E7CFEC4 CN=fs.cloudtest.cz CN=Cloudtest …… 338B33BAA7897E65A53FA4DB11ED837EFB64CAC3 PS C:\Users\jan> Get-ACMECertificate Seq : 0 Id : 8f6880b2-e063-4f9d-aebb-0659387634de Alias : fscloudtestcz_cert_001 Label : IdentifierDns : fs.cloudtest.cz Thumbprint : 85811F8DF23481FAB6E77318339F6DCB1484C542 SerialNumber : 031D33EFFA20786E29F1813341C756DD9FB7 IssuerSerialNumber : 0A0141420000015385736A0B85ECA708 CertificateRequest : ACMESharp.CertificateRequest StatusCode : OK Seq : 1 Id : 15bb61c0-5956-42eb-b08d-61d781222e6f Alias : fscloudtestcz_cert_002 Label : IdentifierDns : fs.cloudtest.cz Thumbprint : 75092862288073D8CBD439427E8EFEAD9E7CFEC4 SerialNumber : 031BAC84FF368C8624E968188EE1460B5342 IssuerSerialNumber : 0A0141420000015385736A0B85ECA708 CertificateRequest : ACMESharp.CertificateRequest StatusCode : OK PS C:\Users\jan> Get-ACMEVault Id : 669359e0-e314-45d8-bc41-983fdd45b069 Alias : Label : Memo : BaseService : LetsEncrypt BaseUri : https://acme-v01.api.letsencrypt.org/ GetInitialDirectory : True UseRelativeInitialDirectory : True ServerDirectory : {[init, /directory], [directory, /directory], [new-reg, /acme/new-reg], [recover-reg, /recover-reg]...} Proxy : ProviderProfiles : Registrations : {28ac9424-8783-4aac-b371-83dba26df71a} Identifiers : {9e4d9de0-12d0-4570-9d7e-8cb7ba1faf8d, fa963db9-bb76-4c87-9d48-1835a91ad0ad, cf637189-fd1a-4a39-9a9c-7910048179b2} Certificates : {8f6880b2-e063-4f9d-aebb-0659387634de, 15bb61c0-5956-42eb-b08d-61d781222e6f} IssuerCertificates : {[0A0141420000015385736A0B85ECA708, ACMESharp.Vault.Model.IssuerCertificateInfo]}
You must be logged in to post a comment.