fluent-plugin-secure-forward 0.3.3dev2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
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: