我有一个使用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 =您是否还要连接到服务器?,NSErrorFailingURLKey = https://oauth.lvh.me:3000/oauth/authorize?client_id=23b8921e8db833a33ac7a058b93183a1496f56a6eea4f6c597291106f80a37d0&redirect_uri=https%3A%2F%2Fcatapultcentral.com%2FiOSClientCallback&response_type=code,NSLocalizedDescription =此服务器的证书无效。您可能正在连接到假装是“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模拟器中测试我的iPhone应用程序。
所以,如果我是正确的,这个问题有三种解决方案:
我尝试按照a tutorial关于如何生成自我认证的SSL证书,然后使用thin start --ssl --ssl-verify --ssl-key-file server.key --ssl-cert-file server.crt
运行Rails服务器但不起作用(创建的SSL证书仍未验证)。
那我该如何解决我的问题?
答案 0 :(得分:2)
您应该创建一个根CA并使用它来创建SSL证书,并将该根CA添加到您的iPhone中。