-
Notifications
You must be signed in to change notification settings - Fork 184
-
What is ACMESharp? ACMESharp is a project to provide (1) a .NET library implementation for the ACME protocol and (2) a set of tools in the form of a PowerShell module that use that library to manage certificate requests and issuance.
-
What is ACME? ACME is the protocol spearheaded by the Let's Encrypt project, and submitted to the IETF for standardization which defines an automated process for requesting PKI certificates and all the related operations needed to support that function.
-
What is Let's Encrypt? Let's Encrypt is a project to establish a trusted Certificate Authority (CA) which can be used to issue free PKI certificates for securing access to web sites.
-
What are the limits and limitations of the Let's Encrypt CA? We have compiled a short reference sheet specific to the Let's Encrypt CA service which also includes links to more detailed official material: Let's Encrypt Reference Sheet
-
What is a domain-validated (DV) certificate? A domain-validated certificate is a PKI certificate where the ownership of the DNS name on the certificate has been verified by the issuing part (i.e. the Certificate Authority (CA)). It is just one of several standard types of certificates, such as organization-validated (OV) and extended validation (EV) certificates. DV certificates are the only ones supported by the Let's Encrypt project because they are the only ones that can be easily automated and made cost-effective for free issuance on a grand scale.
-
Is ACMESharp FIPS-compliant? ACMESharp relies on a combination of the underlying Windows and .NET crypto services, and externalized crypto functions of various providers, by default the OpenSSL port to Windows. These providers can be configured to require the use of FIPS-compliant primitives or can be swapped out with providers that guarantee FIPS-compliance. See this comment and this issue for more details.
-
What are the crypto functions in use by ACMESharp? The crypto primitives used in ACMESharp can be split between those supporting the ACME protocol itself, namely support of JWS, and those that are used in support of certificate operations, such as private key and CSR generation. They are isolated in a few base classes with various provider derivatives as described in this comment.
-
How do I use my own custom CSR, with my org and other certificate information? The cmdlet that's used to start a new certificate request (
New-ACMESharp
) can be used to either generate all the required initial assets or can import existing ones that you have generated outside of ACMESharp (i.e. using OpenSSL, Windows CA, Java Keystore, Bouncy Castle, etc.). There are two assets that are required, a private key file (for example for RSA-based certificate, you would need an RSA private key) and a Certificate Signing Request (CSR). Both of these need to be available in the PEM-encoding format and then you would provide these using the cmdlet parameters-KeyPemFile
and-CsrPemFile
respectively. See this issue for more details. -
My email client on iOS 9 is complaining about the server identity! This could be a mis-configuration of the DNS records and/or a missing SAN record in the generated cert. See this issue for more details.
-
Error resolving type specified in JSON Some users have discovered that the
Newtonsoft.Json
library upon which ACMESharp depends has been installed into the system GAC, and this breaks the dependency resolution when do serialization and parsing of JSON streams. See this issue for more details. -
How do I do renewals? Official support for renewals has not yet been implemented (i.e. via the renewal support of the underlying ACME protocol). However a workable kludge is to simply request a new certificate using the existing Validated Identifier (i.e. the same DNS name that you have already proven that you are the owner of). Once a DNS Identifier is verified, the verification is valid for a little over a year (after that time, you'll need to re-verify your ownership). Simply, create a new Certificate Request and reference the same Identifier as before. See this issue for more details.
-
I get an exception when I try to create an alias that starts with a number! This is by design in order to distinguish an alias for some entity (e.g. Identifier, Certificate, Vault Profile, etc.) from a sequence number whenever a an entity reference is used. A reference can be specified as a sequence, a GUID or an optional alias. See this description or this issue for more details.
Docs
- Overview
- FAQ
- Let's Encrypt Reference Sheet
- Quick Start
- Requirements
- Basic Concepts
- Vaults, Vault Providers and Vault Profiles
- Challenge Types, Challenge Handlers and Providers
- Troubleshooting
- Contributions
Legacy Docs - out of date
Reference
- Good to Know
- Proposed Extension Mechanism
- PowerShell Module Design
- Style Guides and Conventions
- Documentation Resources
A bit dated