Skip to content

Commit

Permalink
Add support for freezing ingress TLS secrets
Browse files Browse the repository at this point in the history
  • Loading branch information
johnmdilley committed Feb 6, 2019
1 parent 4c55d1f commit 9dd9fb4
Show file tree
Hide file tree
Showing 7 changed files with 136 additions and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ source <(kubetpl completion zsh)
## ConfigMap/Secret freezing

When `kubetpl render --freeze ...` is used, kubetpl rewrites `ConfigMap`/`Secret`'s name to include hash of the content
and then updates all the references (in `Pod`s / `DaemonSet`s / `Deployment`s / `Job`s / `ReplicaSet`s / `ReplicationController`s / `StatefulSet`s / `CronJob`s) with a new value.
and then updates all the references (in `Pod`s / `DaemonSet`s / `Deployment`s / `Job`s / `ReplicaSet`s / `ReplicationController`s / `StatefulSet`s / `CronJob`s / `Ingress`s) with a new value.

For example, executing [`kubetpl render --freeze example/nginx-with-data-from-file.yml -s NAME=app -s MESSAGE=msg`](example/nginx-with-data-from-file.yml)
should produce [example/nginx-with-data-from-file.rendered+frozen.yml](example/nginx-with-data-from-file.rendered+frozen.yml#L15).
Expand Down
8 changes: 8 additions & 0 deletions engine/processor/freeze.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ const (
kindReplicationController = "ReplicationController"
kindStatefulSet = "StatefulSet"
kindCronJob = "CronJob"
kindIngress = "Ingress"
)

type frozenObjectRef struct {
Expand Down Expand Up @@ -62,6 +63,9 @@ func init() {
"spec.envFrom[*].secretRef.name",
"spec.volumes[*].secret.secretName",
}
secret[kindIngress] = []string{
"spec.tls[*].secretName",
}
for _, kind := range []string{
kindDaemonSet,
kindDeployment,
Expand Down Expand Up @@ -247,6 +251,10 @@ func traverseRefs(
last := path[d+1:]
rr := []interface{}{obj}
for _, p := range strings.Split(path[0:d], "[*].") {
// Special case if there isn't a sub-key after the [*]
if strings.HasSuffix(p, "[*]") {
p = strings.TrimSuffix(p, "[*]")
}
var rn []interface{}
for _, r := range rr {
m, ok := r.(map[interface{}]interface{})
Expand Down
27 changes: 27 additions & 0 deletions example/nginx-with-data-from-file.rendered+frozen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,15 @@ kind: ConfigMap
metadata:
name: app-fba46ca
---
apiVesion: v1
data:
tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUREVENDQWZXZ0F3SUJBZ0lKQUwvTXJjMVFJMWdNTUEwR0NTcUdTSWIzRFFFQkJRVUFNQjB4R3pBWkJnTlYKQkFNTUVuTnpiR1Y0WVcxd2JHVXVabTl2TG1OdmJUQWVGdzB4T1RBeU1EWXhNVEkxTlRsYUZ3MHlPVEF5TURNeApNVEkxTlRsYU1CMHhHekFaQmdOVkJBTU1Fbk56YkdWNFlXMXdiR1V1Wm05dkxtTnZiVENDQVNJd0RRWUpLb1pJCmh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSzNoUjZMSjBsMUJQY0pIMjVxcXVtRmx1Q1MrVGhaKzBOVDMKdzVDRDZyRXFDMTZwM0xZRWVhdjBIUEJWRzNQcGoxd2FCbEVyTFBaMmphQlR1dWtFRi81aUJTcWFDTDYwajV1WApQSVBnQUQvbTF5RGhFQWpyQTZrQTZzekhkU1U5RG44cVRuMm8zdUZXQWRqTDlxS0RMTEZRTHZRY1R1OFFSQVFXCnhZK2x3dk9ueCtZNDhad1pOcjhVQnJPcjdPR0pSZnQzeXhNd0RSSk0zemhOTXlnb1lyZTVpSzFVaVEzM2d5akMKcHE2YldUYVBtV0FxSlJyQjArYUlpZHhxMXFQL3JhYWs3d0hNWHI5clRNVWhybjhLaDlvcnFFdjl1NHBZelhaQQpRUk9MKzJhOGY0bDB0UVRZRUtsN2poYXordXlicUpIQWhGZVZlNExNMGIwempvSVFMTkVDQXdFQUFhTlFNRTR3CkhRWURWUjBPQkJZRUZKMXFKOWMwdVhnbzVKU0REWXlwL1dhcFduSERNQjhHQTFVZEl3UVlNQmFBRkoxcUo5YzAKdVhnbzVKU0REWXlwL1dhcFduSERNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQgpBS0tsV2t3ZzRqMVdvMWxKQTVqVUJQVmpieWRqc2ZCbThZK01FSUZKbWw2UTRzZUc3ekIvRzFYZWMxeGRaSmorCmZ0eVZpKzh0ZXZ6TlY2OFpNaklTNFFyN0Y4aUg4OXlwOHlSYzhMeG5ySE9lQ1NFMHNnekpuSkIvaWZRYXBxemoKdjBubHBUdmdacGF6aVdLZHEyS0VpaEZWMGdlQi9HSWFURjdPZFVKd2VFTXFYcjAxclc4NVhNZ0FvYlRjZkhlUQpHVjIxZlN3Z3VaOFdPbEJMZjdtMGc4T3NTV2ZVRUNrOHgxeGFwRERmMWJ5Q0lIT3U5T1hhZGRmMXdYUldMck9sClhiSjdZVGFITHJSNkZJckM4WURDRGlXUXN3SWpaaFdzZDFBS3h6SEMxc1dzbmhsSjZBVTgwYnNVK0dHTHhLY3kKTzB1b1dMaURSaUtxaWRuN1paM3lTUDA9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
tls.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBcmVGSG9zblNYVUU5d2tmYm1xcTZZV1c0Skw1T0ZuN1ExUGZEa0lQcXNTb0xYcW5jCnRnUjVxL1FjOEZVYmMrbVBYQm9HVVNzczluYU5vRk82NlFRWC9tSUZLcG9JdnJTUG01YzhnK0FBUCtiWElPRVEKQ09zRHFRRHF6TWQxSlQwT2Z5cE9mYWplNFZZQjJNdjJvb01zc1ZBdTlCeE83eEJFQkJiRmo2WEM4NmZINWpqeApuQmsydnhRR3M2dnM0WWxGKzNmTEV6QU5Fa3pmT0UwektDaGl0N21JclZTSkRmZURLTUttcnB0Wk5vK1pZQ29sCkdzSFQ1b2lKM0dyV28vK3RwcVR2QWN4ZXYydE14U0d1ZndxSDJpdW9TLzI3aWxqTmRrQkJFNHY3WnJ4L2lYUzEKQk5nUXFYdU9GclA2N0p1b2tjQ0VWNVY3Z3N6UnZUT09naEFzMFFJREFRQUJBb0lCQVFDaXBqRFVYZVdoeGYxMwpWckJkcFlaaXhUdlRZeEM0aWpmZWYwVTRVYTJmdTZ5WENGMmxCZHFxdHRhN0dXRnNzL1dlT2RuZTQzeFRyK0liCkx6ZVA4SHhoUUYrRTBrR0w0bXJUS0UwN0xyWU5FR244SDR0WVRENUlRTXRpY3RGcDNBdExlTStqUyt2dzdQc2QKU08yVVp3L1BiU24rdnR3M1ZBZkxxMkZ5VmFSZk5lOUtpQW1ETVdZcXFVK01TUEtZNDhEaWY3WEZtektMczlJTQpQcEdCNEhOaGRIYk9NbHlkd3Z1amtJZGlpRWM2TmtyNnZOVmZlajlzNVYvcEc5dEhON0VidGszMFRBbzc2UHlFCit2blpRaEl1Y25Fc0RQeTM0WDZBWUtHWjVtb1dZWFVEcU1QOVp6SERDVnRjTHhSY0RiTTZydTJWbThhRlRkYmEKdWR4QmgzRGhBb0dCQU9MN203OGlETVZNRWVYczhka3VaMnhzVkloSWZhNVBZdUpUZ1I4NXdMblR3Y0tGaUY2ZAo3UW1HVjNMV2g3SDhBUEhldzdOamhZcXM2bm1tdVVhcVpJSHk4YVAxaDBRYWozNmtyaERhWXlkcmVBQmFDR2hSClIyV1NlNGQwWVM3SEN3eGVKT3VBSE0wM2kzbXorbkpqQk5XZXBaKzBFUkhob3JUN0dZOEtEdHVmQW9HQkFNUWIKeXRrWlNmbEVMR21VcmtGa3FsZzJvNjFuMXk4eHFuMXgxeFFIbGZsQ3Jadlp5V0dYc25EcjFKK2k5ZW5WSEJROQo2eElXREFSZ1VRR00zdkhQNXNVZ25FMVBDdks0OU5OUU9lU1ZJdStVbVloN1ZqUDNmempwU01hYlNyaFRWN3kxCjdZRWg3dEI3Tmtab0Y5Yi9naDFRQ1B4V3htaDlPOFIxM1BlU0RDR1BBb0dBUWtza1dQV1Q3MGZoYmxyKzQrU20KdGtjSmhXaE90TXRnNFNOc2NmZEhMNzhHTjA4UzNqZVgxSkZWRnloTEo1T25udnptQVkzT29nc1F6SWtDVWY1UQpMcGdMTlV6dnZkZFlFNi83V3RhOTRQU0ZidXpjeWNMN2JGSVZIQ0hFaElvRDB3L29EcFF6VlVpa3h0M25CdU9lCnRObUtIQlBXYkhlUE12YW5wMXhUckpjQ2dZQnhJWk5Zd0pVREhvZjhkSkErRzBPRjFpZUFUcW85aUlwUkNjNUkKdU1PVTR4bGlFalp4ZldDc2NlL2NFOWVIaUxCRklSOHQ5TmdENGtoNCszcFZ4MWphbWFCeG5NcTFFV3Z6UjVITwpReGEvWFZ0Zzk3M1lCc3cyMmFWcEpZYnFaUEgxWklKWi8yaFVqdS9WbUJGQXIyK3hWMDJIdk11QzFkUVgxdUtkClUzeDZFd0tCZ0Y3aWdzSFBxdzg4TkZzTGtUSTlqcEJRaWRta1lhdkcyaWh2REpnb2pZS1ppMnpxUWkzcUFkR0IKREFxbWg1S3hwUzZFNWdsVzdhckVuanJMdjYwQkxKdEdaRXI3MHlGanRMOUl4ZzlHM0tIU29JWTY0SFJML2Z3RworTW9wQTFuWFpMM0ZPTnhQdzFzbXdVdU5DRExpcDU2NzVCbmtjeC9tMTNRNFQ2QnZpMTlECi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
kind: Secret
metadata:
name: app-ingress-secret-c9c41f2
type: Opaque
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
Expand Down Expand Up @@ -46,3 +55,21 @@ spec:
- configMap:
name: app-fba46ca
name: app-volume
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app-ingress
spec:
rules:
- host: sslexample.foo.com
http:
paths:
- backend:
serviceName: service1
servicePort: 80
path: /
tls:
- hosts:
- sslexample.foo.com
secretName: app-ingress-secret-c9c41f2
27 changes: 27 additions & 0 deletions example/nginx-with-data-from-file.rendered.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,15 @@ kind: ConfigMap
metadata:
name: app
---
apiVesion: v1
data:
tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUREVENDQWZXZ0F3SUJBZ0lKQUwvTXJjMVFJMWdNTUEwR0NTcUdTSWIzRFFFQkJRVUFNQjB4R3pBWkJnTlYKQkFNTUVuTnpiR1Y0WVcxd2JHVXVabTl2TG1OdmJUQWVGdzB4T1RBeU1EWXhNVEkxTlRsYUZ3MHlPVEF5TURNeApNVEkxTlRsYU1CMHhHekFaQmdOVkJBTU1Fbk56YkdWNFlXMXdiR1V1Wm05dkxtTnZiVENDQVNJd0RRWUpLb1pJCmh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSzNoUjZMSjBsMUJQY0pIMjVxcXVtRmx1Q1MrVGhaKzBOVDMKdzVDRDZyRXFDMTZwM0xZRWVhdjBIUEJWRzNQcGoxd2FCbEVyTFBaMmphQlR1dWtFRi81aUJTcWFDTDYwajV1WApQSVBnQUQvbTF5RGhFQWpyQTZrQTZzekhkU1U5RG44cVRuMm8zdUZXQWRqTDlxS0RMTEZRTHZRY1R1OFFSQVFXCnhZK2x3dk9ueCtZNDhad1pOcjhVQnJPcjdPR0pSZnQzeXhNd0RSSk0zemhOTXlnb1lyZTVpSzFVaVEzM2d5akMKcHE2YldUYVBtV0FxSlJyQjArYUlpZHhxMXFQL3JhYWs3d0hNWHI5clRNVWhybjhLaDlvcnFFdjl1NHBZelhaQQpRUk9MKzJhOGY0bDB0UVRZRUtsN2poYXordXlicUpIQWhGZVZlNExNMGIwempvSVFMTkVDQXdFQUFhTlFNRTR3CkhRWURWUjBPQkJZRUZKMXFKOWMwdVhnbzVKU0REWXlwL1dhcFduSERNQjhHQTFVZEl3UVlNQmFBRkoxcUo5YzAKdVhnbzVKU0REWXlwL1dhcFduSERNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQgpBS0tsV2t3ZzRqMVdvMWxKQTVqVUJQVmpieWRqc2ZCbThZK01FSUZKbWw2UTRzZUc3ekIvRzFYZWMxeGRaSmorCmZ0eVZpKzh0ZXZ6TlY2OFpNaklTNFFyN0Y4aUg4OXlwOHlSYzhMeG5ySE9lQ1NFMHNnekpuSkIvaWZRYXBxemoKdjBubHBUdmdacGF6aVdLZHEyS0VpaEZWMGdlQi9HSWFURjdPZFVKd2VFTXFYcjAxclc4NVhNZ0FvYlRjZkhlUQpHVjIxZlN3Z3VaOFdPbEJMZjdtMGc4T3NTV2ZVRUNrOHgxeGFwRERmMWJ5Q0lIT3U5T1hhZGRmMXdYUldMck9sClhiSjdZVGFITHJSNkZJckM4WURDRGlXUXN3SWpaaFdzZDFBS3h6SEMxc1dzbmhsSjZBVTgwYnNVK0dHTHhLY3kKTzB1b1dMaURSaUtxaWRuN1paM3lTUDA9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
tls.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBcmVGSG9zblNYVUU5d2tmYm1xcTZZV1c0Skw1T0ZuN1ExUGZEa0lQcXNTb0xYcW5jCnRnUjVxL1FjOEZVYmMrbVBYQm9HVVNzczluYU5vRk82NlFRWC9tSUZLcG9JdnJTUG01YzhnK0FBUCtiWElPRVEKQ09zRHFRRHF6TWQxSlQwT2Z5cE9mYWplNFZZQjJNdjJvb01zc1ZBdTlCeE83eEJFQkJiRmo2WEM4NmZINWpqeApuQmsydnhRR3M2dnM0WWxGKzNmTEV6QU5Fa3pmT0UwektDaGl0N21JclZTSkRmZURLTUttcnB0Wk5vK1pZQ29sCkdzSFQ1b2lKM0dyV28vK3RwcVR2QWN4ZXYydE14U0d1ZndxSDJpdW9TLzI3aWxqTmRrQkJFNHY3WnJ4L2lYUzEKQk5nUXFYdU9GclA2N0p1b2tjQ0VWNVY3Z3N6UnZUT09naEFzMFFJREFRQUJBb0lCQVFDaXBqRFVYZVdoeGYxMwpWckJkcFlaaXhUdlRZeEM0aWpmZWYwVTRVYTJmdTZ5WENGMmxCZHFxdHRhN0dXRnNzL1dlT2RuZTQzeFRyK0liCkx6ZVA4SHhoUUYrRTBrR0w0bXJUS0UwN0xyWU5FR244SDR0WVRENUlRTXRpY3RGcDNBdExlTStqUyt2dzdQc2QKU08yVVp3L1BiU24rdnR3M1ZBZkxxMkZ5VmFSZk5lOUtpQW1ETVdZcXFVK01TUEtZNDhEaWY3WEZtektMczlJTQpQcEdCNEhOaGRIYk9NbHlkd3Z1amtJZGlpRWM2TmtyNnZOVmZlajlzNVYvcEc5dEhON0VidGszMFRBbzc2UHlFCit2blpRaEl1Y25Fc0RQeTM0WDZBWUtHWjVtb1dZWFVEcU1QOVp6SERDVnRjTHhSY0RiTTZydTJWbThhRlRkYmEKdWR4QmgzRGhBb0dCQU9MN203OGlETVZNRWVYczhka3VaMnhzVkloSWZhNVBZdUpUZ1I4NXdMblR3Y0tGaUY2ZAo3UW1HVjNMV2g3SDhBUEhldzdOamhZcXM2bm1tdVVhcVpJSHk4YVAxaDBRYWozNmtyaERhWXlkcmVBQmFDR2hSClIyV1NlNGQwWVM3SEN3eGVKT3VBSE0wM2kzbXorbkpqQk5XZXBaKzBFUkhob3JUN0dZOEtEdHVmQW9HQkFNUWIKeXRrWlNmbEVMR21VcmtGa3FsZzJvNjFuMXk4eHFuMXgxeFFIbGZsQ3Jadlp5V0dYc25EcjFKK2k5ZW5WSEJROQo2eElXREFSZ1VRR00zdkhQNXNVZ25FMVBDdks0OU5OUU9lU1ZJdStVbVloN1ZqUDNmempwU01hYlNyaFRWN3kxCjdZRWg3dEI3Tmtab0Y5Yi9naDFRQ1B4V3htaDlPOFIxM1BlU0RDR1BBb0dBUWtza1dQV1Q3MGZoYmxyKzQrU20KdGtjSmhXaE90TXRnNFNOc2NmZEhMNzhHTjA4UzNqZVgxSkZWRnloTEo1T25udnptQVkzT29nc1F6SWtDVWY1UQpMcGdMTlV6dnZkZFlFNi83V3RhOTRQU0ZidXpjeWNMN2JGSVZIQ0hFaElvRDB3L29EcFF6VlVpa3h0M25CdU9lCnRObUtIQlBXYkhlUE12YW5wMXhUckpjQ2dZQnhJWk5Zd0pVREhvZjhkSkErRzBPRjFpZUFUcW85aUlwUkNjNUkKdU1PVTR4bGlFalp4ZldDc2NlL2NFOWVIaUxCRklSOHQ5TmdENGtoNCszcFZ4MWphbWFCeG5NcTFFV3Z6UjVITwpReGEvWFZ0Zzk3M1lCc3cyMmFWcEpZYnFaUEgxWklKWi8yaFVqdS9WbUJGQXIyK3hWMDJIdk11QzFkUVgxdUtkClUzeDZFd0tCZ0Y3aWdzSFBxdzg4TkZzTGtUSTlqcEJRaWRta1lhdkcyaWh2REpnb2pZS1ppMnpxUWkzcUFkR0IKREFxbWg1S3hwUzZFNWdsVzdhckVuanJMdjYwQkxKdEdaRXI3MHlGanRMOUl4ZzlHM0tIU29JWTY0SFJML2Z3RworTW9wQTFuWFpMM0ZPTnhQdzFzbXdVdU5DRExpcDU2NzVCbmtjeC9tMTNRNFQ2QnZpMTlECi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
kind: Secret
metadata:
name: app-ingress-secret
type: Opaque
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
Expand Down Expand Up @@ -46,3 +55,21 @@ spec:
- configMap:
name: app
name: app-volume
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app-ingress
spec:
rules:
- host: sslexample.foo.com
http:
paths:
- backend:
serviceName: service1
servicePort: 80
path: /
tls:
- hosts:
- sslexample.foo.com
secretName: app-ingress-secret
27 changes: 27 additions & 0 deletions example/nginx-with-data-from-file.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,15 @@ kubetpl/data-from-file:
metadata:
name: $NAME
---
apiVesion: v1
kind: Secret
metadata:
name: $NAME-ingress-secret
type: Opaque
kubetpl/data-from-file:
- tls.key
- tls.crt
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
Expand Down Expand Up @@ -44,3 +53,21 @@ spec:
- configMap:
name: $NAME
name: $NAME-volume
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: $NAME-ingress
spec:
tls:
- hosts:
- sslexample.foo.com
secretName: $NAME-ingress-secret
rules:
- host: sslexample.foo.com
http:
paths:
- path: /
backend:
serviceName: service1
servicePort: 80
19 changes: 19 additions & 0 deletions example/tls.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDDTCCAfWgAwIBAgIJAL/Mrc1QI1gMMA0GCSqGSIb3DQEBBQUAMB0xGzAZBgNV
BAMMEnNzbGV4YW1wbGUuZm9vLmNvbTAeFw0xOTAyMDYxMTI1NTlaFw0yOTAyMDMx
MTI1NTlaMB0xGzAZBgNVBAMMEnNzbGV4YW1wbGUuZm9vLmNvbTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAK3hR6LJ0l1BPcJH25qqumFluCS+ThZ+0NT3
w5CD6rEqC16p3LYEeav0HPBVG3Ppj1waBlErLPZ2jaBTuukEF/5iBSqaCL60j5uX
PIPgAD/m1yDhEAjrA6kA6szHdSU9Dn8qTn2o3uFWAdjL9qKDLLFQLvQcTu8QRAQW
xY+lwvOnx+Y48ZwZNr8UBrOr7OGJRft3yxMwDRJM3zhNMygoYre5iK1UiQ33gyjC
pq6bWTaPmWAqJRrB0+aIidxq1qP/raak7wHMXr9rTMUhrn8Kh9orqEv9u4pYzXZA
QROL+2a8f4l0tQTYEKl7jhaz+uybqJHAhFeVe4LM0b0zjoIQLNECAwEAAaNQME4w
HQYDVR0OBBYEFJ1qJ9c0uXgo5JSDDYyp/WapWnHDMB8GA1UdIwQYMBaAFJ1qJ9c0
uXgo5JSDDYyp/WapWnHDMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB
AKKlWkwg4j1Wo1lJA5jUBPVjbydjsfBm8Y+MEIFJml6Q4seG7zB/G1Xec1xdZJj+
ftyVi+8tevzNV68ZMjIS4Qr7F8iH89yp8yRc8LxnrHOeCSE0sgzJnJB/ifQapqzj
v0nlpTvgZpaziWKdq2KEihFV0geB/GIaTF7OdUJweEMqXr01rW85XMgAobTcfHeQ
GV21fSwguZ8WOlBLf7m0g8OsSWfUECk8x1xapDDf1byCIHOu9OXaddf1wXRWLrOl
XbJ7YTaHLrR6FIrC8YDCDiWQswIjZhWsd1AKxzHC1sWsnhlJ6AU80bsU+GGLxKcy
O0uoWLiDRiKqidn7ZZ3ySP0=
-----END CERTIFICATE-----
27 changes: 27 additions & 0 deletions example/tls.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAreFHosnSXUE9wkfbmqq6YWW4JL5OFn7Q1PfDkIPqsSoLXqnc
tgR5q/Qc8FUbc+mPXBoGUSss9naNoFO66QQX/mIFKpoIvrSPm5c8g+AAP+bXIOEQ
COsDqQDqzMd1JT0OfypOfaje4VYB2Mv2ooMssVAu9BxO7xBEBBbFj6XC86fH5jjx
nBk2vxQGs6vs4YlF+3fLEzANEkzfOE0zKChit7mIrVSJDfeDKMKmrptZNo+ZYCol
GsHT5oiJ3GrWo/+tpqTvAcxev2tMxSGufwqH2iuoS/27iljNdkBBE4v7Zrx/iXS1
BNgQqXuOFrP67JuokcCEV5V7gszRvTOOghAs0QIDAQABAoIBAQCipjDUXeWhxf13
VrBdpYZixTvTYxC4ijfef0U4Ua2fu6yXCF2lBdqqtta7GWFss/WeOdne43xTr+Ib
LzeP8HxhQF+E0kGL4mrTKE07LrYNEGn8H4tYTD5IQMtictFp3AtLeM+jS+vw7Psd
SO2UZw/PbSn+vtw3VAfLq2FyVaRfNe9KiAmDMWYqqU+MSPKY48Dif7XFmzKLs9IM
PpGB4HNhdHbOMlydwvujkIdiiEc6Nkr6vNVfej9s5V/pG9tHN7Ebtk30TAo76PyE
+vnZQhIucnEsDPy34X6AYKGZ5moWYXUDqMP9ZzHDCVtcLxRcDbM6ru2Vm8aFTdba
udxBh3DhAoGBAOL7m78iDMVMEeXs8dkuZ2xsVIhIfa5PYuJTgR85wLnTwcKFiF6d
7QmGV3LWh7H8APHew7NjhYqs6nmmuUaqZIHy8aP1h0Qaj36krhDaYydreABaCGhR
R2WSe4d0YS7HCwxeJOuAHM03i3mz+nJjBNWepZ+0ERHhorT7GY8KDtufAoGBAMQb
ytkZSflELGmUrkFkqlg2o61n1y8xqn1x1xQHlflCrZvZyWGXsnDr1J+i9enVHBQ9
6xIWDARgUQGM3vHP5sUgnE1PCvK49NNQOeSVIu+UmYh7VjP3fzjpSMabSrhTV7y1
7YEh7tB7NkZoF9b/gh1QCPxWxmh9O8R13PeSDCGPAoGAQkskWPWT70fhblr+4+Sm
tkcJhWhOtMtg4SNscfdHL78GN08S3jeX1JFVFyhLJ5OnnvzmAY3OogsQzIkCUf5Q
LpgLNUzvvddYE6/7Wta94PSFbuzcycL7bFIVHCHEhIoD0w/oDpQzVUikxt3nBuOe
tNmKHBPWbHePMvanp1xTrJcCgYBxIZNYwJUDHof8dJA+G0OF1ieATqo9iIpRCc5I
uMOU4xliEjZxfWCsce/cE9eHiLBFIR8t9NgD4kh4+3pVx1jamaBxnMq1EWvzR5HO
Qxa/XVtg973YBsw22aVpJYbqZPH1ZIJZ/2hUju/VmBFAr2+xV02HvMuC1dQX1uKd
U3x6EwKBgF7igsHPqw88NFsLkTI9jpBQidmkYavG2ihvDJgojYKZi2zqQi3qAdGB
DAqmh5KxpS6E5glW7arEnjrLv60BLJtGZEr70yFjtL9Ixg9G3KHSoIY64HRL/fwG
+MopA1nXZL3FONxPw1smwUuNCDLip5675Bnkcx/m13Q4T6Bvi19D
-----END RSA PRIVATE KEY-----

0 comments on commit 9dd9fb4

Please sign in to comment.