更新 2015 年 5 月 7 日上午 11:26 IST
在carrierwave初始化器中,如下所示,
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => Settings.carrier_wave.amazon_s3.access_key, # required
:aws_secret_access_key => Settings.carrier_wave.amazon_s3.secret_key, # required
:region => 'external-1' # optional, defaults to 'us-east-1'
}
config.fog_directory = Settings.carrier_wave.amazon_s3.bucket # required
#config.fog_host = 'http://aws.amazon.com/s3/' # optional, defaults to nil
config.fog_public = false # optional, defaults to true
config.fog_authenticated_url_expiration = 600
config.fog_attributes = {ssl_version: :TLSv1_2} #{'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
end
这对我有用,请查看 wireshark 跟踪日志。
1577 22.611358000 192.168.0.113 8.8.8.8 DNS 87 Standard query 0xffd8 A s3-external-1.amazonaws.com
1578 22.611398000 192.168.0.113 8.8.8.8 DNS 87 Standard query 0xbf2f AAAA s3-external-1.amazonaws.com
1580 22.731084000 8.8.8.8 192.168.0.113 DNS 103 Standard query response 0xffd8 A 54.231.1.234
1586 22.849595000 54.231.10.34 192.168.0.113 TLSv1.2 107 Encrypted Alert
1594 23.012866000 192.168.0.113 54.231.1.234 TLSv1.2 347 Client Hello
1607 23.310950000 192.168.0.113 54.231.1.234 TLSv1.2 204 Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message
1608 23.578966000 54.231.1.234 192.168.0.113 TLSv1.2 129 Change Cipher Spec, Encrypted Handshake Message
1609 23.579480000 192.168.0.113 54.231.1.234 TLSv1.2 427 Application Data
1610 23.868725000 54.231.1.234 192.168.0.113 TLSv1.2 299 Application Data
2015 年 5 月 6 日更新,美国东部标准时间下午 6 点至 53 点
好的,更新 Excon gem 后,我们可以看到我们的服务器和 S3 服务器之间的TLSv1.2 协议。
bundle update excon
Wireshark 跟踪日志语句,
29 1.989230000 192.168.0.115 54.231.32.0 SSL 336 Client Hello
34 2.215461000 54.231.32.0 192.168.0.115 TLSv1.2 1494 Server Hello
40 2.219301000 54.231.32.0 192.168.0.115 TLSv1.2 471 Certificate
42 2.222127000 192.168.0.115 54.231.32.0 TLSv1.2 204 Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message
更新时间:2015 年 5 月 6 日,美国东部标准时间下午 4 点至 29 点
更新hosts文件后,wireshark跟踪日志如下。
14 2.012094000 192.168.0.115 54.231.32.0 SSLv3 192 Client Hello
17 2.242423000 54.231.32.0 192.168.0.115 SSLv3 61 Alert (Level: Fatal, Description: Handshake Failure)
当我从 S3 上的本地开发 Rails 上传文件时,请参阅上面的 wireshark 请求捕获。如图所示,亚马逊服务器在初始握手时使用 SSLv3,因此我的 Rails 服务器使用 SSLv3 发送所有未来的请求。
现在,问题是,如何更改存储桶设置,使其仅使用 TLS 接受/启动进程?我已经检查了亚马逊的设置,没有类似的。
我已经将我的 nginx 更改为使用 TLS,但我认为这不是必需的,因为 Rails 将使用上面评论中提到的 Excon 在后台与 S3 对话。
所以,请建议在 5 月 20 日之前进行测试的最佳方法是什么,以确保它不会在那一天中断。
任何帮助都会很棒。
仅供参考 - 我的存储桶名称类似于 xyz.abc.com,所以名称中没有 -。