| 
									
										
										
										
											2016-04-26 17:57:11 +01:00
										 |  |  | # dnssec
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | ## Name
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-08 00:26:06 -07:00
										 |  |  | *dnssec* - enables on-the-fly DNSSEC signing of served data. | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Description
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-08 00:26:06 -07:00
										 |  |  | With *dnssec*, any reply that doesn't (or can't) do DNSSEC will get signed on the fly. Authenticated | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | denial of existence is implemented with NSEC black lies. Using ECDSA as an algorithm is preferred as | 
					
						
							|  |  |  | this leads to smaller signatures (compared to RSA). NSEC3 is *not* supported. | 
					
						
							| 
									
										
										
										
											2016-04-26 17:57:11 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-28 18:16:05 -08:00
										 |  |  | This plugin can only be used once per Server Block. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-26 17:57:11 +01:00
										 |  |  | ## Syntax
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2016-10-10 20:13:22 +01:00
										 |  |  | dnssec [ZONES... ] { | 
					
						
							|  |  |  |     key file KEY... | 
					
						
							| 
									
										
										
										
											2016-10-18 13:33:23 -07:00
										 |  |  |     cache_capacity CAPACITY | 
					
						
							| 
									
										
										
										
											2016-04-26 17:57:11 +01:00
										 |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-20 17:35:59 +02:00
										 |  |  | The signing behavior depends on the keys specified. If multiple keys are specified of which there is | 
					
						
							|  |  |  | at least one key with the SEP bit set and at least one key with the SEP bit unset, signing will happen | 
					
						
							|  |  |  | in split ZSK/KSK mode. DNSKEY records will be signed with all keys that have the SEP bit set. All other | 
					
						
							|  |  |  | records will be signed with all keys that do not have the SEP bit set. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In any other case, each specified key will be treated as a CSK (common signing key), forgoing the | 
					
						
							|  |  |  | ZSK/KSK split. All signing operations are done online. | 
					
						
							| 
									
										
										
										
											2017-09-02 11:41:52 -05:00
										 |  |  | Authenticated denial of existence is implemented with NSEC black lies. Using ECDSA as an algorithm | 
					
						
							|  |  |  | is preferred as this leads to smaller signatures (compared to RSA). NSEC3 is *not* supported. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-14 09:36:06 +01:00
										 |  |  | If multiple *dnssec* plugins are specified in the same zone, the last one specified will be | 
					
						
							| 
									
										
										
										
											2017-10-10 09:39:35 +02:00
										 |  |  | used (See [bugs](#bugs)). | 
					
						
							| 
									
										
										
										
											2017-09-02 11:41:52 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-10 09:39:35 +02:00
										 |  |  | * **ZONES** zones that should be signed. If empty, the zones from the configuration block | 
					
						
							| 
									
										
										
										
											2017-09-02 11:41:52 -05:00
										 |  |  |     are used. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-10 09:39:35 +02:00
										 |  |  | * `key file` indicates that **KEY** file(s) should be read from disk. When multiple keys are specified, RRsets | 
					
						
							| 
									
										
										
										
											2016-04-26 17:57:11 +01:00
										 |  |  |   will be signed with all keys. Generating a key can be done with `dnssec-keygen`: `dnssec-keygen -a | 
					
						
							| 
									
										
										
										
											2017-09-02 11:41:52 -05:00
										 |  |  |   ECDSAP256SHA256 <zonename>`. A key created for zone *A* can be safely used for zone *B*. The name of the | 
					
						
							| 
									
										
										
										
											2018-01-10 23:31:34 -08:00
										 |  |  |   key file can be specified in one of the following formats | 
					
						
							| 
									
										
										
										
											2017-09-02 11:41:52 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     * basename of the generated key `Kexample.org+013+45330` | 
					
						
							|  |  |  |     * generated public key `Kexample.org+013+45330.key` | 
					
						
							|  |  |  |     * generated private key `Kexample.org+013+45330.private` | 
					
						
							| 
									
										
										
										
											2016-04-26 17:57:11 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-14 09:36:06 +01:00
										 |  |  | * `cache_capacity` indicates the capacity of the cache. The dnssec plugin uses a cache to store | 
					
						
							| 
									
										
										
										
											2017-10-10 09:39:35 +02:00
										 |  |  |   RRSIGs. The default for **CAPACITY** is 10000. | 
					
						
							| 
									
										
										
										
											2016-10-18 13:33:23 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-26 10:01:52 +01:00
										 |  |  | ## Metrics
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-08 10:20:48 +01:00
										 |  |  | If monitoring is enabled (via the *prometheus* plugin) then the following metrics are exported: | 
					
						
							| 
									
										
										
										
											2016-10-26 10:01:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-27 19:37:31 +01:00
										 |  |  | * `coredns_dnssec_cache_size{server, type}` - total elements in the cache, type is "signature". | 
					
						
							|  |  |  | * `coredns_dnssec_cache_hits_total{server}` - Counter of cache hits. | 
					
						
							|  |  |  | * `coredns_dnssec_cache_misses_total{server}` - Counter of cache misses. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The label `server` indicated the server handling the request, see the *metrics* plugin for details. | 
					
						
							| 
									
										
										
										
											2016-10-18 13:33:23 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-26 17:57:11 +01:00
										 |  |  | ## Examples
 | 
					
						
							| 
									
										
										
										
											2017-09-01 15:54:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | Sign responses for `example.org` with the key "Kexample.org.+013+45330.key". | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-31 07:14:49 +00:00
										 |  |  | ~~~ corefile | 
					
						
							|  |  |  | example.org { | 
					
						
							| 
									
										
										
										
											2017-09-01 15:54:51 +02:00
										 |  |  |     dnssec { | 
					
						
							| 
									
										
										
										
											2017-10-31 07:14:49 +00:00
										 |  |  |         key file Kexample.org.+013+45330 | 
					
						
							| 
									
										
										
										
											2017-09-01 15:54:51 +02:00
										 |  |  |     } | 
					
						
							|  |  |  |     whoami | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-02 11:41:52 -05:00
										 |  |  | Sign responses for a kubernetes zone with the key "Kcluster.local+013+45129.key". | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2017-10-31 07:14:49 +00:00
										 |  |  | cluster.local { | 
					
						
							|  |  |  |     kubernetes | 
					
						
							|  |  |  |     dnssec { | 
					
						
							|  |  |  |       key file Kcluster.local+013+45129 | 
					
						
							| 
									
										
										
										
											2017-09-02 11:41:52 -05:00
										 |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ |