我有一个使用 SSL 的 Ruby on Rails 应用程序。我使用thin start --ssl
. 每次我启动服务器并访问应用程序时,都会收到一条警告说 SSL 证书未经过验证。只要我留在 Rails 中,这不是问题。但是,我的应用程序也有一个 API,我正在为它开发一个 iPhone 客户端应用程序。当我从 iphone 应用程序向本地 Rails 服务器发出请求时,我收到以下错误:
2013-03-24 12:30:09.680 OAuth2Test[44541:c07] 错误:错误域=NSURLErrorDomain 代码=-1202“此服务器的证书无效。您可能正在连接到伪装成“oauth. lvh.me”,这可能会使您的机密信息面临风险。” UserInfo=0x8832730 {NSErrorFailingURLStringKey= https://oauth.lvh.me:3000/oauth/authorize?client_id=23b8921e8db833a33ac7a058b93183a1496f56a6eea4f6c597291106f80a37d0&redirect_uri=https%3A%2F%2Fcatapultcentral.com%2FiOSClientCallback&response_type=code , NSLocalizedRecoverySuggestion=Would you like to connect to the server无论如何?,NSErrorFailingURLKey=https://oauth.lvh.me:3000/oauth/authorize?client_id=23b8921e8db833a33ac7a058b93183a1496f56a6eea4f6c597291106f80a37d0&redirect_uri=https%3A%2F%2Fcatapultcentral.com%2FiOSClientInvalidCallback&response_type=该服务器为该服务器,NS无效。您可能正在连接到伪装成“oauth.lvh.me”的服务器,这可能会使您的机密信息面临风险。NSUnderlyingError=0x8944cd0 "此服务器的证书无效。您可能正在连接到冒充“oauth.lvh.me”,这可能会使您的机密信息面临风险。", NSURLErrorFailingURLPeerTrustErrorKey=}
在我看来,这个错误的关键部分是:"The certificate for this server is invalid. You might be connecting to a server that is pretending to be “oauth.lvh.me” which could put your confidential information at risk."
. 顺便说一句,我在 iPhone Simulator 中测试了我的 iPhone 应用程序。
所以,如果我是正确的,这个问题有三个解决方案:
- 将我的 API 部署到登台服务器并针对它开发 iPhone 应用程序。目前,所有与 API 相关的代码都没有部署,我宁愿在它处于稳定状态之前不部署它。所以这不是一个选择。
- 以某种方式开发 iPhone 应用程序,使其不验证 SSL 证书。我不喜欢这种方法,我什至不知道该怎么做......
- 获取本地验证的SSL 证书(伪造验证状态或其他东西)。我不知道该怎么做,但这似乎是最好的选择。
我尝试按照有关如何生成自我认证的 SSL 证书的教程thin start --ssl --ssl-verify --ssl-key-file server.key --ssl-cert-file server.crt
进行操作,然后使用它运行 Rails 服务器,但这没有用(创建的 SSL 证书仍未验证)。
那么我该如何解决我的问题呢?