- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 Ruby on Rails 3,我想在 localhost 上建立 HTTPS 连接。
我正在使用:
我的 Ruby on Rails 安装使用 Typhoeus gem (可以使用 Ruby net\http 库,但结果不会改变)通过 HTTPS 发出 HTTP 请求。
我创建了自签名的 ca.key、pjtname.crt 和 pjtname.key 作为 detailed on the Apple website .
注意:按照 Apple 网站的说明,运行 openssl req -new -key server.key -out server.csr
命令(参见链接)这点
Common Name (eg, YOUR name) []: (this is the important one)
我输入了 *pjtname.com
以便该站点的所有子域都有效。
在我的 Apache httpd.conf
中,我有两个这样配置的虚拟主机:
# Secure (SSL/TLS) connections
#Include /private/etc/apache2/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
# starting without SSL on platforms with no /dev/random equivalent
# but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
Include /private/etc/apache2/other/*.conf
# Passenger configuration
LoadModule passenger_module /Users/<my_user_name>/.rvm/gems/ruby-1.9.2-p136/gems/passenger-3.0.2/ext/apache2/mod_passenger.so
PassengerRoot /Users/<my_user_name>/.rvm/gems/ruby-1.9.2-p136/gems/passenger-3.0.2
PassengerRuby /Users/<my_user_name>/.rvm/wrappers/ruby-1.9.2-p136/ruby
# Go ahead and accept connections for these vhosts
# from non-SNI clients
SSLStrictSNIVHostCheck off
# Ensure that Apache listens on port 443
Listen 443
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80
NameVirtualHost *:443
#
# PJTNAME.COM and subdomains SETTING
#
<VirtualHost *:443>
# Because this virtual host is defined first, it will
# be used as the default if the hostname is not received
# in the SSL handshake, e.g. if the browser doesn't support
# SNI.
ServerName pjtname.com:443
DocumentRoot "/Users/<my_user_name>/Sites/pjtname.com/pjtname.com/public"
ServerAdmin you@example.com
ErrorLog "/private/var/log/apache2/error_log"
TransferLog "/private/var/log/apache2/access_log"
RackEnv development
<Directory "/Users/<my_user_name>/Sites/pjtname.com/pjtname.com/public">
Order allow,deny
Allow from all
</Directory>
# SSL Configuration
SSLEngine on
# Self Signed certificates
# Server Certificate
SSLCertificateFile /private/etc/apache2/ssl/wildcard.certificate/pjtname.crt
# Server Private Key
SSLCertificateKeyFile /private/etc/apache2/ssl/wildcard.certificate/pjtname.key
# Server Intermediate Bundle
SSLCertificateChainFile /private/etc/apache2/ssl/wildcard.certificate/ca.crt
</VirtualHost>
# HTTP Setting
<VirtualHost *:80>
ServerName pjtname.com
DocumentRoot "/Users/<my_user_name>/Sites/pjtname.com/pjtname.com/public"
RackEnv development
<Directory "/Users/<my_user_name>/Sites/pjtname.com/pjtname.com/public">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName users.pjtname.com:443
DocumentRoot "/Users/<my_user_name>/Sites/pjtname.com/users.pjtname.com/public"
ServerAdmin you@example.com
ErrorLog "/private/var/log/apache2/error_log"
TransferLog "/private/var/log/apache2/access_log"
RackEnv development
<Directory "/Users/<my_user_name>/Sites/pjtname.com/users.pjtname.com/public">
Order allow,deny
Allow from all
</Directory>
# SSL Configuration
SSLEngine on
# Self Signed certificates
# Server Certificate
SSLCertificateFile /private/etc/apache2/ssl/wildcard.certificate/pjtname.crt
# Server Private Key
SSLCertificateKeyFile /private/etc/apache2/ssl/wildcard.certificate/pjtname.key
# Server Intermediate Bundle
SSLCertificateChainFile /private/etc/apache2/ssl/wildcard.certificate/ca.crt
</VirtualHost>
# HTTP Setting
<VirtualHost *:80>
ServerName users.pjtname.com
DocumentRoot "/Users/<my_user_name>/Sites/pjtname.com/users.pjtname.com/public"
RackEnv development
<Directory "/Users/<my_user_name>/Sites/pjtname.com/users.pjtname.com/public">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
在 host
文件中我有:
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
# PJTNAME.COM SETTING
127.0.0.1 pjtname.com
127.0.0.1 users.pjtname.com
一切似乎都正常工作,因为我已经设置了一切(我认为是正确的):
http.conf
文件中设置了基本命名的虚拟主机,监听端口 :433
和 :80
完成所有这些工作后,当我使用 Typhoeus 从 pjtname.com
RoR 应用程序发出请求时(我也可以使用 Ruby Net::Http 库,结果不会改变):
# Typhoeus request
Typhoeus::Request.get("https://users.pjtname.com/")
我收到类似关于证书的警告:
--- &id001 !ruby/object:Typhoeus::Response
app_connect_time: 0.0
body: ""
code: 0
connect_time: 0.000625
# Here is the warning
curl_error_message: Peer certificate cannot be authenticated with known CA certificates
curl_return_code: 60
effective_url: https://users.pjtname.com/
headers: ""
http_version:
mock: false
name_lookup_time: 0.000513
pretransfer_time: 0.0
request: !ruby/object:Typhoeus::Request
after_complete:
auth_method:
body:
...
所有这些都意味着出了问题。那么,我必须做什么才能避免“无法使用已知 CA 证书验证对等证书”警告并使 HTTPS 请求正常工作?哪里是错误\错误(我认为在 Apache 配置中,但在哪里?!)?
附言:如果您需要更多信息,请告诉我。
最佳答案
我认为你的 Apache 配置没问题,只是因为你使用的是自签名证书,你需要在客户端指定你信任证书颁发机构。
看起来 Typhoeus 使用 curl,它有自己的证书存储,独立于 OS X 的钥匙串(keychain)(您的浏览器将使用它)
在我的盒子上,它位于/opt/local/share/curl/curl-ca-bundle.crt,并且只是一个串联的认证机构列表。要消除警告,您应该能够将您创建的 CA 添加到该文件的末尾:
cat /path/to/ca.crt >> /path/to/curl-ca-bundle.crt
(或者您可以手动编辑它以添加一些关于该证书的评论)
但是,在下一次 curl 更新时,您很可能会丢失这些更改,因此让 curl 简单地不验证对等方的证书可能会更好。 (在您的应用程序中为此设置不同的产品/开发设置可能会很好)。我从未使用过 Typhoeus,但看起来您可以指定以下内容:
:disable_ssl_peer_verification => true
当你打电话时:
Typhoeus::Request.get("https://mail.google.com/mail", :disable_ssl_peer_verification => true).
Curl 有一个 verify_peer 和一个 verify_host 设置。如果我没记错的话,verify_peer 检查证书是否由受信任的机构签署,verify_host 检查证书是否颁发给您正在连接的主机。
自述文件中有一些关于使用自签名证书的信息:https://github.com/dbalatero/typhoeus
关于ruby-on-rails - 在本地主机中使用 Apache\Phusion Passenger 为虚拟主机设置 SSL 证书时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5138989/
我在我的 Ubuntu 10.04 机器上启动和运行乘客时遇到问题(参见 https://stackoverflow.com/questions/9243272/passenger-ruby-on-r
好的,我正在独立运行乘客,犯了一个愚蠢的错误,现在我需要帮助修复。 因此,一个测试应用程序目录在特定端口上运行独立的 passenger,我删除了该目录,以便我可以提取一个新的应用程序来代替它(并使用
我在某处读过这篇文章: “对于一个普通的 Apache 服务器,如果你运行许多子进程并不重要——每个进程大约 1 MB(大部分是共享的),所以它们不会占用大量 RAM。情况不同mod_perl,其中进
Phusion Passenger 的 Apache 模块安装在哪里?我想调整“Configuring Phusion Passenger”中的一些配置值。 我不知道这个配置文件在哪里。我已经按照 N
我在我的 Linode 服务器上使用 Apache + Passenger,使用 Postgresql-9.4 数据库。每隔一段时间,我就会收到以下错误,但它是不可预测的,并且在几分钟后没有采取任何措
我正在使用 nginx 和 Phusion Passenger 来引导加载 ruby on rails 应用程序,如果我像这样运行应用程序 rails s -e production 它确实正确连
我有一个使用 Phusion passenger + Apache 网络服务器部署的 Ruby on Rails 应用程序。每个请求是否都在由 Phusion Passenger 生成的自己的线程中运
我遇到了一个问题,无论我尝试什么,所有乘客实例都会在空闲期(5 分钟,但有时更长)后被销毁。我已阅读 Stack Overflow 上的乘客文档和相关问题/答案。 我的全局配置如下所示: Passen
就生产环境而言,使用 Phusion Passenger 或仅使用 WEBrick(例如 rails s)有什么区别? 我知道 Phusion Passenger 在 Apache 或 Nginx 上
我让 Phusion Passenger 在我的本地机器上运行我的 Ruby on Rails 应用程序,但我希望能够完全终止该进程并在同一端口上运行不同的(非 Apache)服务。不幸的是,当我杀死
rails@george:/srv/fsg_distro$ sudo passenger-status *** Phusion Passenger: no passenger_native_suppo
有没有办法限制 Phusion 乘客在提供应用程序时使用的内存量? 在我获得大量流量后,我的主机过来并终止了该进程,因此我最终提供了空白页面。有什么我可以说的“嘿,不要使用超过 100Mb 的空间,并
我是一名经验丰富的 LAMP 开发人员,即将进入 Rails。我有一个非常愚蠢的问题要问:Phusion Passenger 到底是做什么的? 我读过很多文档,我用 Google 搜索过,我读过 Wi
有没有人对修复 Passenger 在共享服务器上缓慢的初始加载有任何建议?我通常与 engineyard 和他们可爱的 gem 一起工作,这使得部署更加容易。我想知道是否有人对如何加快 Passen
我试过教程 Quickstart: Meteor + Phusion Passenger在 Ubuntu 18.04 和 16.04 以及 Centos 7 上。在所有情况下,我都会遇到与以下 Ubu
我在 linode 上使用 Ubuntu 10.04,并且安装了 apache2 和 Rails 3.2.2。我的应用程序在 example.com:3000 上运行良好 我已按照说明在此处安装 Ph
我们正在为我们的 rails 3.0x 应用运行带有 Nginx + Phusion Passenger 的 ubuntu 服务器。 我在测试机器上的/etc/environment 中设置了一个环境
我正在尝试使用 Phusion Passenger 运行简单的 RoR 应用程序。在转到本地主机的那一刻,我看到了主题的错误。事实上,我没有任何待处理的迁移: Status Migrat
As described here ,我检测到我已被 Phusion Passenger fork ,并恢复一个后台线程,该线程正在聚合一些数据,这些数据最终将在一定时间后打包并发送到远程服务器。但有
我不知道如何单独停止 phusion passenger。我有 2 个实例,一个在 8000 端口运行,另一个在 8001 端口运行。任何人都可以告诉我如何停止每个代理上的乘客。因为我只需要一个 80
我是一名优秀的程序员,十分优秀!