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:[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]}
7/ Odkazy
https://github.com/ebekker/ACMESharp/wiki/Quick-Start
https://www.powershellgallery.com/packages/ACMESharp/0.8.1
You must be logged in to post a comment.