fluent-plugin-secure-forward 0.3.3dev2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38fb1038da46d346bb5ffa749bada1d09ae921a6
4
- data.tar.gz: 3ffc89b139fd68f9a64b8babff12ada6613644f2
3
+ metadata.gz: 95abed3f7c511ce154782072f6b4ab38dd067e6b
4
+ data.tar.gz: 49ec93a55ebdb11829cbf3b7afbb0c8802f05ea2
5
5
  SHA512:
6
- metadata.gz: ade64ee8b5df2b601059f54cb345ea22a9d05627ba06edb21ca2279e7a037e477a34ec7f059cac61cae7407a58ad622492402ae2802d36683fecf6b916b497d7
7
- data.tar.gz: 3d66cf86ddcce251ad2e2668b54897c1beb01ac99bd6f912a11d3d110753edcdd76b14b9db24f54b933f20a3c8b808732ce7182f684b6dd3a9a3f517d405268c
6
+ metadata.gz: bfa064b8e5872a565a22f1cec9af4fe27f83a4b7b34d56254c03979d7781f71caae25c540cb5682007aef8d71cdde2304a968011b4eba2eb63832cc6f775908f
7
+ data.tar.gz: 93af7276b30cf49cf9a4a58dfcd550379e5bc918032bb7c42a0d8596cf49416591164f9ee92f69179814201f12277bc650068e0f6e2c44d01d7e975d35837c1f
data/README.md CHANGED
@@ -378,6 +378,26 @@ To specify keepalive timeouts, use `keepalive` configuration with seconds. SSL c
378
378
  </match>
379
379
  ```
380
380
 
381
+
382
+ If you connect via Proxy,
383
+ set for `proxy_uri` in `<server>` section:
384
+ ```apache
385
+ <match secret.data.**>
386
+ type secure_forward
387
+ shared_key secret_string
388
+ self_hostname client.fqdn.local
389
+
390
+ secure yes
391
+ # and configurations for certs/verification
392
+
393
+ <server>
394
+ host server.fqdn.local # or IP
395
+ # port 24284
396
+ proxy_uri http://foo.bar.local:3128
397
+ </server>
398
+ </match>
399
+ ```
400
+
381
401
  ## Senario (developer document)
382
402
 
383
403
  * server
@@ -0,0 +1,17 @@
1
+ <source>
2
+ type forward
3
+ </source>
4
+
5
+ <match test.**>
6
+ type secure_forward
7
+ secure yes
8
+ enable_strict_verification yes
9
+ self_hostname client
10
+ shared_key norikra2
11
+ ca_cert_path /Users/tagomoris/github/fluent-plugin-secure-forward/root.pem
12
+ <server>
13
+ host 127.0.0.1
14
+ hostlabel testing.fluentd.org
15
+ </server>
16
+ flush_interval 1s
17
+ </match>
@@ -0,0 +1,18 @@
1
+
2
+ # To check SSL certificate informations
3
+ # openssl s_client -connect testing.fluentd.org:24284 -showcerts
4
+
5
+ <source>
6
+ type secure_forward
7
+ secure yes
8
+ self_hostname testing.fluentd.org
9
+ shared_key norikra2
10
+ cert_path /Users/tagomoris/github/fluent-plugin-secure-forward/example/certs/cert-with-intermediate.pem
11
+ private_key_path /Users/tagomoris/github/fluent-plugin-secure-forward/example/certs/key-for-with-intermediate.key
12
+ private_key_passphrase norikra2
13
+ authentication no
14
+ </source>
15
+
16
+ <match test.**>
17
+ type stdout
18
+ </match>
@@ -0,0 +1,80 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIFRTCCBC2gAwIBAgIQVMhYFMdnctqh7wAXLx1HjzANBgkqhkiG9w0BAQsFADCBvDELMAkGA1UE
3
+ BhMCSlAxHTAbBgNVBAoTFFN5bWFudGVjIEphcGFuLCBJbmMuMS8wLQYDVQQLEyZGb3IgVGVzdCBQ
4
+ dXJwb3NlcyBPbmx5LiBObyBhc3N1cmFuY2VzLjE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0
5
+ dHBzOi8vd3d3LnN5bWF1dGguY29tL2Nwcy90ZXN0Y2ExIDAeBgNVBAMTF1RyaWFsIFNTTCBKYXBh
6
+ biBDQSAtIEcyMB4XDTE1MTEyNDAwMDAwMFoXDTE1MTIwODIzNTk1OVowgdAxCzAJBgNVBAYTAkpQ
7
+ MQ4wDAYDVQQIDAVUb2t5bzETMBEGA1UEBwwKQ2hpeW9kYS1LdTEcMBoGA1UECgwTVHJlYXN1cmUg
8
+ RGF0YSwgSy5LLjEYMBYGA1UECwwPT3BlblNvdXJjZSBUZWFtMSwwKgYDVQQLDCNodHRwczovL3d3
9
+ dy5zeW1hbnRlYy5jb20vY3BzL3Rlc3RjYTEYMBYGA1UECwwPcjQ1MDExNTExNTE4MzgyMRwwGgYD
10
+ VQQDDBN0ZXN0aW5nLmZsdWVudGQub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
11
+ pz2pcz/cGXSvEYMCXZLyLj8BXQvPRPfQIITPzCWpr+jbr5oVI2D3FqysJLedLRZHWY3wAmp/AHqS
12
+ WIHfaGUr6TmLVaKM2weFfxjKtwHboVYSHrhL5bth6fm8gMzJrB6UbFyfUXRPlZw6z/WxcMezIoHp
13
+ 6KSS8Ao9ixeql1AFKF4Yc8H6xUH0fLLNOBLP7UxIbg7xZNxqcjlULOgKcMojK2YioI98Yq9nJ5To
14
+ VopopIgtPEqXzN7W9EdrtaHelky9fsXLY3YnZ599ujEmHMMOzKbrTg7OMOyKwyhFdyERsGfNOHJ1
15
+ /WdgCZZXRlfc0s2SxEWttaJ8v9D18Va1w4cR8wIDAQABo4IBKzCCAScwCQYDVR0TBAIwADAOBgNV
16
+ HQ8BAf8EBAMCBaAwXgYDVR0fBFcwVTBToFGgT4ZNaHR0cDovL29uc2l0ZWNybC5zeW1hdXRoLmpw
17
+ L1N5bWFudGVjSmFwYW5JbmNUcmlhbFNTTEphcGFuQ0FzaGEyL0xhdGVzdENSTC5jcmwwHgYDVR0R
18
+ BBcwFYITdGVzdGluZy5mbHVlbnRkLm9yZzBKBgNVHSAEQzBBMD8GCmCGSAGG+EUBBxUwMTAvBggr
19
+ BgEFBQcCARYjaHR0cHM6Ly93d3cuc3ltYW50ZWMuY29tL2Nwcy90ZXN0Y2EwHQYDVR0lBBYwFAYI
20
+ KwYBBQUHAwEGCCsGAQUFBwMCMB8GA1UdIwQYMBaAFN0fIWQuRcLgQDlIvuPLhICXwySKMA0GCSqG
21
+ SIb3DQEBCwUAA4IBAQAU6rXvUcybWiyHfIGSlzy4MYO6HBeaF0tc2Pt0T4ByX+smXvKoVVgZbX8E
22
+ ahlZURfjSwZyXHCpMvcH17/IyW7c+HrX/jheMZ7iyYdvCQnZ2GrT8Zr3GRMcNYf8e8wnXwkBFAPj
23
+ yek5XHF5ShwLv64bOWDjAfdIAUCHEo1PpDz6JPQgJEb+SHqrxWx+O0zmELYUgSvRWKBuEC5TrxGU
24
+ HEib235vmz6/TgDUqfci7RPf16cwqVyEilzD5tLXTuMp4+tkPRjEA5d+EzH5O2Lx/ef5RTnYYMZ0
25
+ zsVBXssRtwcFKO2vStIGitRK9G9mbvzMNKuItaHcmw8GOhyXnMjTpl8u
26
+ -----END CERTIFICATE-----
27
+ -----BEGIN CERTIFICATE-----
28
+ MIIFRjCCBC6gAwIBAgIQdV9MvP3+ENU3kdfSg2vm/DANBgkqhkiG9w0BAQsFADCB
29
+ hTELMAkGA1UEBhMCSlAxHTAbBgNVBAoTFFN5bWFudGVjIEphcGFuLCBJbmMuMS8w
30
+ LQYDVQQLEyZGb3IgVGVzdCBQdXJwb3NlcyBPbmx5LiBObyBhc3N1cmFuY2VzLjEm
31
+ MCQGA1UEAxMdVHJpYWwgQ2xhc3MgMyBKYXBhbiBSb290IC0gRzUwHhcNMTUwMjE4
32
+ MDAwMDAwWhcNMjUwMjE3MjM1OTU5WjCBvDELMAkGA1UEBhMCSlAxHTAbBgNVBAoT
33
+ FFN5bWFudGVjIEphcGFuLCBJbmMuMS8wLQYDVQQLEyZGb3IgVGVzdCBQdXJwb3Nl
34
+ cyBPbmx5LiBObyBhc3N1cmFuY2VzLjE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0
35
+ IGh0dHBzOi8vd3d3LnN5bWF1dGguY29tL2Nwcy90ZXN0Y2ExIDAeBgNVBAMTF1Ry
36
+ aWFsIFNTTCBKYXBhbiBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
37
+ CgKCAQEA20T0ajk8CG7rIu90Zyh4bDAo32nO6RdBN1xjFD054LbjIR9R7dqAXbLx
38
+ sYj5+V/7v5tN4ogqyHiK2CKLe3z/rtrFjeei/Xyr5NysNWuY2v/OIRSLpeKYYivr
39
+ Ax76ssHbPRdqT4OobxYfRaOEZKwM5etUD55jLI1/0lcSeNqv7Gps8tKt44T4vDx2
40
+ E8J0zT9Z102e649si0rUoGbP3flEBwvnkrmLTQDV1Rf9p3QbaAaZgsmEaXshgufJ
41
+ Bti/BpOy1Sdg4ZTCcKPb/qhSphn2LZNbBFOH/rQiu4UoWHWWMOcsJm22pARSsELI
42
+ ivNJIcXSE8PLTkLWisqRkVODaRaL+wIDAQABo4IBdzCCAXMwEgYDVR0TAQH/BAgw
43
+ BgEB/wIBADB7BgNVHSAEdDByMHAGCmCGSAGG+EUBBxUwYjAuBggrBgEFBQcCARYi
44
+ aHR0cHM6Ly93d3cuc3ltYXV0aC5jb20vY3BzL3Rlc3RjYTAwBggrBgEFBQcCAjAk
45
+ GiJodHRwczovL3d3dy5zeW1hdXRoLmNvbS9jcHMvdGVzdGNhMGUGA1UdHwReMFww
46
+ WqBYoFaGVGh0dHA6Ly9vbnNpdGVjcmwuc3ltYXV0aC5qcC9BUkwvU3ltYW50ZWNK
47
+ YXBhbkluY1RyaWFsQ2xhc3MzSmFwYW5Sb290RzUvTGF0ZXN0QVJMLmNybDAOBgNV
48
+ HQ8BAf8EBAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVByaXZhdGUzLTIw
49
+ NDgtMTc5MB0GA1UdDgQWBBTdHyFkLkXC4EA5SL7jy4SAl8MkijAfBgNVHSMEGDAW
50
+ gBRivYsKGrwW4qUaX5DjNlpcExbkETANBgkqhkiG9w0BAQsFAAOCAQEAZbKcrNvS
51
+ q/b4KNd4Y41uNEqaCQlL6Uvqs5q6b0HQbK/Hjolt3sJttqT/jtSxGIITZVPH8PRt
52
+ 6fo3aWII1eLIiCVzuQc0eVA0671pPhUHgd8mPHgUmhsxLURWgEE3lMx9dKQhKL1V
53
+ Fcp/2bQy+dLVZELQl2L3qtRCVEYubLFmoAgBG7nyiwjt+AsvG6AX2N7MLzsF+C8L
54
+ vRbWEqglqDCFAt1es1Vfb2a7zFj0/BUYDDo6eQE/BpYiYmbHtoWz6SzBNZsehMb5
55
+ OlnF9xqndWK7x2rtaNyi+Z287AzaDe0VFTUaGd1YnzKlEHphRr2nMHd/iNRZFNLy
56
+ poe4IWfm9maFow==
57
+ -----END CERTIFICATE-----
58
+ -----BEGIN CERTIFICATE-----
59
+ MIID2DCCAsCgAwIBAgIQGOtH8axDhLeZoyevey+LezANBgkqhkiG9w0BAQUFADCB
60
+ hTELMAkGA1UEBhMCSlAxHTAbBgNVBAoTFFN5bWFudGVjIEphcGFuLCBJbmMuMS8w
61
+ LQYDVQQLEyZGb3IgVGVzdCBQdXJwb3NlcyBPbmx5LiBObyBhc3N1cmFuY2VzLjEm
62
+ MCQGA1UEAxMdVHJpYWwgQ2xhc3MgMyBKYXBhbiBSb290IC0gRzUwHhcNMTUwMjE4
63
+ MDAwMDAwWhcNMzUwMjE3MjM1OTU5WjCBhTELMAkGA1UEBhMCSlAxHTAbBgNVBAoT
64
+ FFN5bWFudGVjIEphcGFuLCBJbmMuMS8wLQYDVQQLEyZGb3IgVGVzdCBQdXJwb3Nl
65
+ cyBPbmx5LiBObyBhc3N1cmFuY2VzLjEmMCQGA1UEAxMdVHJpYWwgQ2xhc3MgMyBK
66
+ YXBhbiBSb290IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDF
67
+ xdnFVPR3Azt7ar9rYymmrSxRYinWPrNByp8jSWhWudfgbRi0FGh848rsAgvg51c/
68
+ xilEYouj3iRFV0Tt90jWgYQuH6+HRdTz39JGQ8cCGdjo6u0gBUZZMAMJven4nGRk
69
+ zF4u4KPh288sZZWL0VZqHIoKQZTgwnr+QFDlthRCQBKLStl1KTQ9WKw8z8VxK19+
70
+ v7b/lURmBVANhZgf+cxnvwstO1goxj34B6y5eoJ9DTIwWSFGkARhdiAMrOzSAU8u
71
+ h/G1Xcp3JoVX8NNEd5LhHkJKS1idK4PXTP7uXXqOFI5NoL+Q0gNAyJYNtXe8KQ4q
72
+ 8L9O9pNaC418OCiiS/4rAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
73
+ AQH/BAQDAgEGMB0GA1UdDgQWBBRivYsKGrwW4qUaX5DjNlpcExbkETANBgkqhkiG
74
+ 9w0BAQUFAAOCAQEAqB1+wsyBShUOzkAdoFh55x9e1Od7nrnIPv6KKbcycMDv8kf3
75
+ 25D5KlgVIW+OWrMKOK7wlRUX7kvF4cENqSCn1W3VVLzCvKTbx34pRR/V8cuUD+2D
76
+ 7k1Q1331qFiulycGOl0IlqJCJRi3UPa2fuCDyHikOcbnIApK3Hk2/wGWhool5yzj
77
+ 0wUbGcyDg12o1U96bB0tO5ZFIFdYB31skviyiHJojcq4+uRVKA1DrsKoK8ZQx0xf
78
+ p6l5H/z5jmFqlBTW8EIW+tdB1NOKCRI6JPwR+NSC8UtZS2M39oyGkGyReoIKjT8K
79
+ XFfTm7TDhB9Tf65TF+mw0Rkr101KsoUT5Sm8Dw==
80
+ -----END CERTIFICATE-----
@@ -0,0 +1,30 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ Proc-Type: 4,ENCRYPTED
3
+ DEK-Info: DES-EDE3-CBC,FCB585C311CF8314
4
+
5
+ l58lb4gVU02qpt3Ejb0SktlphW/ZbZCTquYnY7vRWimBIlXQjSyx7ZJM9b+4zyW7
6
+ oQCWUkY4bM6GbdLJ3hf4j2tazY5qTZIEsxf89qro3yjfr9hIMONbfgF4JVI05LP/
7
+ vNCyOskHJSkfEnAfL8pAd7kilhwrUa2M5rbOTGoZTDGUShhIRsKx4q/HIcGAQQD5
8
+ VNl57idQz1mCQQaDsuFIhVk+A4QifG8QfjjbmbT3J+ZxqWo2UL+c0G56udcJSSSe
9
+ XgSjJfclykl0mBQwXyKCe/APntOJm31fZHJ1UCEaShHoMXLjvaCRosIbVnIakXtu
10
+ zSkB+XnQqNfYvp7gTIEUzOyvE/uXGk0h6NbYBJpOYEIzlUzXlgq5us3uMpGzzWx9
11
+ OG0IE9ePR1sRCuW176TtwgP4TwO0U/oZz8KI2vGSEcNcHNTWqc8LfswXySqEvpYG
12
+ ZigqKx/js+7DK+8z15D2oez9GoeXPsUnKNrkJ+kKgo/oDQQSJpcDyRG/fOrH/6Ke
13
+ /n74cXtLo5gMxGOezc7W845JABtgtT26RxB2fVw22OThs8Ap1ushJF9hYmdnW4iz
14
+ ubWvUd7bXcsDAzig9CEzlGRXms9VNCK+U7aU+rLmI2ipY8dCmJUMkBydFY0Rn9Es
15
+ mwGqcT+gabwIuxGRCLJyyQBQclNetrPOUUNSj4Y0KgzZBo6VodthAqb5Au5xGCk5
16
+ 9nDke11zjPCu3oDYNOVXTJCgt7Tj+xtGR7xKpdj8rRR8EEy/Yvd4ebupWLJ0zr/v
17
+ lhzBdOJ/wuzNX+zd4vw/xCVxx+W3i0hO8NWvHEAhYd3NeOacIM8vXgT6hCGuphu4
18
+ M+ggAcsIPwFy52ol50kF0uSfKAUWbaldMFalc4BYt7ZjDAbYe1tY1mefiWF+drSg
19
+ PUZ86pZOWc4s3/MCA9bfGYuFzKCQhRDChVt0pMBYfFmxXsvwIVpzgEh5MHE0/5zU
20
+ 0fiEXLzn/gkpTDwo1jlYKZ4yK6UiWnqMVCz2cTIa/4wHE2HgBV8APzF4tO5uJZu1
21
+ EiKu+qx6jS3c//E32oRmjsCbQBi/D4DNY7uAsNGXfCGvAceDp1Z6Sp5difaelNOM
22
+ Af/EsJaO8xSwLvM5Hj3Q8NC+kYT0Kr8oDCTSU4w2x/596QJdtzNB2r3YlWqjWh4D
23
+ dMy8jzmVnyAjD3tvzAf/XqMs8e3YHNEh+q1MQaXa2y7Drw6MaoIRVSmXYHwHeJzg
24
+ BNU47QOjDYwX0fJgzpq65N4aGzG3wdRR3hKXl0S9Z3CBC6xWaw4Ps2tlspFk4ekN
25
+ TODB2jOh+aQQR4npy4RtUKBwIQc2O/VqP0V4D0OdVZr01W4CfBGiiSh5rsve4XxY
26
+ KRvyz6LwHVdKKlgyVJCCMcAQv4OI4omPopvpZwBqYAkZQmQQJIh/O0o+BLb8pqOL
27
+ /ntJ8y3FF4FIWjtrd58iSOFUpmBw/rLjUNgm86cuOz4RKW8kBtYTWyBym3+DdCzF
28
+ mlOobTEN1TqDVA24qQFdFH4F0E917JY0FyWg7JpE2ekLAixBSCm800fgx7Tqy4/m
29
+ s0twidyXlnNKA3ejkbDwa1jtqkGfvsD5ELmbNyY5hZFeJsZwpLCJA8AY0hHvquYR
30
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,23 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIID2DCCAsCgAwIBAgIQGOtH8axDhLeZoyevey+LezANBgkqhkiG9w0BAQUFADCB
3
+ hTELMAkGA1UEBhMCSlAxHTAbBgNVBAoTFFN5bWFudGVjIEphcGFuLCBJbmMuMS8w
4
+ LQYDVQQLEyZGb3IgVGVzdCBQdXJwb3NlcyBPbmx5LiBObyBhc3N1cmFuY2VzLjEm
5
+ MCQGA1UEAxMdVHJpYWwgQ2xhc3MgMyBKYXBhbiBSb290IC0gRzUwHhcNMTUwMjE4
6
+ MDAwMDAwWhcNMzUwMjE3MjM1OTU5WjCBhTELMAkGA1UEBhMCSlAxHTAbBgNVBAoT
7
+ FFN5bWFudGVjIEphcGFuLCBJbmMuMS8wLQYDVQQLEyZGb3IgVGVzdCBQdXJwb3Nl
8
+ cyBPbmx5LiBObyBhc3N1cmFuY2VzLjEmMCQGA1UEAxMdVHJpYWwgQ2xhc3MgMyBK
9
+ YXBhbiBSb290IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDF
10
+ xdnFVPR3Azt7ar9rYymmrSxRYinWPrNByp8jSWhWudfgbRi0FGh848rsAgvg51c/
11
+ xilEYouj3iRFV0Tt90jWgYQuH6+HRdTz39JGQ8cCGdjo6u0gBUZZMAMJven4nGRk
12
+ zF4u4KPh288sZZWL0VZqHIoKQZTgwnr+QFDlthRCQBKLStl1KTQ9WKw8z8VxK19+
13
+ v7b/lURmBVANhZgf+cxnvwstO1goxj34B6y5eoJ9DTIwWSFGkARhdiAMrOzSAU8u
14
+ h/G1Xcp3JoVX8NNEd5LhHkJKS1idK4PXTP7uXXqOFI5NoL+Q0gNAyJYNtXe8KQ4q
15
+ 8L9O9pNaC418OCiiS/4rAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
16
+ AQH/BAQDAgEGMB0GA1UdDgQWBBRivYsKGrwW4qUaX5DjNlpcExbkETANBgkqhkiG
17
+ 9w0BAQUFAAOCAQEAqB1+wsyBShUOzkAdoFh55x9e1Od7nrnIPv6KKbcycMDv8kf3
18
+ 25D5KlgVIW+OWrMKOK7wlRUX7kvF4cENqSCn1W3VVLzCvKTbx34pRR/V8cuUD+2D
19
+ 7k1Q1331qFiulycGOl0IlqJCJRi3UPa2fuCDyHikOcbnIApK3Hk2/wGWhool5yzj
20
+ 0wUbGcyDg12o1U96bB0tO5ZFIFdYB31skviyiHJojcq4+uRVKA1DrsKoK8ZQx0xf
21
+ p6l5H/z5jmFqlBTW8EIW+tdB1NOKCRI6JPwR+NSC8UtZS2M39oyGkGyReoIKjT8K
22
+ XFfTm7TDhB9Tf65TF+mw0Rkr101KsoUT5Sm8Dw==
23
+ -----END CERTIFICATE-----
@@ -0,0 +1,31 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIFRjCCBC6gAwIBAgIQdV9MvP3+ENU3kdfSg2vm/DANBgkqhkiG9w0BAQsFADCB
3
+ hTELMAkGA1UEBhMCSlAxHTAbBgNVBAoTFFN5bWFudGVjIEphcGFuLCBJbmMuMS8w
4
+ LQYDVQQLEyZGb3IgVGVzdCBQdXJwb3NlcyBPbmx5LiBObyBhc3N1cmFuY2VzLjEm
5
+ MCQGA1UEAxMdVHJpYWwgQ2xhc3MgMyBKYXBhbiBSb290IC0gRzUwHhcNMTUwMjE4
6
+ MDAwMDAwWhcNMjUwMjE3MjM1OTU5WjCBvDELMAkGA1UEBhMCSlAxHTAbBgNVBAoT
7
+ FFN5bWFudGVjIEphcGFuLCBJbmMuMS8wLQYDVQQLEyZGb3IgVGVzdCBQdXJwb3Nl
8
+ cyBPbmx5LiBObyBhc3N1cmFuY2VzLjE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0
9
+ IGh0dHBzOi8vd3d3LnN5bWF1dGguY29tL2Nwcy90ZXN0Y2ExIDAeBgNVBAMTF1Ry
10
+ aWFsIFNTTCBKYXBhbiBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
11
+ CgKCAQEA20T0ajk8CG7rIu90Zyh4bDAo32nO6RdBN1xjFD054LbjIR9R7dqAXbLx
12
+ sYj5+V/7v5tN4ogqyHiK2CKLe3z/rtrFjeei/Xyr5NysNWuY2v/OIRSLpeKYYivr
13
+ Ax76ssHbPRdqT4OobxYfRaOEZKwM5etUD55jLI1/0lcSeNqv7Gps8tKt44T4vDx2
14
+ E8J0zT9Z102e649si0rUoGbP3flEBwvnkrmLTQDV1Rf9p3QbaAaZgsmEaXshgufJ
15
+ Bti/BpOy1Sdg4ZTCcKPb/qhSphn2LZNbBFOH/rQiu4UoWHWWMOcsJm22pARSsELI
16
+ ivNJIcXSE8PLTkLWisqRkVODaRaL+wIDAQABo4IBdzCCAXMwEgYDVR0TAQH/BAgw
17
+ BgEB/wIBADB7BgNVHSAEdDByMHAGCmCGSAGG+EUBBxUwYjAuBggrBgEFBQcCARYi
18
+ aHR0cHM6Ly93d3cuc3ltYXV0aC5jb20vY3BzL3Rlc3RjYTAwBggrBgEFBQcCAjAk
19
+ GiJodHRwczovL3d3dy5zeW1hdXRoLmNvbS9jcHMvdGVzdGNhMGUGA1UdHwReMFww
20
+ WqBYoFaGVGh0dHA6Ly9vbnNpdGVjcmwuc3ltYXV0aC5qcC9BUkwvU3ltYW50ZWNK
21
+ YXBhbkluY1RyaWFsQ2xhc3MzSmFwYW5Sb290RzUvTGF0ZXN0QVJMLmNybDAOBgNV
22
+ HQ8BAf8EBAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVByaXZhdGUzLTIw
23
+ NDgtMTc5MB0GA1UdDgQWBBTdHyFkLkXC4EA5SL7jy4SAl8MkijAfBgNVHSMEGDAW
24
+ gBRivYsKGrwW4qUaX5DjNlpcExbkETANBgkqhkiG9w0BAQsFAAOCAQEAZbKcrNvS
25
+ q/b4KNd4Y41uNEqaCQlL6Uvqs5q6b0HQbK/Hjolt3sJttqT/jtSxGIITZVPH8PRt
26
+ 6fo3aWII1eLIiCVzuQc0eVA0671pPhUHgd8mPHgUmhsxLURWgEE3lMx9dKQhKL1V
27
+ Fcp/2bQy+dLVZELQl2L3qtRCVEYubLFmoAgBG7nyiwjt+AsvG6AX2N7MLzsF+C8L
28
+ vRbWEqglqDCFAt1es1Vfb2a7zFj0/BUYDDo6eQE/BpYiYmbHtoWz6SzBNZsehMb5
29
+ OlnF9xqndWK7x2rtaNyi+Z287AzaDe0VFTUaGd1YnzKlEHphRr2nMHd/iNRZFNLy
30
+ poe4IWfm9maFow==
31
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIFRTCCBC2gAwIBAgIQVMhYFMdnctqh7wAXLx1HjzANBgkqhkiG9w0BAQsFADCBvDELMAkGA1UE
3
+ BhMCSlAxHTAbBgNVBAoTFFN5bWFudGVjIEphcGFuLCBJbmMuMS8wLQYDVQQLEyZGb3IgVGVzdCBQ
4
+ dXJwb3NlcyBPbmx5LiBObyBhc3N1cmFuY2VzLjE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0
5
+ dHBzOi8vd3d3LnN5bWF1dGguY29tL2Nwcy90ZXN0Y2ExIDAeBgNVBAMTF1RyaWFsIFNTTCBKYXBh
6
+ biBDQSAtIEcyMB4XDTE1MTEyNDAwMDAwMFoXDTE1MTIwODIzNTk1OVowgdAxCzAJBgNVBAYTAkpQ
7
+ MQ4wDAYDVQQIDAVUb2t5bzETMBEGA1UEBwwKQ2hpeW9kYS1LdTEcMBoGA1UECgwTVHJlYXN1cmUg
8
+ RGF0YSwgSy5LLjEYMBYGA1UECwwPT3BlblNvdXJjZSBUZWFtMSwwKgYDVQQLDCNodHRwczovL3d3
9
+ dy5zeW1hbnRlYy5jb20vY3BzL3Rlc3RjYTEYMBYGA1UECwwPcjQ1MDExNTExNTE4MzgyMRwwGgYD
10
+ VQQDDBN0ZXN0aW5nLmZsdWVudGQub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
11
+ pz2pcz/cGXSvEYMCXZLyLj8BXQvPRPfQIITPzCWpr+jbr5oVI2D3FqysJLedLRZHWY3wAmp/AHqS
12
+ WIHfaGUr6TmLVaKM2weFfxjKtwHboVYSHrhL5bth6fm8gMzJrB6UbFyfUXRPlZw6z/WxcMezIoHp
13
+ 6KSS8Ao9ixeql1AFKF4Yc8H6xUH0fLLNOBLP7UxIbg7xZNxqcjlULOgKcMojK2YioI98Yq9nJ5To
14
+ VopopIgtPEqXzN7W9EdrtaHelky9fsXLY3YnZ599ujEmHMMOzKbrTg7OMOyKwyhFdyERsGfNOHJ1
15
+ /WdgCZZXRlfc0s2SxEWttaJ8v9D18Va1w4cR8wIDAQABo4IBKzCCAScwCQYDVR0TBAIwADAOBgNV
16
+ HQ8BAf8EBAMCBaAwXgYDVR0fBFcwVTBToFGgT4ZNaHR0cDovL29uc2l0ZWNybC5zeW1hdXRoLmpw
17
+ L1N5bWFudGVjSmFwYW5JbmNUcmlhbFNTTEphcGFuQ0FzaGEyL0xhdGVzdENSTC5jcmwwHgYDVR0R
18
+ BBcwFYITdGVzdGluZy5mbHVlbnRkLm9yZzBKBgNVHSAEQzBBMD8GCmCGSAGG+EUBBxUwMTAvBggr
19
+ BgEFBQcCARYjaHR0cHM6Ly93d3cuc3ltYW50ZWMuY29tL2Nwcy90ZXN0Y2EwHQYDVR0lBBYwFAYI
20
+ KwYBBQUHAwEGCCsGAQUFBwMCMB8GA1UdIwQYMBaAFN0fIWQuRcLgQDlIvuPLhICXwySKMA0GCSqG
21
+ SIb3DQEBCwUAA4IBAQAU6rXvUcybWiyHfIGSlzy4MYO6HBeaF0tc2Pt0T4ByX+smXvKoVVgZbX8E
22
+ ahlZURfjSwZyXHCpMvcH17/IyW7c+HrX/jheMZ7iyYdvCQnZ2GrT8Zr3GRMcNYf8e8wnXwkBFAPj
23
+ yek5XHF5ShwLv64bOWDjAfdIAUCHEo1PpDz6JPQgJEb+SHqrxWx+O0zmELYUgSvRWKBuEC5TrxGU
24
+ HEib235vmz6/TgDUqfci7RPf16cwqVyEilzD5tLXTuMp4+tkPRjEA5d+EzH5O2Lx/ef5RTnYYMZ0
25
+ zsVBXssRtwcFKO2vStIGitRK9G9mbvzMNKuItaHcmw8GOhyXnMjTpl8u
26
+ -----END CERTIFICATE-----
27
+
@@ -0,0 +1,26 @@
1
+ <source>
2
+ type forward
3
+ </source>
4
+
5
+ <match test.**>
6
+ type secure_forward
7
+ secure yes
8
+ self_hostname client
9
+ shared_key hogeposxxx0
10
+ keepalive 30
11
+ ca_cert_path /Users/tagomoris/github/fluent-plugin-secure-forward/test/tmp/cadir/ca_cert.pem
12
+ enable_strict_verification yes
13
+ <server>
14
+ proxy_uri http://foo.foo.local:3128
15
+ host localhost
16
+ </server>
17
+ # <server>
18
+ # proxy_uri http://bar.bar.local:3128
19
+ # host localhost
20
+ # standby yes
21
+ # </server>
22
+ # <server>
23
+ # host localhost
24
+ # </server>
25
+ flush_interval 1s
26
+ </match>
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |gem|
3
3
  gem.name = "fluent-plugin-secure-forward"
4
- gem.version = "0.3.3dev2"
4
+ gem.version = "0.3.3"
5
5
  gem.authors = ["TAGOMORI Satoshi"]
6
6
  gem.email = ["tagomoris@gmail.com"]
7
7
  gem.summary = %q{Fluentd input/output plugin to forward over SSL with authentications}
@@ -17,6 +17,7 @@ Gem::Specification.new do |gem|
17
17
  gem.add_runtime_dependency "fluentd", ">= 0.10.46"
18
18
  gem.add_runtime_dependency "fluent-mixin-config-placeholders", ">= 0.3.0"
19
19
  gem.add_runtime_dependency "resolve-hostname"
20
+ gem.add_runtime_dependency "proxifier"
20
21
  gem.add_development_dependency "test-unit"
21
22
  gem.add_development_dependency "rake"
22
23
  end
@@ -21,7 +21,7 @@ module Fluent
21
21
  config_param :self_hostname, :string
22
22
  include Fluent::Mixin::ConfigPlaceholders
23
23
 
24
- config_param :shared_key, :string
24
+ config_param :shared_key, :string, secret: true
25
25
 
26
26
  config_param :bind, :string, default: '0.0.0.0'
27
27
  config_param :port, :integer, default: DEFAULT_SECURE_LISTEN_PORT
@@ -36,12 +36,12 @@ module Fluent
36
36
  # Cert signed by public CA
37
37
  config_param :cert_path, :string, default: nil
38
38
  config_param :private_key_path, :string, default: nil
39
- config_param :private_key_passphrase, :string, default: nil
39
+ config_param :private_key_passphrase, :string, default: nil, secret: true
40
40
 
41
41
  # Cert automatically generated and signed by private CA
42
42
  config_param :ca_cert_path, :string, default: nil
43
43
  config_param :ca_private_key_path, :string, default: nil
44
- config_param :ca_private_key_passphrase, :string, default: nil
44
+ config_param :ca_private_key_passphrase, :string, default: nil, secret: true
45
45
 
46
46
  # Otherwise: Cert automatically generated and signed by itself (for without any verification)
47
47
 
@@ -59,13 +59,13 @@ module Fluent
59
59
 
60
60
  config_section :user, param_name: :users do
61
61
  config_param :username, :string
62
- config_param :password, :string
62
+ config_param :password, :string, secret: true
63
63
  end
64
64
 
65
65
  config_section :client, param_name: :clients do
66
66
  config_param :host, :string, default: nil
67
67
  config_param :network, :string, default: nil
68
- config_param :shared_key, :string, default: nil
68
+ config_param :shared_key, :string, default: nil, secret: true
69
69
  config_param :users, :string, default: nil # comma separated username list
70
70
  end
71
71
  attr_reader :nodes
@@ -96,6 +96,10 @@ module Fluent
96
96
  if @cert_path
97
97
  raise Fluent::ConfigError, "private_key_path required" unless @private_key_path
98
98
  raise Fluent::ConfigError, "private_key_passphrase required" unless @private_key_passphrase
99
+ certs = Fluent::SecureForward::CertUtil.certificates_from_file(@cert_path)
100
+ if certs.size < 1
101
+ raise Fluent::ConfigError, "no valid certificates in cert_path: #{@cert_path}"
102
+ end
99
103
  else # @ca_cert_path
100
104
  raise Fluent::ConfigError, "ca_private_key_path required" unless @ca_private_key_path
101
105
  raise Fluent::ConfigError, "ca_private_key_passphrase required" unless @ca_private_key_passphrase
@@ -171,9 +175,12 @@ module Fluent
171
175
  def certificate
172
176
  return @cert, @key if @cert && @key
173
177
 
178
+ @client_ca = nil
174
179
  if @cert_path
175
180
  @key = OpenSSL::PKey::RSA.new(File.read(@private_key_path), @private_key_passphrase)
176
- @cert = OpenSSL::X509::Certificate.new(File.read(@cert_path))
181
+ certs = Fluent::SecureForward::CertUtil.certificates_from_file(@cert_path)
182
+ @cert = certs.shift
183
+ @client_ca = certs
177
184
  elsif @ca_cert_path
178
185
  opts = {
179
186
  ca_cert_path: @ca_cert_path,
@@ -220,6 +227,9 @@ module Fluent
220
227
 
221
228
  ctx.cert = cert
222
229
  ctx.key = key
230
+ if @client_ca
231
+ ctx.extra_chain_cert = @client_ca
232
+ end
223
233
 
224
234
  log.trace "start to listen", bind: @bind, port: @port
225
235
  server = TCPServer.new(@bind, @port)
@@ -20,7 +20,7 @@ module Fluent
20
20
  config_param :self_hostname, :string
21
21
  include Fluent::Mixin::ConfigPlaceholders
22
22
 
23
- config_param :shared_key, :string
23
+ config_param :shared_key, :string, secret: true
24
24
 
25
25
  config_param :keepalive, :time, default: nil # nil/0 means disable keepalive expiration
26
26
 
@@ -41,16 +41,19 @@ module Fluent
41
41
  config_param :reconnect_interval, :time, default: 5
42
42
  config_param :established_timeout, :time, default: 10
43
43
 
44
+ config_param :proxy_uri, :string, default: nil
45
+
44
46
  attr_reader :read_interval, :socket_interval
45
47
 
46
48
  config_section :server, param_name: :servers do
47
49
  config_param :host, :string
48
50
  config_param :hostlabel, :string, default: nil
49
51
  config_param :port, :integer, default: DEFAULT_SECURE_CONNECT_PORT
50
- config_param :shared_key, :string, default: nil
52
+ config_param :shared_key, :string, default: nil, secret: true
51
53
  config_param :username, :string, default: ''
52
- config_param :password, :string, default: ''
54
+ config_param :password, :string, default: '', secret: true
53
55
  config_param :standby, :bool, default: false
56
+ config_param :proxy_uri, :string, default: nil
54
57
  end
55
58
  attr_reader :nodes
56
59
 
@@ -4,6 +4,8 @@
4
4
  # require 'digest'
5
5
  # require 'resolve/hostname'
6
6
 
7
+ require 'proxifier'
8
+
7
9
  require_relative 'openssl_util'
8
10
 
9
11
  class Fluent::SecureForwardOutput::Node
@@ -27,6 +29,8 @@ class Fluent::SecureForwardOutput::Node
27
29
  @password = conf.password
28
30
  @standby = conf.standby
29
31
 
32
+ @proxy_uri = conf.proxy_uri
33
+
30
34
  @keepalive = sender.keepalive
31
35
 
32
36
  @authentication = nil
@@ -53,7 +57,7 @@ class Fluent::SecureForwardOutput::Node
53
57
  def dup
54
58
  renewed = self.class.new(
55
59
  @sender,
56
- Fluent::Config::Section.new({host: @host, port: @port, hostlabel: @hostlabel, username: @username, password: @password, shared_key: @shared_key, standby: @standby})
60
+ Fluent::Config::Section.new({host: @host, port: @port, hostlabel: @hostlabel, username: @username, password: @password, shared_key: @shared_key, standby: @standby, proxy_uri: @proxy_uri})
57
61
  )
58
62
  renewed
59
63
  end
@@ -217,8 +221,14 @@ class Fluent::SecureForwardOutput::Node
217
221
 
218
222
  addr = @sender.hostname_resolver.getaddress(@host)
219
223
  log.debug "create tcp socket to node", host: @host, address: addr, port: @port
224
+
220
225
  begin
221
- sock = TCPSocket.new(addr, @port)
226
+ if @proxy_uri.nil? then
227
+ sock = TCPSocket.new(addr, @port)
228
+ else
229
+ proxy = Proxifier::Proxy(@proxy_uri)
230
+ sock = proxy.open(addr, @port)
231
+ end
222
232
  rescue => e
223
233
  log.warn "failed to connect for secure-forward", error_class: e.class, error: e, host: @host, address: addr, port: @port
224
234
  @state = :failed
@@ -3,6 +3,14 @@ require 'openssl'
3
3
  module Fluent
4
4
  module SecureForward
5
5
  module CertUtil
6
+ def self.certificates_from_file(path)
7
+ data = File.read(path)
8
+ pattern = Regexp.compile('-+BEGIN CERTIFICATE-+\n(?:[^-]*\n)+-+END CERTIFICATE-+\n', Regexp::MULTILINE)
9
+ list = []
10
+ data.scan(pattern){|match| list << OpenSSL::X509::Certificate.new(match)}
11
+ list
12
+ end
13
+
6
14
  def self.generate_ca_pair(opts={})
7
15
  key = OpenSSL::PKey::RSA.generate(opts[:private_key_length])
8
16
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-secure-forward
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3dev2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - TAGOMORI Satoshi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-02 00:00:00.000000000 Z
11
+ date: 2015-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: proxifier
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: test-unit
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -97,11 +111,19 @@ files:
97
111
  - bin/secure-forward-ca-generate
98
112
  - example/auth_client.conf
99
113
  - example/auth_server.conf
114
+ - example/cert_c.conf
100
115
  - example/cert_client.conf
116
+ - example/cert_i.conf
101
117
  - example/cert_server.conf
118
+ - example/certs/cert-with-intermediate.pem
102
119
  - example/certs/cert.pem
120
+ - example/certs/key-for-with-intermediate.key
103
121
  - example/certs/key.pem
122
+ - example/certs/root.pem
123
+ - example/certs/testing-intermediate.pem
124
+ - example/certs/testing-server.pem
104
125
  - example/client.conf
126
+ - example/client_proxy.conf
105
127
  - example/insecure_client.conf
106
128
  - example/insecure_server.conf
107
129
  - example/server.conf
@@ -131,9 +153,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
153
  version: '0'
132
154
  required_rubygems_version: !ruby/object:Gem::Requirement
133
155
  requirements:
134
- - - ">"
156
+ - - ">="
135
157
  - !ruby/object:Gem::Version
136
- version: 1.3.1
158
+ version: '0'
137
159
  requirements: []
138
160
  rubyforge_project:
139
161
  rubygems_version: 2.4.5
@@ -145,3 +167,4 @@ test_files:
145
167
  - test/plugin/test_in_secure_forward.rb
146
168
  - test/plugin/test_input_session.rb
147
169
  - test/plugin/test_out_secure_forward.rb
170
+ has_rdoc: