- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想使用 SSL/HTTPS 在本地开发我的 Ruby on Rails 应用程序,但我在尝试设置服务器以使用 SSL 时遇到了问题。以下是我到目前为止已经尝试过的事情:
rails 服务器 [选项]
rails server
命令没有 ssl 选项(rails server --help
):
Usage: rails server [mongrel, thin, etc] [options]
-p, --port=port Runs Rails on the specified port.
Default: 3000
-b, --binding=ip Binds Rails to the specified ip.
Default: 0.0.0.0
-c, --config=file Use custom rackup configuration file
-d, --daemon Make server run as a Daemon.
-u, --debugger Enable the debugger
-e, --environment=name Specifies the environment to run this server under
(test/development/production).
Default: development
-P, --pid=pid Specifies the PID file.
Default: tmp/pids/server.pid
-h, --help Show this help message.
跟随 WEBrick documentation for HTTPS ,我制作了以下作为 ruby server.rb
运行的 Ruby 脚本:
require 'webrick'
include WEBrick
root = File.expand_path './public'
cert_name = [
%w[CN localhost],
]
server = HTTPServer.new(
:BindAddress => '127.0.0.1',
:Port => '4430',
:DocumentRoot => root,
:SSLEnable => true,
:SSLCertName => cert_name # LOOK! SSLCertName IS SET!
)
# Shutdown gracefully on signal interrupt CTRL-C
# http://www.ruby-doc.org/core-2.1.1/Kernel.html#method-i-trap
trap('INT') { server.shutdown }
server.start
根据我上面链接的文档:
This will start the server with a self-generated self-signed certificate.
并根据the documentation for WEBrick::Config ,
WEBrick can automatically create a self-signed certificate if :SSLCertName is set.
当我启动服务器时,我得到以下输出:
INFO WEBrick 1.3.1
INFO ruby 2.1.1 (2014-02-24) [x86_64-darwin13.0]
INFO WEBrick::HTTPServer#start: pid=26059 port=4430
但是,当我尝试访问 https://localhost:4430/robots.txt
时,我在 Chrome 33.0.1750.117 中收到以下错误:
当我在 Firefox 27.0.1 中尝试相同的 url 时出现以下错误:
我查找了 ssl_error_rx_record_too_long错误,看起来它可能是由一些不同的事情引起的。也许 WEBrick 仍在端口 80 上监听 HTTP 请求,但考虑到我明确将其设置为在端口 4430 上启用 SSL,这似乎很奇怪。
此外,这是我从 Chrome 请求 https://localhost:4430/robots.txt
时来自 WEBrick 的访问日志内容,但我不知道其中的任何含义(它看起来像是用十六进制或其他方式编码的):
ERROR bad Request-Line `\x16\x03\x01\x02\x00\x01\x00\x01ü\x03\x03S\x15ußð'¦\x14·áÚOá,j\x7FÅ=üüNn#\x02ëý\x0Fø‚\x00\x00(À+À/\x00žÌ\x14Ì\x13\x00œÀ'.
localhost - - [04/Mar/2014:01:42:39 EST] "\x16\x03\x01\x02\x00\x01\x00\x01ü\x03\x03S\x15ußð'¦\x14·áÚOá,j\x7FÅ=üüNn#\x02ëý\x0Fø‚\x00\x00(À+À/\x00žÌ\x14Ì\x13\x00œÀ" 400 417
- ->
ERROR bad Request-Line `\x16\x03\x01\x02\x00\x01\x00\x01ü\x03\x02S\x15ußj\x05ç©!€¿'ÄÃåë!t…ß\x06pDÒÒ4?”»7\x19\x00\x00\x1EV\x00À'.
localhost - - [04/Mar/2014:01:42:39 EST] "\x16\x03\x01\x02\x00\x01\x00\x01ü\x03\x02S\x15ußj\x05ç©!€¿'ÄÃåë!t…ß\x06pDÒÒ4?”»7\x19\x00\x00\x1EV\x00À" 400 398
- ->
ERROR bad Request-Line `\x16\x03\x01\x02\x00\x01\x00\x01ü\x03\x01S\x15ußñom¾u<n¨ý9yö“¤Øcƒ{½wh)M@š1;\x00\x00\x1EV\x00À'.
localhost - - [04/Mar/2014:01:42:39 EST] "\x16\x03\x01\x02\x00\x01\x00\x01ü\x03\x01S\x15ußñom¾u<n¨ý9yö“¤Øcƒ{½wh)M@š1;\x00\x00\x1EV\x00À" 400 392
- ->
ERROR bad URI `\x04ËB¿É\\ ˆ2ðiwñ·*\x02\x06^´\x00@v\x00\x00\x14\x00ÿV\x00\x009\x005\x003\x002\x00\x05\x00\x04\x00/\x00'.
localhost - - [04/Mar/2014:01:42:39 EST] "\x16\x03\x00\x00?\x01\x00\x00;\x03\x00S\x15uß…N®ˆ\r\x04ËB¿É\\ ˆ2ðiwñ·*\x02\x06^´\x00@v\x00\x00\x14\x00ÿV\x00\x009\x005\x003\x002\x00\x05\x00\x04\x00/\x00" 400 389
- -> \x04ËB¿É\\ ˆ2ðiwñ·*\x02\x06^´\x00@v\x00\x00\x14\x00ÿV\x00\x009\x005\x003\x002\x00\x05\x00\x04\x00/\x00
此外,我检查了 Ruby source code for the SSL module ,但我没有看到任何明显的原因说明这可能不起作用:
def setup_ssl_context(config) # :nodoc:
unless config[:SSLCertificate]
cn = config[:SSLCertName]
comment = config[:SSLCertComment]
cert, key = Utils::create_self_signed_cert(1024, cn, comment) # LOOK HERE!
config[:SSLCertificate] = cert
config[:SSLPrivateKey] = key
end
# etc...
end
# Higher up in the file...
def create_self_signed_cert(bits, cn, comment)
# etc ...
cert = OpenSSL::X509::Certificate.new
cert.version = 2
cert.serial = 1
name = OpenSSL::X509::Name.new(cn)
cert.subject = name
cert.issuer = name
# etc ...
end
以下是我用于开发的以下内容:
这就是我目前所处的位置,我不确定如何继续。我知道我可以将我自己的自签名证书文件(使用 OpenSSL 之类的东西生成)传递给 WEBrick,但是文档说 WEBrick 可以自动生成它自己的证书文件,我真的很想让它发挥作用。
我也知道我可以使用不同的网络服务器,比如 Thin 及其 --ssl
选项,但我还是想使用 WEBrick,因为它是“out-of-the- box"的 Rails 网络服务器,我希望能够轻松快速地设置开发 SSL 网络服务器,而无需下载额外的 gem 和类似的东西。
我也知道 this solution存在,但同样,我对让 WEBrick 自动生成自己的证书很感兴趣(此外,该解决方案对于我正在尝试做的事情来说似乎有点过于复杂)。
那么有没有人知道哪里可能出了问题?
最佳答案
好吧,我知道出了什么问题,我应该更加注意 the instructions for HTTPS in WEBrick ,这是示例中的确切代码:
require 'webrick'
require 'webrick/https' # SEE THIS?
cert_name = [
%w[CN localhost],
]
server = WEBrick::HTTPServer.new(:Port => 8000,
:SSLEnable => true,
:SSLCertName => cert_name)
看到那行说 require 'webrick/https'
了吗?我的原始配置中没有。 我认为我不需要它。
添加后,我的脚本开始通过 HTTPS 提供服务,我终于可以连接到 https://localhost:4430/robots.txt
。 <脸掌>
关于ruby-on-rails - 配置 WEBrick 以使用自动生成的自签名 SSL/HTTPS 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22165854/
我是 Ruby 和 Rails 新手,第一次建立项目。每次我尝试启动 WEBrick 服务器时,它都会启动然后关闭。任何帮助,将不胜感激。我似乎需要提供密码,但我不知道该怎么做。 bkuethen$
尝试在这里学习 Ruby on Rails 并遵循视频教程,但似乎无法运行环境。我现在已经使用rails new project_name 创建了一个项目,但是当我去运行服务器rails 服务器时,我
WEBrick 实例方法 mount_proc 做了什么(用简单的英语)? 文档说: mount_proc(dir, proc=nil, &block) Mounts proc or block on
首先我要说的是,我不知道自己在做什么。 好吧,既然这样,我的问题是:我正在运行 Grunt 的网络服务器来提供前端文件,并且正在运行 webrick 来提供数据 api。 Grunt 使用 grunt
首先让我说我不知道自己在做什么。 好吧,不打扰了,我的问题是:我正在运行 Grunt 的网络服务器来提供前端文件,我正在为数据 api 运行 webrick。 Grunt 使用 grunt-con
您能推荐一个修复方法吗? 我根据其他 SE 问题尝试过的补救措施: 运行捆绑安装 运行 gem 清理 运行 bundle exec rails server 运行 sudo ln -s/usr/loc
我像这样启动一个 webrick 服务器: dell@dev:/var/www/ruby$ ruby -run -httpd. -p 5000 并将此代码放入abc.rb: require 'web
我有一个在不同硬件上运行的网络应用程序,其中大部分由智能电视和机顶盒组成。 我的网络应用程序包含一个 ruby 脚本来设置应用程序以进行本地调试。此脚本构建我的应用程序,监听文件更改,并使用简单的
我之前运行的是 Linux Mint 13,现在刚切换到 Fedora 17。既然我已经切换了,我就无法再阻止 Webrick。我使用 Jetbrains Rubymine,并且启动服务器工作正常,但
我有一个非常基本的 webrick 服务器,用于运行嵌入式设备的管理页面。我们刚刚向设备添加了基本身份验证并且效果很好,但是您会像这样返回通用的“未经授权”消息: Unauthorized
我有以下代码,其中 fork 了一个 WEBrick 实例,我想等到 webrick 启动,然后再继续其余代码: require 'webrick' pid = fork do server =
如何禁止将来自 webrick 的消息回显到终端?对于出现在开头的 INFO 消息,我可以通过设置 Logger 参数来禁用它: s = WEBrick::HTTPServer.new( Port
我正在运行一个简单的 WEBrick 服务器来调试 POST 数据。我想将 POST 数据输出到日志。 我的代码是: server.mount_proc '/' do |req, res| r
就生产环境而言,使用 Phusion Passenger 或仅使用 WEBrick(例如 rails s)有什么区别? 我知道 Phusion Passenger 在 Apache 或 Nginx 上
我想在我做的时候设置默认端口 rails s 到 3010,而不必说: rails s -p 3010 ...每次。有任何想法吗? 最佳答案 您可以覆盖 Port通过将以下代码添加到 config/b
我目前有: $ rails s => Booting WEBrick => Rails 3.0.9 application starting in development on http://0.0.
如何配置 Aptana 以在 Ruby On Rails 项目上启动 webrick 服务器? 我使用选项“提升到项目”来使用 aptana 打开一个现有的 Rails 项目。我不知道如何在 Apta
我正在使用 ~/.rdebugrc 的内容运行 WEBrick文件正在 set autolist set autoeval set autoreload autolist 和 autoeval 默认开
有没有一种方法可以不冗长地启动 WEBrick 服务器。我觉得它记录了太多信息。例如: rails s --verbose=false 最佳答案 您可以在 Rails 配置中更改日志级别。 confi
目前,如果我更改lib /和app / helpers /目录中的文件,则必须重新启动服务器。有没有一种方法可以配置Rails或Webrick,以便它也可以热交换那些目录中的文件? 最佳答案 在您的c
我是一名优秀的程序员,十分优秀!