Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ACMED.TOML(5)		      File Formats Manual		 ACMED.TOML(5)

NAME
       acmed.toml -- ACMEd configuration file

DESCRIPTION
       acmed.toml  is  the  configuration file for acmed(8).  It is written in
       the TOML	format.	The allowed elements are described below.

       account
	       Array of	table representing an account on one or	 several  end-
	       point.

	       contacts	array
		       Array  of  tables  describing  describing  the  account
		       holder's	contact	information. Each table	must have  one
		       and  only  one  key-value pair. Possible	keys and their
		       associated values are:

		       mailto string
			       A mailto	URI as defined by RFC 6068.  This  URI
			       cannot contains neither "hfields" nor more than
			       one "addr-spec" in the "to" component.

	       env table
		       Table  of environment variables that will be accessible
		       from hooks.

	       external_account	table
		       Table containing	the information	required to  bind  the
		       account	to an external one. Possible fields and	values
		       are:

		       identifier string
			       ASCII string identifying	the key.

		       key string
			       Private	key  encoded  in   base64url   without
			       padding.

		       signature_algorithm string
			       Name  of	 the  signature	algorithm used to sign
			       the external account binding  message  sent  to
			       the  endpoint as	defined	in RFC 7518.  Possible
			       values are:
			       -   HS256 <default>
			       -   HS384
			       -   HS512

	       hooks array
		       Names of	hooks that will	be called during operations on
		       the account storage file. The hooks are	guaranteed  to
		       be called sequentially in the declaration order.

	       key_type	string
		       Name  of	 the asymmetric	cryptography algorithm used to
		       generate	the key	pair. Possible values are:
		       -   ed25519
		       -   ed448
		       -   ecdsa_p256 <default>
		       -   ecdsa_p384
		       -   ecdsa_p521
		       -   rsa2048
		       -   rsa4096

	       name string
		       The name	the  account  is  registered  under.  Must  be
		       unique.

	       signature_algorithm string
		       Name  of	 the signature algorithm used to sign the mes-
		       sages sent to the endpoint as defined in	RFC 7518.  The
		       default value is	derived	from the  key  type.  Possible
		       values are:
		       -   ES256
		       -   ES384
		       -   ES512
		       -   RS256

       certificate
	       Array  of  table	 representing  a  certificate that will	be re-
	       quested to a CA.

	       Note that, by default, certificates are identified by the first
	       identifier in the list of identifiers. That means that  if  you
	       reorder	the  identifiers  so that a different identifier is at
	       the first position, a new certificate with a new	name  will  be
	       issued.

	       account string
		       Name of the account to use.

	       csr_digest string
		       Name  of	the certificate's signing request digest algo-
		       rithm. Possible values are:
		       -   sha256 <default>
		       -   sha384
		       -   sha512

	       directory string
		       Path to the directory where certificates	and their  as-
		       sociated	private	keys are stored.

	       endpoint	string
		       Name of the endpoint to use.

	       env table
		       Table  of environment variables that will be accessible
		       from hooks.

	       file_name_format	string
		       Template	used to	build the file's  name.	 The  template
		       syntax  is  TinyTemplate.   See the "STANDARDS" section
		       for a link to the TinyTemplate specifications.  If  not
		       specified,  the	value defined in the endpoint element,
		       and then	the global element, is	used.  Default	is  "{
		       name  }_{  key_type }.{ file_type }.{ ext }".  Possible
		       variables are:

		       ext string
			       File extension. Currently, only "pem"  is  sup-
			       ported.

		       file_type string
			       Contains	 "pk"  for  the	 private  key file and
			       "crt" for the certificate file.

		       key_type	string
			       The certificate's private key type.

		       name string
			       The certificate's name.

	       hooks array
		       Names of	hooks that will	be called  when	 requesting  a
		       new  certificate. The hooks are guaranteed to be	called
		       sequentially in the declaration order.

	       identifiers array
		       Array of	tables listing the identifiers that should  be
		       included	in the certificate along with the challenge to
		       use  for	 each  one. The	dns and	ip fields are mutually
		       exclusive.

		       challenge string
			       The name	of the challenge to use	to  prove  the
			       identifier's ownership. Possible	values are:
			       -   dns-01
			       -   http-01
			       -   tls-alpn-01

		       dns string
			       The domain name.

		       env table
			       Table of	environment variables that will	be ac-
			       cessible	from hooks.

		       ip string
			       The IP address.

	       key_type	string
		       Name  of	 the asymmetric	cryptography algorithm used to
		       generate	the certificate's key  pair.  Possible	values
		       are:
		       -   ed25519
		       -   ed448
		       -   ecdsa_p256
		       -   ecdsa_p384
		       -   ecdsa_p521
		       -   rsa2048 <default>
		       -   rsa4096

	       kp_reuse	boolean
		       Set  whether  or	 not  the private key should be	reused
		       when renewing the certificate. Default is false.

	       name    Name of the certificate.	Must be	unique unless the  key
		       type  is	different. Will	be used	in logs	and in the as-
		       sociated	file's name. The `*', `:' and  `/'  characters
		       will be replaced	by an underscore. Default is the first
		       identifier.

	       renew_delay string
		       Period  of time between the certificate renewal and its
		       expiration date.	The format is described	in  the	 "TIME
		       PERIODS"	 section.  Default is the value	defined	in the
		       associated endpoint.

	       subject_attributes table
		       Table where the certificate's  subject  attributes  are
		       specified. Possible keys, with their RFC	4519 and X.500
		       equivalents, are:

			     ACMEd		     key		   RFC
													  4519		     X.500
			     country_name		 c			countryName
			     generation_qualifier	 generationQualifier
			     given_name			 givenName
			     initials			 initials
			     locality_name		 l			localityName
			     name			 name
			     organization_name		 o			organizationName
			     organizational_unit_name	 ou			organizationalUnitName
			     pkcs9_email_address
			     postal_address		 postalAddress
			     postal_code		 postalCode
			     state_or_province_name	 st			stateOrProvinceName
			     street			 street			streetAddress
			     surname			 sn			surname
			     title			 title

       endpoint
	       Array of	table where each element defines a Certificate Author-
	       ity (CA)	which may be used to request certificates.

	       file_name_format	string
		       Template	used to	build the file's  name.	 For  detailed
		       documentation,  see  the	file_name_format directive lo-
		       cated in	the certificate	element.

	       name string
		       The name	the endpoint  is  registered  under.  Must  be
		       unique.

	       rate_limits array
		       Array  containing the names of the HTTPS	rate limits to
		       apply.

	       renew_delay string
		       Period of time between the certificate renewal and  its
		       expiration  date.  The format is	described in the "TIME
		       PERIODS"	section. Default is the	value defined  in  the
		       global section.

	       root_certificates array
		       Array  containing  the  path  to	root certificates that
		       should be added to the trust store.

	       tos_agreed boolean
		       Set whether or not the user agrees to the Terms Of Ser-
		       vice (TOS).

	       url string
		       The endpoint's directory	URL.

       global  Table containing	the global configuration options.

	       accounts_directory string
		       Specify the directory where the	accounts  private  and
		       public keys are stored.

	       cert_file_group group_name|group_id string
		       Specify	the  group who will own	newly-created certifi-
		       cates files. See	chown(2) for more details.

	       cert_file_mode integer
		       Specify the permissions to use for  newly-created  cer-
		       tificates files.	See chmod(2) for more details.

	       cert_file_user username|user_id string
		       Specify	the  user  who will own	newly-created certifi-
		       cates files. See	chown(2) for more details.

	       certificates_directory string
		       Specify the directory where the certificates and	 their
		       associated private keys are stored.

	       env table
		       Table  of environment variables that will be accessible
		       from hooks.

	       file_name_format	string
		       Template	used to	build the file's  name.	 For  detailed
		       documentation,  see  the	file_name_format directive lo-
		       cated in	the certificate	element.

	       pk_file_group group_name|group_id string
		       Specify the group who will own  newly-created  private-
		       key files. See chown(2) for more	details.

	       pk_file_mode integer
		       Specify	the  permissions to use	for newly-created pri-
		       vate-key	files. See chmod(2) for	more details.

	       pk_file_user username|user_id string
		       Specify the user	who will own newly-created private-key
		       files. See chown(2) for more details.

	       renew_delay string
		       Period of time between the certificate renewal and  its
		       expiration  date.  The format is	described in the "TIME
		       PERIODS"	section. Default is 3w.

	       root_certificates array
		       Array containing	the path  to  root  certificates  that
		       should be added to the trust store.

       group   Array  of table allowing	to group several hooks as one. A group
	       is considered as	new hook.

	       hooks array
		       Array containing	 the  names  of	 the  hooks  that  are
		       grouped.	 The hooks are guaranteed to be	called sequen-
		       tially in the declaration order.

	       name string
		       The name	the group is registered	under.	This  name  is
		       considered as a hook name. Must be unique.

       hook    Array  of  table	where each element defines a command that will
	       be launched at a	defined	point. See section  "WRITING  A	 HOOK"
	       for more	details.

	       allow_failure boolean
		       Defines	if  an error return value for this hook	is al-
		       lowed or	not. If	not allowed, a failure	in  this  hook
		       will  fail  the	whole certificate request process. De-
		       fault is	false.

	       args array
		       Array of	strings	representing the command's arguments.

	       cmd string
		       The name	of the command that will be launched.

	       name string
		       The name	the hook is registered under. Must be unique.

	       stderr string
		       Path to the file	where  the  command's  standard	 error
		       output if written.

	       stdin string
		       Path  to	 the  file  that will be written into the com-
		       mand's  standard	 intput.   Mutually   exclusive	  with
		       stdin_str.

	       stdin_str string
		       String that will	be written into	the command's standard
		       input. Mutually exclusive with stdin.

	       stdout string
		       Path to the file	where the command's standard output if
		       written.

	       type array
		       Array of	strings. Possible types	are:
		       -   challenge-dns-01
		       -   challenge-dns-01-clean
		       -   challenge-http-01
		       -   challenge-http-01-clean
		       -   challenge-tls-alpn-01
		       -   challenge-tls-alpn-01-clean
		       -   file-post-create
		       -   file-post-edit
		       -   file-pre-create
		       -   file-pre-edit
		       -   post-operation

       include
	       Array containing	the path to configuration file to include. The
	       path  can  be  either  relative or absolute. If relative, it is
	       relative	to the configuration file which	included it.

	       In case or overlapping global option definition,	the one	of the
	       last included file will be used.	For example, if	a file	A  in-
	       cludes  files B and C and all three defines the same global op-
	       tion, the final value will be the one defined in	file C.

	       Unix style globing is supported.

       rate-limit
	       Array of	table where each element defines a HTTPS rate limit.

	       name string
		       The name	the rate limit is registered  under.  Must  be
		       unique.

	       number integer
		       Number of requests authorized withing the time period.

	       period string
		       Period  of  time	 during	 which a maximal number	of re-
		       quests is authorized. The format	is  described  in  the
		       "TIME PERIODS" section.

WRITING	A HOOK
       When  requesting	 a  certificate	 from a	CA using ACME, there are three
       steps that are hard to automatize. The first one	is solving  challenges
       in  order to prove the ownership	of every identifier to be included: it
       requires	to interact with the configuration of  other  services,	 hence
       depends	on  how	the infrastructure works. The second one is restarting
       all the services	that use a given certificate, for the same reason. The
       last one	is archiving: although several default methods can  be	imple-
       mented,	sometimes admins wants or are required to do it	in a different
       way.

       In order	to allow full automation of the	three above steps without  im-
       posing  arbitrary  restrictions or methods, acmed(8) uses hooks.	Funda-
       mentally, a hook	is a command line template that	will be	 called	 at  a
       specific	time of	the process. Such an approach allows admins to use any
       executable  script  or  program located on the machine to customize the
       process.

       For a given certificate,	hooks are guaranteed to	be called sequentially
       in the declaration order. It is therefore possible to have a hook  that
       depends	on  another one. Nevertheless, several certificates may	be re-
       newed at	the same time. Hence, hooks shall not use globing or any other
       action that may disrupt hooks called by a different certificate.

       A hook has a type that will influence both the moment it	is called  and
       the  available  template	 variables.  It	is possible to declare several
       types. In such a	case, the hook will be invoked	whenever  one  of  its
       type  request  it.  When	 called, the hook only have access to template
       variable	for the	current	type. If a hook	uses a template	variable  that
       does not	exists for the current type it is invoked for, the variable is
       empty.

       When  writing  a	hook, the values of args, stdin, stdin_str, stdout and
       stderr are considered as	template strings whereas cmd is	not. The  tem-
       plate  syntax  is TinyTemplate.	See the	"STANDARDS" section for	a link
       to the TinyTemplate specifications.

       The available types and the associated template variable	are  described
       below.

       challenge-dns-01
	       Invoked	when the ownership of an identifier must be proved us-
	       ing the dns-01 challenge. The available template	variables are:
	       challenge string
		       The name	of the challenge type <dns-01>.	  Mostly  used
		       in hooks	with multiple types.
	       env array
		       Array containing	all the	environment variables.
	       identifier string
		       The  identifier	name whom ownership is currently being
		       validated.
	       is_clean_hook bool
		       False
	       proof string
		       The content of the proof	that  must  be	written	 to  a
		       `TXT'  entry  of	the DNS	zone for the `_acme-challenge'
		       subdomain.

       challenge-dns-01-clean
	       Invoked once an identifier ownership has	been proven using  the
	       dns-01  challenge.  This	 hook  is intended to remove the proof
	       since it	is no longer  required.	 The  template	variables  are
	       strictly	  identical   to  those	 given	in  the	 corresponding
	       challenge-dns-01	hook, excepted is_clean_hook which is  set  to
	       true.

       challenge-http-01
	       Invoked	when the ownership of an identifier must be proved us-
	       ing the http-01 challenge.  The	available  template  variables
	       are:
	       challenge string
		       The  name of the	challenge type <http-01>.  Mostly used
		       in hooks	with multiple types.
	       env array
		       Array containing	all the	environment variables.
	       file_name string
		       Name of the file	containing the proof. This  is	not  a
		       full	path	 and	 does	 not	include	   the
		       `.well-known/acme-challenge/' prefix.
	       identifier string
		       The identifier name whom	ownership is  currently	 being
		       validated.
	       is_clean_hook bool
		       False
	       proof string
		       The  content  of	 the  proof  that  must	 be written to
		       file_name.

       challenge-http-01-clean
	       Invoked once an identifier ownership has	been proven using  the
	       http-01	challenge.  This  hook is intended to remove the proof
	       since it	is no longer  required.	 The  template	variables  are
	       strictly	  identical   to  those	 given	in  the	 corresponding
	       challenge-http-01 hook, excepted	is_clean_hook which is set  to
	       true.

       challenge-tls-alpn-01
	       Invoked	when the ownership of an identifier must be proved us-
	       ing the tls-alpn-01 challenge. The available template variables
	       are:
	       challenge string
		       The name	of the challenge type  <tls-alpn-01>.	Mostly
		       used in hooks with multiple types.
	       env array
		       Array containing	all the	environment variables.
	       identifier string
		       The  identifier	name whom ownership is currently being
		       validated.
	       identifier_tls_alpn string
		       The identifier name whom	ownership is  currently	 being
		       validated,  in  a  form suitable	for the	TLS ALPN chal-
		       lenge.
	       is_clean_hook bool
		       False
	       proof string
		       Plain-text representation of the	acmeIdentifier	exten-
		       sion that should	be used	in the self-signed certificate
		       presented  when	a TLS connection is initiated with the
		       ALPN extension value.  acmed(8) will not	 generate  the
		       certificate itself since	it can be done using tacd(8).

       challenge-tls-alpn-01-clean
	       Invoked	once an	identifier ownership has been proven using the
	       tls-alpn-01 challenge. This hook	 is  intended  to  remove  the
	       proof  since  it	 is no longer required.	The template variables
	       are strictly identical to  those	 given	in  the	 corresponding
	       challenge-tls-alpn-01 hook, excepted is_clean_hook which	is set
	       to true.

       file-post-create
	       Invoked	after a	non-existent file created.  The	available tem-
	       plate variables	are  the  same	as  those  available  for  the
	       file-pre-create type.

       file-post-edit
	       Invoked	after  an  existent file modified.  The	available tem-
	       plate variables	are  the  same	as  those  available  for  the
	       file-pre-create type.

       file-pre-create
	       Invoked before a	non-existent file created.  The	available tem-
	       plate variables are:
	       env array
		       Array containing	all the	environment variables.
	       file_directory string
		       Name  of	 the  directory	where the impacted file	is lo-
		       cated.
	       file_name string
		       Name of the impacted file.
	       file_path string
		       Full path to the	impacted file.

       file-pre-edit
	       Invoked before an existent file modified.  The  available  tem-
	       plate  variables	 are  the  same	 as  those  available  for the
	       file-pre-create type.

       post-operation
	       Invoked at the end of  the  certificate	request	 process.  The
	       available template variables are:
	       env array
		       Array containing	all the	environment variables.
	       identifiers string
		       Array  containing  the  identifiers included in the re-
		       quested certificate.
	       is_success boolean
		       True if the certificate request is successful.
	       key_type	string
		       Name of the asymmetric cryptography algorithm  used  to
		       generate	the certificate's key pair.
	       status string
		       Human-readable	status.	 If  the  certificate  request
		       failed, it contains the error description.

DEFAULT	HOOKS
       Because many people have	the same needs,	ACMEd  comes  with  a  set  of
       hooks  that  should serve most situations. Hook names being unique, the
       following names and any other name starting by those  is	 reserved  and
       should not be used.

       git     This  hook uses git(1) to archive private keys, public keys and
	       certificates. It	is possible to customize the  commit  username
	       and  email by using respectively	the GIT_USERNAME and GIT_EMAIL
	       environment variables.

       http-01-echo
	       This hook is designed to	solve the http-01 challenge. For  this
	       purpose,	 it  will  write  the  proof  into { env.HTTP_ROOT }/{
	       identifier }/.well-known/acme-challenge/{ file_name }.

	       The  web	 server	 must  be  configured  so  the	file  http://{
	       identifier  }/.well-known/acme-challenge/{  file_name  }	can be
	       accessed	from the CA.

	       If HTTP_ROOT is not specified, it will be set to	/var/www.

       tls-alpn-01-tacd-tcp
	       This hook is designed to	solve the tls-alpn-01 challenge	 using
	       tacd(8).	 It requires pkill(1) to support the -F	option.

	       tacd(8)	will listen on the host	defined	by the TACD_HOST envi-
	       ronment variable	(default is the	identifier  to	be  validated)
	       and  on	the port defined by the	TACD_PORT environment variable
	       (default	is 5001).

	       tacd(8) will  store  its	 pid  into  {  TACD_PID_ROOT  }/tacd_{
	       identifier  }.pid.   If TACD_PID_ROOT is	not specified, it will
	       be set to /run.

       tls-alpn-01-tacd-unix
	       This hook is designed to	solve the tls-alpn-01 challenge	 using
	       tacd(8).	 It requires pkill(1) to support the -F	option.

	       tacd(8)	will  listen  on  the unix socket { env.TACD_SOCK_ROOT
	       }/tacd_{	identifier }.sock.  If TACD_SOCK_ROOT  is  not	speci-
	       fied, it	will be	set to /run.

	       tacd(8)	will  store  its  pid  into  {	TACD_PID_ROOT }/tacd_{
	       identifier }.pid.  If TACD_PID_ROOT is not specified,  it  will
	       be set to /run.

TIME PERIODS
       ACMEd uses its own time period format, which is vaguely inspired	by the
       ISO 8601	one. Periods are formatted as PM[PM...]	where M	is case	sensi-
       tive character representing a length and	P is an	integer	representing a
       multiplayer for the following length. The authorized length are:
       -   s: second
       -   m: minute
       -   h: hour
       -   d: day
       -   w: week
       The PM couples can be specified multiple	times and in any order.

       For  example,  "1d42s" and "40s20h4h2s" both represents a period	of one
       day and forty-two seconds.

TEMPLATE FORMATTERS
       In addition the the formatters provided	by  default  by	 TinyTemplate,
       ACMEd provides the following formatters:

       rev_labels
	       Reverts	the labels of a	domain name (eg: "mx1.example.org" be-
	       comes "org.example.mx1" ).

FILES
       /var/lib/acmed/accounts
	       Default accounts	private	and public keys	directory.

       /etc/acmed/acmed.toml
	       Default acmed(8)	configuration file.

       /var/lib/acmed/certs
	       Default certificates and	associated private keys	directory.

EXAMPLES
       The following example defines a typical endpoint, account and  certifi-
       cate for	a domain, several subdomains and an IP address.

	     [[endpoint]]
	     name = "example name"
	     url = "https://acme.example.org/directory"
	     tos_agreed	= true

	     [[account]]
	     name = "my	test account"
	     contacts =	[
	       { mailto	= "certs@exemple.net" }
	     ]

	     [[certificate]]
	     endpoint =	"example name"
	     account = "my test	account"
	     identifiers = [
		 { dns = "exemple.net",	challenge = "http-01"},
		 { dns = "1.exemple.net", challenge = "dns-01"},
		 { dns = "2.exemple.net", challenge = "tls-alpn-01", env.TACD_PORT="5010"},
		 { dns = "3.exemple.net", challenge = "tls-alpn-01", env.TACD_PORT="5011"},
		 { ip =	"203.0.113.1", challenge = "http-01"},
	     ]
	     hooks = ["git", "http-01-echo", "tls-alpn-01-tacd-tcp", "some-dns-01-hook"]
	     env.HTTP_ROOT = "/srv/http"

       It  is possible to use echo(1) to solve the http-01 challenge and rm(1)
       to clean	it.  mkdir(1) and chmod(1) are used to prevent issues  related
       to file access.

	     [[hook]]
	     name = "http-01-echo-mkdir"
	     type = ["challenge-http-01"]
	     cmd = "mkdir"
	     args = [
		 "-m", "0755",
		 "-p", "{{ if env.HTTP_ROOT }}{	env.HTTP_ROOT }{{ else }}/var/www{{ endif }}/{ identifier }/.well-known/acme-challenge"
	     ]

	     [[hook]]
	     name = "http-01-echo-echo"
	     type = ["challenge-http-01"]
	     cmd = "echo"
	     args = ["{	proof }"]
	     stdout = "{{ if env.HTTP_ROOT }}{ env.HTTP_ROOT }{{ else }}/var/www{{ endif }}/{ identifier }/.well-known/acme-challenge/{	file_name }"

	     [[hook]]
	     name = "http-01-echo-chmod"
	     type = ["challenge-http-01-clean"]
	     cmd = "chmod"
	     args = [
		 "a+r",
		 "{{ if	env.HTTP_ROOT }}{ env.HTTP_ROOT	}{{ else }}/var/www{{ endif }}/{ identifier }/.well-known/acme-challenge/{ file_name }"
	     ]

	     [[hook]]
	     name = "http-01-echo-clean"
	     type = ["challenge-http-01-clean"]
	     cmd = "rm"
	     args = [
		 "-f",
		 "{{ if	env.HTTP_ROOT }}{ env.HTTP_ROOT	}{{ else }}/var/www{{ endif }}/{ identifier }/.well-known/acme-challenge/{ file_name }"
	     ]

       The  hooks  from	the previous example can be grouped in order to	reduce
       the number of hooks to define in	the certificate.

	     [[group]]
	     name = "http-01-echo-var-www"
	     hooks = [
		 "http-01-echo-mkdir",
		 "http-01-echo-echo",
		 "http-01-echo-chmod",
		 "http-01-echo-clean"
	     ]

	     [[certificate]]
	     # Some fields omitted
	     hooks = ["http-01-echo"]
	     env.HTTP_ROOT = "/srv/http"

       It is also possible to use sendmail(8) in a hook	 in  order  to	notify
       someone when the	certificate request process is done.

	     [[hook]]
	     name = "email-report"
	     type = ["post-operation"]
	     cmd = "sendmail"
	     args = [
		 "-f", "noreply.certs@example.net",
		 "contact@example.net"
	     ]
	     stdin_str = """Subject: Certificate renewal {{ if is_success }}succeeded{{	else }}failed{{	endif }} for { identifiers.0 }

	     The following certificate has {{ if not is_success	}}*not*	{{ endif }}been	renewed.
	     identifiers: {{ for ident in identifiers }}{{ if not @first }}, {{	endif }}{ ident	}{{ endfor }}
	     key type: { key_type }
	     status: { status }"""

SEE ALSO
       acmed(8), tacd(8)

STANDARDS
       -   Tom	Preston-Werner,	 TOML  v0.5.0, https://toml.io/en/v0.5.0, July
	   2018.

       -   Brook		    Heisler,			 TinyTemplate,
	   https://docs.rs/tinytemplate/latest/tinytemplate/syntax/index.html.

       -   M. Jones, JSON Web Algorithms (JWA),	RFC 7518, May 2015.

AUTHORS
       Rodolphe	Brard <rodolphe@breard.tf>

FreeBSD	Ports 14.quarterly	 Dec 19, 2022			 ACMED.TOML(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=acmed.toml&sektion=5&manpath=FreeBSD+Ports+14.3.quarterly>

home | help