将private_pub与SSL配合使用

时间:2013-12-09 17:09:13

标签: ssl ruby-on-rails-4 faye private-pub

我已根据https://github.com/ryanb/private_pub#serving-faye-over-https-with-thin设置了包含SSL的私人酒吧,并添加了daemonize: true(已测试和未经过测试)。

我可以浏览https://mydomain.com:4443/faye.js并加载。

页面上没有错误。

然而,实际上没有任何工作,即没有实时事件触发。在控制台中尝试PrivatePub.publish_to时,我得到了:

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

当我运行瘦服务器un-daemonized时,我可以看到它在尝试发布时返回<SSL_incomp>

服务器上的SSL工作正常,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

我设法通过将ca-bundle的内容附加到slim config中指定的crt文件来解决这个问题

答案 1 :(得分:0)

请找到解决此问题的正确方法。

仅使用yourdomain.crt文件时,private_pub在与Rails服务器进行握手时将无法工作。

因此,您的SSL证书提供商将为您提供middle.crt或CAbundle文件。

只要做 如果您有CA提供的ca-bundle文件

*cat yourdomain.crt whatever.ca-bundle > yourdomainfinal.crt*

如果您具有中级证书

*cat yourdomain.crt intermediate.crt > yourdomainfinal.crt*

然后在运行服务器时使用yourdomainfinal.crt和私钥yourdomain.key指向ssl verify。

请找到瘦服务器的块

---
chdir: "/home/your/project/path"
environment: "your environment"
timeout: 30
log: "/home/your/project/path/log/thin.log"
pid: /home/your/project/path/tmp/pids/thin.pid
max_conns: 1024
require: []

max_persistent_conns: 1000
wait: 30
threadpool_size: 20
servers: 1
threaded: true
socket: /tmp/thin.sock

ssl: true
ssl_key_file: /home/your/project/path/ssl/yourdomain.key
ssl_cert_file: /home/your/project/path/ssl/yourdomainfinal.crt

对于私人酒吧

要通过ssl使用私有发布,请在private_pub_thin.yml中使用以下配置

---
port: 4443
ssl: true
ssl_key_file: /path/to/yourdomain.key
ssl_cert_file: /path/to/yourdomainfinal.crt
environment: "your environment"
rackup: private_pub.ru

然后使用以下命令运行服务器

*thin -C config/private_pub_thin.yml start*

如果您正在使用捆绑器,请不要忘记使用

*RAILS_ENV="your environment" bundle exec thin -C config/private_pub_thin.yml start*

上面的命令在使用捆绑程序时很重要,如果不这样做,则您的私有发布会启动,并且在运行服务器时不会出现任何问题,但是它不会发布消息。这就是我观察到的。

请注意,请使用**sudo ufw status**

检查天气,您的服务器的防火墙设置中是否允许使用端口4443

就是这样!如果您按照上述所有指定步骤进行操作,则应该让private_pub用于生产或通过SSL进行操作。