]> git.street.me.uk Git - andy/dehydrated.git/blobdiff - README.md
trying to fix compatibility with mawk
[andy/dehydrated.git] / README.md
index 5c0b3e1941d1830fbbe99d9c37f89bb2f6aefc2f..b3eab9f99c311755d4de292d6dda0ba115afb9ee 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,71 +1,74 @@
-# letsencrypt.sh
+# dehydrated [![Build Status](https://travis-ci.org/lukas2511/dehydrated.svg?branch=master)](https://travis-ci.org/lukas2511/dehydrated)
 
-This is a client for signing certificates with an ACME-server (currently only provided by letsencrypt) implemented as a relatively simple shell-script.
+![](docs/logo.jpg)
 
-It uses the `openssl` utility for everything related to actually handling keys and certificates, so you need to have that installed.
+This is a client for signing certificates with an ACME-server (currently only provided by Let's Encrypt) implemented as a relatively simple bash-script.
 
-Other dependencies are (for now): curl, sed
+It uses the `openssl` utility for everything related to actually handling keys and certificates, so you need to have that installed.
 
-Perl no longer is a dependency.
-The only remaining perl code in this repository is the script you can use to convert your existing letsencrypt-keyfile into something openssl (and this script) can read.
+Other dependencies are: cURL, sed, grep, mktemp (all found on almost any system, cURL being the only exception)
 
 Current features:
 - Signing of a list of domains
-- Renewal if a certificate is about to expire
+- Signing of a CSR
+- Renewal if a certificate is about to expire or SAN (subdomains) changed
 - Certificate revocation
 
-Please keep in mind that this software and even the acme-protocol are relatively young and may still have some unresolved issues.
-Feel free to report any issues you find with this script or contribute by submitting a pullrequest.
+Please keep in mind that this software and even the acme-protocol are relatively young and may still have some unresolved issues. Feel free to report any issues you find with this script or contribute by submitting a pull request.
 
-## Usage:
+## Getting started
 
-Add domains to domains.txt like in this example:
+For getting started I recommend taking a look at [docs/domains_txt.md](docs/domains_txt.md), [docs/wellknown.md](docs/wellknown.md) and the [Usage](#usage) section on this page (you'll probably only need the `-c` option).
 
-```
-example.com www.example.com
-example.net www.example.net wiki.example.net
-```
+Generally you want to set up your WELLKNOWN path first, and then fill in domains.txt.
 
-This states that there should be two certificates `example.com` and `example.net`,
-with the other domains in the corresponding line being their alternative names.
+**Please note that you should use the staging URL when experimenting with this script to not hit Let's Encrypt's rate limits.** See [docs/staging.md](docs/staging.md).
 
-You'll also need to set up a webserver to serve the challenge-response directory as configured with `$WELLKNOWN`,
-or you can use the hook in the script if you want to deploy it some other way (e.g. copy it to a server via scp).
+If you have any problems take a look at our [Troubleshooting](docs/troubleshooting.md) guide.
 
-After doing those two things you can just `./letsencrypt.sh`, and it should generate certificates.
+## Config
 
-It can be used inside a cronjob as it automatically detects if a certificate is about to expire.
+dehydrated is looking for a config file in a few different places, it will use the first one it can find in this order:
 
-### Certificate revocation
+- `/etc/dehydrated/config`
+- `/usr/local/etc/dehydrated/config`
+- The current working directory of your shell
+- The directory from which dehydrated was ran
 
-Usage: `./letsencrypt.sh revoke path/to/cert.pem`
+Have a look at [docs/examples/config](docs/examples/config) to get started, copy it to e.g. `/etc/dehydrated/config`
+and edit it to fit your needs.
 
-### nginx config
-
-If you want to use nginx you can set up a location block to serve your challenge responses:
+## Usage:
 
+```text
+Usage: ./dehydrated [-h] [command [argument]] [parameter [argument]] [parameter [argument]] ...
+
+Default command: help
+
+Commands:
+ --register                       Register account key
+ --cron (-c)                      Sign/renew non-existant/changed/expiring certificates.
+ --signcsr (-s) path/to/csr.pem   Sign a given CSR, output CRT on stdout (advanced usage)
+ --revoke (-r) path/to/cert.pem   Revoke specified certificate
+ --cleanup (-gc)                  Move unused certificate files to archive directory
+ --help (-h)                      Show help text
+ --env (-e)                       Output configuration variables for use in other scripts
+
+Parameters:
+ --accept-terms                   Accept CAs terms of service
+ --full-chain (-fc)               Print full chain when using --signcsr
+ --ipv4 (-4)                      Resolve names to IPv4 addresses only
+ --ipv6 (-6)                      Resolve names to IPv6 addresses only
+ --domain (-d) domain.tld         Use specified domain name(s) instead of domains.txt entry (one certificate!)
+ --keep-going (-g)                Keep going after encountering an error while creating/renewing multiple certificates in cron mode
+ --force (-x)                     Force renew of certificate even if it is longer valid than value in RENEW_DAYS
+ --no-lock (-n)                   Don't use lockfile (potentially dangerous!)
+ --lock-suffix example.com        Suffix lockfile name with a string (useful for with -d)
+ --ocsp                           Sets option in CSR indicating OCSP stapling to be mandatory
+ --privkey (-p) path/to/key.pem   Use specified private key instead of account key (useful for revocation)
+ --config (-f) path/to/config     Use specified config file
+ --hook (-k) path/to/hook.sh      Use specified script for hooks
+ --out (-o) certs/directory       Output certificates into the specified directory
+ --challenge (-t) http-01|dns-01  Which challenge should be used? Currently http-01 and dns-01 are supported
+ --algo (-a) rsa|prime256v1|secp384r1 Which public key algorithm should be used? Supported: rsa, prime256v1 and secp384r1
 ```
-location /.well-known/acme-challenge {
-  root /var/www/letsencrypt;
-}
-```
-
-## Import
-
-### import-account.pl
-
-This perl-script can be used to import the account key from the original letsencrypt client.
-
-You should copy `private_key.json` to the same directory as the script.
-The json-file can be found in a subdirectory of `/etc/letsencrypt/accounts/acme-v01.api.letsencrypt.org/directory`.
-
-Usage: `perl import-account.pl`
-
-### import-certs.sh
-
-This script can be used to import private keys and certificates created by the original letsencrypt client.
-
-By default it expects the certificates to be found under `/etc/letsencrypt`, which is the default output directory of the original client.
-You can change the path by setting LETSENCRYPT in your config file: ```LETSENCRYPT="/etc/letsencrypt"```.
-
-Usage: `./import-certs.sh`