| 
									
										
										
										
											2017-03-13 20:24:37 +00:00
										 |  |  | # tls
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | ## Name
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | *tls* - allows you to configure the server certificates for the TLS and gRPC servers. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Description
 | 
					
						
							| 
									
										
										
										
											2017-03-13 20:24:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-12 14:54:26 +01:00
										 |  |  | CoreDNS supports queries that are encrypted using TLS (DNS over Transport Layer Security, RFC 7858) | 
					
						
							|  |  |  | or are using gRPC (https://grpc.io/, not an IETF standard). Normally DNS traffic isn't encrypted at | 
					
						
							|  |  |  | all (DNSSEC only signs resource records). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-14 09:36:06 +01:00
										 |  |  | The *proxy* plugin also support gRPC (`protocol gRPC`), meaning you can chain CoreDNS servers | 
					
						
							| 
									
										
										
										
											2017-09-12 14:54:26 +01:00
										 |  |  | using this protocol. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-14 09:36:06 +01:00
										 |  |  | The *tls* "plugin" allows you to configure the cryptographic keys that are needed for both | 
					
						
							| 
									
										
										
										
											2017-09-12 14:54:26 +01:00
										 |  |  | DNS-over-TLS and DNS-over-gRPC. If the `tls` directive is omitted, then no encryption takes place. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The gRPC protobuffer is defined in `pb/dns.proto`. It defines the proto as a simple wrapper for the | 
					
						
							|  |  |  | wire data of a DNS message. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-13 20:24:37 +00:00
										 |  |  | ## Syntax
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ~~~ txt | 
					
						
							| 
									
										
										
										
											2017-04-19 17:43:10 -04:00
										 |  |  | tls CERT KEY CA | 
					
						
							| 
									
										
										
										
											2017-03-13 20:24:37 +00:00
										 |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Examples
 | 
					
						
							| 
									
										
										
										
											2017-04-19 17:43:10 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-12 14:54:26 +01:00
										 |  |  | Start a DNS-over-TLS server that picks up incoming DNS-over-TLS queries on port 5553 and uses the | 
					
						
							|  |  |  | nameservers defined in `/etc/resolv.conf` to resolve the query. This proxy path uses plain old DNS. | 
					
						
							| 
									
										
										
										
											2017-04-19 17:43:10 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2017-09-12 14:54:26 +01:00
										 |  |  | tls://.:5553 { | 
					
						
							| 
									
										
										
										
											2017-04-19 17:43:10 -04:00
										 |  |  | 	tls cert.pem key.pem ca.pem | 
					
						
							|  |  |  | 	proxy . /etc/resolv.conf | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-12 14:54:26 +01:00
										 |  |  | Start a DNS-over-gRPC server that is similar to the previous example, but using DNS-over-gRPC for | 
					
						
							|  |  |  | incoming queries. | 
					
						
							| 
									
										
										
										
											2017-04-19 17:43:10 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2017-09-12 14:54:26 +01:00
										 |  |  | grpc://. { | 
					
						
							| 
									
										
										
										
											2017-04-19 17:43:10 -04:00
										 |  |  | 	tls cert.pem key.pem ca.pem | 
					
						
							|  |  |  | 	proxy . /etc/resolv.conf | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2017-09-12 14:54:26 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | Only Knot DNS' `kdig` supports DNS-over-TLS queries, no command line client supports gRPC making | 
					
						
							|  |  |  | debugging these transports harder than it should be. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Also See
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | RFC 7858 and https://grpc.io. |