From ea76c185195db01a0ab05cb9ca23c63244ab5132 Mon Sep 17 00:00:00 2001 From: Adrian Serrano Date: Wed, 15 Jan 2020 20:04:19 +0100 Subject: [PATCH 1/3] Packetbeat TLS: Replace array fields with keyword Use of `type: array` in some fields (which was inconsistent) causes those fields to be excluded from the template. This prevents pointing aliases to those fields, which we need in 7.6+. Setting those fields to `keyword` explicitly so that they are included in the template. --- packetbeat/docs/fields.asciidoc | 12 ++++++------ packetbeat/protos/tls/_meta/fields.yml | 12 ++++++------ packetbeat/protos/tls/fields.go | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packetbeat/docs/fields.asciidoc b/packetbeat/docs/fields.asciidoc index b36866472621..98f9cb26a5b6 100644 --- a/packetbeat/docs/fields.asciidoc +++ b/packetbeat/docs/fields.asciidoc @@ -9407,7 +9407,7 @@ type: keyword The list of compression methods the client supports. See https://www.iana.org/assignments/comp-meth-ids/comp-meth-ids.xhtml -type: array +type: keyword -- @@ -9538,7 +9538,7 @@ The hello extensions provided by the server. -- Negotiated application layer protocol -type: array +type: keyword -- @@ -9658,7 +9658,7 @@ type: keyword -- Subject Alternative Names for this certificate. -type: array +type: keyword -- @@ -9858,7 +9858,7 @@ type: keyword -- Subject Alternative Names for this certificate. -type: array +type: keyword -- @@ -9987,7 +9987,7 @@ type: keyword -- Chain of trust for the server certificate. -type: array +type: keyword -- @@ -9996,7 +9996,7 @@ type: array -- Chain of trust for the client certificate. -type: array +type: keyword -- diff --git a/packetbeat/protos/tls/_meta/fields.yml b/packetbeat/protos/tls/_meta/fields.yml index 1537beed8387..9b38fb1c2770 100644 --- a/packetbeat/protos/tls/_meta/fields.yml +++ b/packetbeat/protos/tls/_meta/fields.yml @@ -44,7 +44,7 @@ connection with the client. - name: supported_compression_methods - type: array + type: keyword description: > The list of compression methods the client supports. See https://www.iana.org/assignments/comp-meth-ids/comp-meth-ids.xhtml @@ -123,7 +123,7 @@ description: The hello extensions provided by the server. fields: - name: application_layer_protocol_negotiation - type: array + type: keyword description: Negotiated application layer protocol - name: session_ticket @@ -185,7 +185,7 @@ The algorithm used for the certificate's signature. - name: alternative_names - type: array + type: keyword description: Subject Alternative Names for this certificate. - name: subject @@ -281,7 +281,7 @@ The algorithm used for the certificate's signature. - name: alternative_names - type: array + type: keyword description: Subject Alternative Names for this certificate. - name: subject @@ -341,11 +341,11 @@ description: Locality. - name: server_certificate_chain - type: array + type: keyword description: Chain of trust for the server certificate. - name: client_certificate_chain - type: array + type: keyword description: Chain of trust for the client certificate. - name: alert_types diff --git a/packetbeat/protos/tls/fields.go b/packetbeat/protos/tls/fields.go index a750dfdaf939..2f04ac731806 100644 --- a/packetbeat/protos/tls/fields.go +++ b/packetbeat/protos/tls/fields.go @@ -32,5 +32,5 @@ func init() { // AssetTls returns asset data. // This is the base64 encoded gzipped contents of protos/tls. func AssetTls() string { - return "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" + return "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" } From c68f06f2b84f0568acfae714a6d1bb56c3f5091c Mon Sep 17 00:00:00 2001 From: Adrian Serrano Date: Wed, 15 Jan 2020 20:32:48 +0100 Subject: [PATCH 2/3] Keep array for arrays of objects --- packetbeat/protos/tls/_meta/fields.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packetbeat/protos/tls/_meta/fields.yml b/packetbeat/protos/tls/_meta/fields.yml index 9b38fb1c2770..89f0c0c7b6f2 100644 --- a/packetbeat/protos/tls/_meta/fields.yml +++ b/packetbeat/protos/tls/_meta/fields.yml @@ -341,11 +341,11 @@ description: Locality. - name: server_certificate_chain - type: keyword + type: array description: Chain of trust for the server certificate. - name: client_certificate_chain - type: keyword + type: array description: Chain of trust for the client certificate. - name: alert_types From ed3cc55ddbcbf34f27deff7ad576339b511ab491 Mon Sep 17 00:00:00 2001 From: Adrian Serrano Date: Wed, 15 Jan 2020 20:56:08 +0100 Subject: [PATCH 3/3] Make Update --- packetbeat/docs/fields.asciidoc | 4 ++-- packetbeat/protos/tls/fields.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packetbeat/docs/fields.asciidoc b/packetbeat/docs/fields.asciidoc index 98f9cb26a5b6..ccb26248d48a 100644 --- a/packetbeat/docs/fields.asciidoc +++ b/packetbeat/docs/fields.asciidoc @@ -9987,7 +9987,7 @@ type: keyword -- Chain of trust for the server certificate. -type: keyword +type: array -- @@ -9996,7 +9996,7 @@ type: keyword -- Chain of trust for the client certificate. -type: keyword +type: array -- diff --git a/packetbeat/protos/tls/fields.go b/packetbeat/protos/tls/fields.go index 2f04ac731806..f25aabd7bf5e 100644 --- a/packetbeat/protos/tls/fields.go +++ b/packetbeat/protos/tls/fields.go @@ -32,5 +32,5 @@ func init() { // AssetTls returns asset data. // This is the base64 encoded gzipped contents of protos/tls. func AssetTls() string { - return "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" + return "eJzsWs1u20YQvvspBr40AWy5RdFDfShgyD4YCJKgTtDeiBV3JE693GV2h5KZpy92SUor/shKLLtJKp0skZz55v+bNc/hHqtLYOUSiSxIoTwBYGKFl3B63fwEH97cnZ4ASHSppYLJ6Ev44wQAIL7l3BWY0pxSwCVqhjmhkm5yAs1fl+GJc9Aix6AzfAfgqsBLWFhTFs0v8f3xMxHG9tN/2H8kzkWpOGkEwVwoh9H1roKNiiVaR0ZHV1od91itjJVbVwY8svl8yLAVB2YOnKH3EhTWsEmNgtKhnGw9gw8iL4Lr/Y2/TH49PRmAaNGVedCZ5MiZkYcAe1sDdOgC3kw4mCHqWhnKs3C11BKtqkgvoNZc2wDvNIKZdySekjyFubHB6Fbu7TUYC6dM6T3y5nL9HfCBUfv7JkN2p4pQc5KiZZ9lgjGx+KlExzjkgpkxCoXe3wV/ZcgZ2sYPdok2uGGtI1yoQQAbECVnqDkAAWKHquuB0nlPifaZCPgu+zJUygzY083xoSyGRzJ5d4I86iHYI6tnFawySrPYWytyGTpgMyAvNXle6tqLsrTeY5yRazNmy1Oxec31hPo2PNHCj5o+lQi6zGc+GwyQ9HGeV1sV4lM3mGisRVcYLUkvBu3TGlOvDVbEsVvGTSuLwlhGmaQmL2xjaF1x7jniqcixD2akrilwF4exweUmA2LuECFjLtzlxcVqtZqQ0GJi7OJCOEcLnaNmd+Hln3vB5yQ73yYPGedqzCPrxjBmfr84esZ7Q0NtRdJ82i5JovRpG0emK2m41LaCFjpG4r8kpKVP6KHqezxiPeBvmuhkxrEX77peimGIolCN7kSJCm3SVmaicWGYDgZrKJn8p4UbITkPSNY9YiupyMGKlAp1b/w86ZUFDFR9PTCe1QzUC87aFtdWfa33DGi+Tp0zP9GEBswLrsCxHe4DAZoBIZd+DDhsq6luJEGs2236uis07bdfC4c0v4mi7+2tPuBM8BNitzYgVOuLwL9Ryt+awrS0S4SprQo2CyuKrIJXN9Ppa0jDhR2IYAO82yV2GUsLLbi0mAi1MJY4y1/E4LVe2Oit45aLCmboowSkQdKCWKgxi1spu1MS06QwpNklc2Nzwf9FSF/dTF9DQAENiAnc1v0XQ6MZMxGDtK0newmeCg2FsI8kdlLqcJNMXsL+aHoFuCu0CArnDC0Mn6bvhe8oMxQ8yDWbafWdc81gP7mwhTSELGaOfYG34XYvJ6NFho7X4ns13mwA2vi1JEUcoXccQdxsCqTjLApe3kFkFabDZO85/NnneGsEHdPn1uThu6eHA9LW3OnLrP1hafuLkdQ6Pl9DUl+OHb5txKGMlcI2Efw2mN5H3z08NdPalDrFuq2IDucLTMcP0DYaI9K2YwRXaiUq1+WH3xDRiwIVcT3vj5osyP8pA2ia4A/LAPqnaXvxgC2g083DI5t06LfRSVlvLrc966uIhTIDvXsL4d+//fx7E9tW1o7RZEmopB4gT5lOYcxuXPOTa0Q3s2kUgDaczHBubD9ja+2yG6We6msfilpGfAwXxYlc4DRLoahf2jESMedRN+wJJIgYwYEPBQ3tFy2EopwpSpN7rDYb1HPwobXwDovcDmCNxmsaopX1+Tf8eXd1Btd3V2As3Eyv7672Mc7R57FwP57ed/QZW2YcQxzL8P5S+mIu7ZVEi2UUrVCMVgumJSb1udcTsN6Vs38wZbjaCIW3XuhgxHcczQYxX0/wWhwWPQtHvabdXQBdKY+Tu9SUmm11iAk0rUVBauTuwWfsQmj6fDDa+C6SF1TsrV2opNR0EKL4URMH1k96S8VOLGH+6XSYbHwhgPeNLN9ILC7aJYR0G+OdSFKT50aHkjkIkxd5AJIZx0FDu1hRNOx3lE4MTZlUKOKD5OibRtZorZJz5egE26NUbzQTV+0hgyv9KqNlaFzhn4HHij1W7LFin1qxnRPJZ9tH2kOt4z5y3EeO+8i4ccd95LiPHPeRI7s5spvjPvIEbxwr9lix32XFju8jSZoJGnozXFgrqh1biX8ssCJbOl7Tj/YfTPu9Ffx8OPZ8O1kotJx4RW5A9Re/b36la7iQGs2CdP3eb/1+R1AVBAeQuERbNT9aTJGWKCcn/wYAAP//nnkfHg==" }