正如标题所说,谷歌没有提供任何有用的信息。
如何为Sinatra应用设置和配置HTTPS / SSL?
如何创建HTTPS路由?
我以前从来没有为我的应用程序使用HTTPS,也没有调整Rack /的经验,所以我很感谢详细解答。
答案 0 :(得分:24)
这似乎是为我做的:
require 'sinatra/base'
require 'webrick'
require 'webrick/https'
require 'openssl'
CERT_PATH = '/opt/myCA/server/'
webrick_options = {
:Port => 8443,
:Logger => WEBrick::Log::new($stderr, WEBrick::Log::DEBUG),
:DocumentRoot => "/ruby/htdocs",
:SSLEnable => true,
:SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE,
:SSLCertificate => OpenSSL::X509::Certificate.new( File.open(File.join(CERT_PATH, "my-server.crt")).read),
:SSLPrivateKey => OpenSSL::PKey::RSA.new( File.open(File.join(CERT_PATH, "my-server.key")).read),
:SSLCertName => [ [ "CN",WEBrick::Utils::getservername ] ]
}
class MyServer < Sinatra::Base
post '/' do
"Hellow, world!"
end
end
Rack::Handler::WEBrick.run MyServer, webrick_options
[帽子提示http://www.networkworld.com/columnists/2007/090507-dr-internet.html]
答案 1 :(得分:16)
我认为使用rack-ssl是最佳选择。
然后你就做了:
class Application < Sinatra::Base
use Rack::SSL
get '/' do
'SSL FTW!'
end
end
并且所有http://
次调用都会重定向到https://
答案 2 :(得分:15)
我猜你需要设置你的Web服务器,而不是Sinatra,才能使用SSL。在Sinatra中,您可以使用request.secure?
方法检查SSL使用情况。
SSL + Nginx:the first article,the second one。
答案 3 :(得分:10)
我修改了richard_bw的代码,以便能够使用Ctrl + C关闭或重新启动它:
require 'sinatra/base'
require 'webrick'
require 'webrick/https'
require 'openssl'
class MyServer < Sinatra::Base
post '/' do
"Hello, world!\n"
end
end
CERT_PATH = '/opt/myCA/server/'
webrick_options = {
:Port => 8443,
:Logger => WEBrick::Log::new($stderr, WEBrick::Log::DEBUG),
:DocumentRoot => "/ruby/htdocs",
:SSLEnable => true,
:SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE,
:SSLCertificate => OpenSSL::X509::Certificate.new( File.open(File.join(CERT_PATH, "server.crt")).read),
:SSLPrivateKey => OpenSSL::PKey::RSA.new( File.open(File.join(CERT_PATH, "server.key")).read),
:SSLCertName => [ [ "CN",WEBrick::Utils::getservername ] ],
:app => MyServer
}
Rack::Server.start webrick_options
答案 4 :(得分:0)